From 9904a09dd2b93bc883ba91a03d1362850656c0ff Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Thu, 18 Jul 2019 11:09:47 -0500 Subject: [PATCH] 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 (cherry picked from commit a0f48db5cbfc48761eeac0daa259fecbaa573969) # Conflicts: # src/osd/PG.cc - location of this code is do_delete_work in master, _delete_some in n --- src/osd/PG.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 29955551aa2a0..f1d8bc088a719 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -6590,9 +6590,13 @@ void PG::_delete_some(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(); -- 2.39.5