From: Kefu Chai Date: Mon, 7 Nov 2016 05:59:45 +0000 (+0800) Subject: os/filestore: use readdir() as readdir_r() is deprecated X-Git-Tag: v11.1.0~314^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=29b2466a1108172d78cf7d68814ee4d2d9507acb;p=ceph.git os/filestore: use readdir() as readdir_r() is deprecated see https://lwn.net/Articles/696469/, readdir_r() is deprecated by glibc since 2.24. so let's use readdir() instead. Signed-off-by: Kefu Chai --- diff --git a/src/os/filestore/BtrfsFileStoreBackend.cc b/src/os/filestore/BtrfsFileStoreBackend.cc index 97421c5be19b..0d52f1121abf 100644 --- a/src/os/filestore/BtrfsFileStoreBackend.cc +++ b/src/os/filestore/BtrfsFileStoreBackend.cc @@ -320,12 +320,8 @@ int BtrfsFileStoreBackend::list_checkpoints(list& ls) list snaps; char path[PATH_MAX]; - char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1]; struct dirent *de; - while (::readdir_r(dir, (struct dirent *)&buf, &de) == 0) { - if (!de) - break; - + while ((de = ::readdir(dir))) { snprintf(path, sizeof(path), "%s/%s", get_basedir_path().c_str(), de->d_name); struct stat st; diff --git a/src/os/filestore/FileStore.cc b/src/os/filestore/FileStore.cc index 27e6197e9afd..7ff064acf5d5 100644 --- a/src/os/filestore/FileStore.cc +++ b/src/os/filestore/FileStore.cc @@ -4633,11 +4633,8 @@ int FileStore::list_collections(vector& ls, bool include_temp) return r; } - char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1]; - struct dirent *de; - while ((r = ::readdir_r(dir, (struct dirent *)&buf, &de)) == 0) { - if (!de) - break; + struct dirent *de = nullptr; + while ((de = ::readdir(dir))) { if (de->d_type == DT_UNKNOWN) { // d_type not supported (non-ext[234], btrfs), must stat struct stat sb; @@ -4675,7 +4672,7 @@ int FileStore::list_collections(vector& ls, bool include_temp) } if (r > 0) { - derr << "trying readdir_r " << fn << ": " << cpp_strerror(r) << dendl; + derr << "trying readdir " << fn << ": " << cpp_strerror(r) << dendl; r = -r; } diff --git a/src/os/filestore/LFNIndex.cc b/src/os/filestore/LFNIndex.cc index f56c1f3c0237..9ac0457d6109 100644 --- a/src/os/filestore/LFNIndex.cc +++ b/src/os/filestore/LFNIndex.cc @@ -406,8 +406,6 @@ int LFNIndex::list_objects(const vector &to_list, int max_objs, { string to_list_path = get_full_path_subdir(to_list); DIR *dir = ::opendir(to_list_path.c_str()); - char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1]; - int r; if (!dir) { return -errno; } @@ -416,14 +414,12 @@ int LFNIndex::list_objects(const vector &to_list, int max_objs, seekdir(dir, *handle); } - struct dirent *de; + struct dirent *de = nullptr; + int r = 0; int listed = 0; - bool end = false; - while (!::readdir_r(dir, reinterpret_cast(buf), &de)) { - if (!de) { - end = true; - break; - } + bool end = true; + while ((de = ::readdir(dir))) { + end = false; if (max_objs > 0 && listed >= max_objs) { break; } @@ -466,15 +462,11 @@ int LFNIndex::list_subdirs(const vector &to_list, { string to_list_path = get_full_path_subdir(to_list); DIR *dir = ::opendir(to_list_path.c_str()); - char buf[offsetof(struct dirent, d_name) + PATH_MAX + 1]; if (!dir) return -errno; - struct dirent *de; - while (!::readdir_r(dir, reinterpret_cast(buf), &de)) { - if (!de) { - break; - } + struct dirent *de = nullptr; + while ((de = ::readdir(dir))) { string short_name(de->d_name); string demangled_name; if (lfn_is_subdir(short_name, &demangled_name)) {