From: Samuel Just Date: Wed, 24 Jul 2013 01:04:40 +0000 (-0700) Subject: HashIndex: reset attr upon split or merge completion X-Git-Tag: v0.67-rc3~64 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0dc3efdd885377a07987d868af5bb7a38245c90b;p=ceph.git HashIndex: reset attr upon split or merge completion A replay of an in progress merge or split might make our counts unreliable. Fixes: #5723 Signed-off-by: Samuel Just Reviewed-by: Sage Weil --- diff --git a/src/os/HashIndex.cc b/src/os/HashIndex.cc index 86a912bbef2b..c279bab3a601 100644 --- a/src/os/HashIndex.cc +++ b/src/os/HashIndex.cc @@ -447,18 +447,7 @@ int HashIndex::complete_merge(const vector &path, subdir_info_s info) { r = move_objects(path, dst); if (r < 0) return r; - - map objects_dst; - r = list_objects(dst, 0, 0, &objects_dst); - if (r < 0) - return r; - set 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 &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);