PG::init: clear rollback info for backfill as well

Otherwise, we won't remove the old rollback objects from a resurrected pg.  In
rare cases, this can cause us to get an EEXIST if we happen to reuse the same
rename id on the same object in a subsequent interval.

Fixes: #9293
Related to: 8346e10755
Backport: firefly
Signed-off-by: Samuel Just <sam.just@inktank.com>
This commit is contained in:
Samuel Just 2014-08-29 14:04:04 -07:00
parent 2288011732
commit 1e69ff2f3c

View File

@ -2418,6 +2418,11 @@ void PG::init(
dout(10) << __func__ << ": Setting backfill" << dendl;
info.last_backfill = hobject_t();
info.last_complete = info.last_update;
PGLogEntryHandler rollbacker;
pg_log_t empty;
pg_log.claim_log_and_clear_rollback_info(empty, &rollbacker);
rollbacker.apply(this, t);
pg_log.mark_log_for_rewrite();
}