mirror of
https://github.com/ceph/ceph
synced 2024-12-18 01:16:55 +00:00
osd/PG: discard ops based on either new or old lfor and features
If the client has the new feature bit, use the new field; if they have the older feature bit, use the old field. Note that there is no change to the Objecter: last_force_op_resend is still the "current" field that it should pay attention to. Signed-off-by: Sage Weil <sage@redhat.com>
This commit is contained in:
parent
0423b541b3
commit
8caa8f162e
@ -5468,11 +5468,19 @@ bool PG::can_discard_op(OpRequestRef& op)
|
||||
return true;
|
||||
}
|
||||
|
||||
if (m->get_map_epoch() < pool.info.last_force_op_resend &&
|
||||
m->get_connection()->has_feature(CEPH_FEATURE_OSD_POOLRESEND)) {
|
||||
dout(7) << __func__ << " sent before last_force_op_resend "
|
||||
<< pool.info.last_force_op_resend << ", dropping" << *m << dendl;
|
||||
return true;
|
||||
if (m->get_connection()->has_feature(CEPH_FEATURE_RESEND_ON_SPLIT)) {
|
||||
if (m->get_map_epoch() < pool.info.get_last_force_op_resend()) {
|
||||
dout(7) << __func__ << " sent before last_force_op_resend "
|
||||
<< pool.info.last_force_op_resend << ", dropping" << *m << dendl;
|
||||
return true;
|
||||
}
|
||||
} else if (m->get_connection()->has_feature(CEPH_FEATURE_OSD_POOLRESEND)) {
|
||||
if (m->get_map_epoch() < pool.info.get_last_force_op_resend_preluminous()) {
|
||||
dout(7) << __func__ << " sent before last_force_op_resend_preluminous "
|
||||
<< pool.info.last_force_op_resend_preluminous
|
||||
<< ", dropping" << *m << dendl;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
Loading…
Reference in New Issue
Block a user