From: Sage Weil Date: Thu, 2 May 2019 16:28:14 +0000 (-0500) Subject: osd/PG: fix cleanup of pgmeta-like objects on PG deletion X-Git-Tag: v15.1.0~2738^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a0f48db5cbfc48761eeac0daa259fecbaa573969;p=ceph.git osd/PG: fix cleanup of pgmeta-like objects on PG deletion If an object has an empty 'name' field, it "looks" like a pgmeta object, and the PG cleanup code was skipping it. However, we were letting these objects get created. Fix by only skipping *our* pgmeta object. If there are other pgmeta-like objects in the PG collection, clean them up. Fixes: https://tracker.ceph.com/issues/38724 Signed-off-by: Sage Weil --- diff --git a/src/osd/PG.cc b/src/osd/PG.cc index ba6d8730c11f..27107add2103 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -3806,9 +3806,13 @@ void PG::do_delete_work(ObjectStore::Transaction *t) OSDriver::OSTransaction _t(osdriver.get_transaction(t)); int64_t num = 0; for (auto& oid : olist) { - if (oid.is_pgmeta()) { + if (oid == pgmeta_oid) { continue; } + if (oid.is_pgmeta()) { + osd->clog->warn() << info.pgid << " found stray pgmeta-like " << oid + << " during PG removal"; + } int r = snap_mapper.remove_oid(oid.hobj, &_t); if (r != 0 && r != -ENOENT) { ceph_abort();