From ade2ccbe5169e3d8e22aec5b4258b010594591ea Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Wed, 1 Jun 2011 18:45:40 -0700 Subject: [PATCH] osd, filestore: debug collection listing Signed-off-by: Josh Durgin --- src/os/FileStore.cc | 19 ++++++++++++++----- src/osd/OSD.cc | 5 ++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/os/FileStore.cc b/src/os/FileStore.cc index bb500b2a4f3c8..3c9ec18883bdd 100644 --- a/src/os/FileStore.cc +++ b/src/os/FileStore.cc @@ -3637,13 +3637,17 @@ int FileStore::list_collections(vector& ls) char fn[PATH_MAX]; snprintf(fn, sizeof(fn), "%s/current", basedir.c_str()); + int r = 0; DIR *dir = ::opendir(fn); - if (!dir) - return -errno; + if (!dir) { + r = -errno; + derr << "tried opening directory " << fn << ": " << cpp_strerror(-r) << dendl; + return r; + } struct dirent sde, *de; char new_name[PATH_MAX]; - while (::readdir_r(dir, &sde, &de) == 0) { + while ((r = ::readdir_r(dir, &sde, &de)) == 0) { if (!de) break; if (!S_ISDIR(de->d_type << 12)) @@ -3656,9 +3660,14 @@ int FileStore::list_collections(vector& ls) lfn_translate(fn, de->d_name, new_name, sizeof(new_name)); ls.push_back(coll_t(new_name)); } - + + if (r > 0) { + derr << "trying readdir_r " << fn << ": " << cpp_strerror(r) << dendl; + r = -r; + } + ::closedir(dir); - return 0; + return r; } int FileStore::collection_stat(coll_t c, struct stat *st) diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index d90669d41b32c..e7741d95aebb8 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1061,7 +1061,10 @@ void OSD::load_pgs() assert(pg_map.empty()); vector ls; - store->list_collections(ls); + int r = store->list_collections(ls); + if (r < 0) { + derr << "failed to list pgs: " << cpp_strerror(-r) << dendl; + } for (vector::iterator it = ls.begin(); it != ls.end(); -- 2.39.5