]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd, filestore: debug collection listing
authorJosh Durgin <josh.durgin@dreamhost.com>
Thu, 2 Jun 2011 01:45:40 +0000 (18:45 -0700)
committerJosh Durgin <josh.durgin@dreamhost.com>
Fri, 3 Jun 2011 01:10:53 +0000 (18:10 -0700)
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
src/os/FileStore.cc
src/osd/OSD.cc

index bb500b2a4f3c8145f55ecba79548640fb4e49ebf..3c9ec18883bdd39c9866e0e5d276f83fe4e50b9a 100644 (file)
@@ -3637,13 +3637,17 @@ int FileStore::list_collections(vector<coll_t>& 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<coll_t>& 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) 
index d90669d41b32c09c58aa3d5b5c4ccc1713a16ee5..e7741d95aebb85e9de6c7cb64245c1c82b8e4bce 100644 (file)
@@ -1061,7 +1061,10 @@ void OSD::load_pgs()
   assert(pg_map.empty());
 
   vector<coll_t> 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<coll_t>::iterator it = ls.begin();
        it != ls.end();