Thanks~ I worked on 12.2.4. And I read about the implementation of scrub preempt in latest version. The scrub preempt happens after scrub dequeue so it can not slove my problem. David Zafman <dzafman@xxxxxxxxxx> 于2018年10月31日周三 下午11:04写道: > > > What release are you working on? Have you seen the latest code in > master that allows client operations to preempt scrub? > > > bool PG::write_blocked_by_scrub(const hobject_t& soid) > { > if (soid < scrubber.start || soid >= scrubber.end) { > return false; > } > if (scrub_can_preempt) { > if (!scrub_preempted) { > dout(10) << __func__ << " " << soid << " preempted" << dendl; > scrub_preempted = true; > } else { > dout(10) << __func__ << " " << soid << " already preempted" << dendl; > } > return false; > } > return true; > } > > David > > > On 10/31/18 3:12 AM, 韦皓诚 wrote: > > Hi~ > > We have make some modifications to osd queue so that Scrub would stay > > in queue when client_op is busy. But this brings a problem, some write > > request would be blocked by the scrub in queue too long time. So we > > want to block a write request only when the scrub out of queue. The > > question is, is there any accident will happen to it? >