diff options
author | Samuel Just <sam.just@inktank.com> | 2013-04-29 11:29:04 -0700 |
---|---|---|
committer | Samuel Just <sam.just@inktank.com> | 2013-05-07 08:16:04 -0700 |
commit | d7cd957433fcf0f4c40964709a485654e53d2a4d (patch) | |
tree | 82101ef439d94d25b6c2a56a48e840a83639560d | |
parent | 7b22cfb2f8448ba61885c92d0ebf576e742f270b (diff) | |
download | ceph-d7cd957433fcf0f4c40964709a485654e53d2a4d.tar.gz |
OSD::clear_temp should clear snap mapper entries as well
Signed-off-by: Samuel Just <sam.just@inktank.com>
-rw-r--r-- | src/osd/OSD.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 690bce68787..83cf0a9589f 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1507,6 +1507,12 @@ int OSD::read_superblock() void OSD::clear_temp(ObjectStore *store, coll_t tmp) { + OSDriver driver( + store, + coll_t(), + make_snapmapper_oid()); + SnapMapper mapper(&driver, 0, 0, 0); + vector<hobject_t> objects; store->collection_list(tmp, objects); @@ -1516,6 +1522,10 @@ void OSD::clear_temp(ObjectStore *store, coll_t tmp) for (vector<hobject_t>::iterator p = objects.begin(); p != objects.end(); ++p, removed++) { + OSDriver::OSTransaction _t(driver.get_transaction(&t)); + int r = mapper.remove_oid(*p, &_t); + if (r != 0 && r != -ENOENT) + assert(0); t.collection_remove(tmp, *p); if (removed > 300) { int r = store->apply_transaction(t); |