From: Samuel Just Date: Mon, 29 Apr 2013 18:29:04 +0000 (-0700) Subject: OSD::clear_temp should clear snap mapper entries as well X-Git-Tag: v0.63~48^2~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d7cd957433fcf0f4c40964709a485654e53d2a4d;p=ceph.git OSD::clear_temp should clear snap mapper entries as well Signed-off-by: Samuel Just --- diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 690bce687877..83cf0a9589f5 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 objects; store->collection_list(tmp, objects); @@ -1516,6 +1522,10 @@ void OSD::clear_temp(ObjectStore *store, coll_t tmp) for (vector::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);