diff options
author | Samuel Just <sam.just@inktank.com> | 2013-07-23 18:04:40 -0700 |
---|---|---|
committer | Samuel Just <sam.just@inktank.com> | 2013-07-25 10:37:39 -0700 |
commit | b0535fcf854c5042d6b5ff481aabca08026d8f7f (patch) | |
tree | b2f887c3a6398c4779c455ed10201b5fc884bfd4 | |
parent | 8f73302b4e637ca8b85d68ea7503279faecb57d8 (diff) | |
download | ceph-b0535fcf854c5042d6b5ff481aabca08026d8f7f.tar.gz |
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 <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
(cherry picked from commit 0dc3efdd885377a07987d868af5bb7a38245c90b)
-rw-r--r-- | src/os/HashIndex.cc | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/os/HashIndex.cc b/src/os/HashIndex.cc index 216f53ce72b..6281c6113cc 100644 --- a/src/os/HashIndex.cc +++ b/src/os/HashIndex.cc @@ -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); |