]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
HashIndex: reset attr upon split or merge completion
authorSamuel Just <sam.just@inktank.com>
Wed, 24 Jul 2013 01:04:40 +0000 (18:04 -0700)
committerSamuel Just <sam.just@inktank.com>
Thu, 25 Jul 2013 17:32:59 +0000 (10:32 -0700)
A replay of an in progress merge or split might make
our counts unreliable.

Fixes: #5723
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
src/os/HashIndex.cc

index 86a912bbef2b099a37ec135273b1b5b934862530..c279bab3a601ac863bc1a0e397276a084ce75b66 100644 (file)
@@ -447,18 +447,7 @@ int HashIndex::complete_merge(const vector<string> &path, subdir_info_s info) {
     r = move_objects(path, dst);
     if (r < 0)
       return r;
-    
-    map<string,hobject_t> objects_dst;
-    r = list_objects(dst, 0, 0, &objects_dst);
-    if (r < 0)
-      return r;
-    set<string> subdirs;
-    r = list_subdirs(dst, &subdirs);
-    if (r < 0)
-      return r;
-    dstinfo.objs = objects_dst.size();
-    dstinfo.subdirs = subdirs.size() - 1;
-    r = set_info(dst, dstinfo);
+    r = reset_attr(dst);
     if (r < 0)
       return r;
     r = remove_path(path);
@@ -576,7 +565,7 @@ int HashIndex::complete_split(const vector<string> &path, subdir_info_s info) {
   if (r < 0)
     return r;
   info.objs = objects.size();
-  r = set_info(path, info);
+  r = reset_attr(path);
   if (r < 0)
     return r;
   r = fsync_dir(path);