Synchronous (or yielded, basically other-than AioCompletion trim)
would try to dereference the past-the-end iterator if we were trimming
to a point in the most recent generation.
https://tracker.ceph.com/issues/51661
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
(cherry picked from commit
97305f03c16db1cfaceef04a74ee510bc1fc1e80)
https://tracker.ceph.com/issues/51675
Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
r = -ENODATA;
if (r == -ENODATA && be->gen_id < target_gen)
r = 0;
+ if (be->gen_id == target_gen)
+ break;
l.lock();
};
return r;