]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: remove empty monstore dirs
authorSage Weil <sage@newdream.net>
Fri, 11 Nov 2011 19:10:17 +0000 (11:10 -0800)
committerSage Weil <sage@newdream.net>
Fri, 11 Nov 2011 19:41:42 +0000 (11:41 -0800)
This is sloppy, but it works well enough since we mkdir dirs as needed
too.

Signed-off-by: Sage Weil <sage@newdream.net>
src/mon/MonitorStore.cc

index f93ab772ac61a78a58f15f1e97dbae3f70af75a5..d41209c2e0272354cd5419d7384a9f3704230b1f 100644 (file)
@@ -226,14 +226,18 @@ bool MonitorStore::exists_bl_ss(const char *a, const char *b)
 int MonitorStore::erase_ss(const char *a, const char *b)
 {
   char fn[1024];
+  char dr[1024];
+  snprintf(dr, sizeof(dr), "%s/%s", dir.c_str(), a);
   if (b) {
     dout(15) << "erase_ss " << a << "/" << b << dendl;
     snprintf(fn, sizeof(fn), "%s/%s/%s", dir.c_str(), a, b);
   } else {
     dout(15) << "erase_ss " << a << dendl;
-    snprintf(fn, sizeof(fn), "%s/%s", dir.c_str(), a);
+    strcpy(fn, dr);
   }
-  return ::unlink(fn);
+  int r = ::unlink(fn);
+  ::rmdir(dr);  // sloppy attempt to clean up empty dirs
+  return r;
 }
 
 int MonitorStore::get_bl_ss(bufferlist& bl, const char *a, const char *b)