CephFS uses a different path to remove selfmanaged snaps than librados,
so while the librados path goes through pg_pool_t::remove_unmanaged_snap(),
we open code the snap addition to the pool's removed_snaps here. If we
don't set FLAG_SELFMANAGED_SNAPS at that time, we will implicitly set it
during decode and get a CRC mismatch.
Fix by explicitly setting FLAG_SELFMANAGED_SNAPS flag here.
Fixes: http://tracker.ceph.com/issues/23949
Signed-off-by: Sage Weil <sage@redhat.com>
!pending_inc.new_pools[p->first].removed_snaps.contains(*q))) {
pg_pool_t *newpi = pending_inc.get_new_pool(p->first, &pi);
newpi->removed_snaps.insert(*q);
+ newpi->flags |= pg_pool_t::FLAG_SELFMANAGED_SNAPS;
dout(10) << " pool " << p->first << " removed_snaps added " << *q
<< " (now " << newpi->removed_snaps << ")" << dendl;
if (*q > newpi->get_snap_seq()) {