diff options
author | Samuel Just <samuel.just@dreamhost.com> | 2012-05-04 13:31:30 -0700 |
---|---|---|
committer | Samuel Just <samuel.just@dreamhost.com> | 2012-05-04 13:31:30 -0700 |
commit | 4f891d6c6ada6ed502cb23b9d6004b8002c98fbd (patch) | |
tree | f5ec412e1e242cfa4652bcfae6328b4e883802c7 | |
parent | 3adaea723e0396c5480c97b03792beddb0dd6bbf (diff) | |
download | ceph-4f891d6c6ada6ed502cb23b9d6004b8002c98fbd.tar.gz |
PG: handle case where purged_snaps contains a snap not in snap_trimqhistoric/snap-workaround
Signed-off-by: Samuel Just <samuel.just@dreamhost.com>
-rw-r--r-- | src/osd/PG.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 3879fa08414..87141144a34 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1236,7 +1236,9 @@ void PG::activate(ObjectStore::Transaction& t, list<Context*>& tfin, // initialize snap_trimq if (is_primary()) { snap_trimq = pool->cached_removed_snaps; - snap_trimq.subtract(info.purged_snaps); + interval_set<snapid_t> intersect; + intersect.intersection_of(snap_trimq, info.purged_snaps); + snap_trimq.subtract(intersect); dout(10) << "activate - snap_trimq " << snap_trimq << dendl; if (!snap_trimq.empty() && is_clean()) queue_snap_trim(); |