This bug prevented resurrection of ancestor pgs where
necessary.
Fixes: #5269
This may result in pg A being created just before pg B
is resurrected and split into A and B resulting in one
or the other operations getting and EEXIST.
Backport: cuttlefish
Signed-off-by: Samuel Just <sam.just@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
DeletingStateRef df;
pg_t cur(pgid);
while (true) {
- df = service.deleting_pgs.lookup(pgid);
+ df = service.deleting_pgs.lookup(cur);
if (df)
break;
if (!cur.ps())
<< dendl;
*resurrected = cur;
*old_pg_state = df->old_pg_state;
- service.deleting_pgs.remove(pgid); // PG is no longer being removed!
+ service.deleting_pgs.remove(cur); // PG is no longer being removed!
return RES_PARENT;
} else {
/* this is not a problem, failing to cancel proves that all objects