cam iosched: Use the write queue for BIO_ZONE commands
Use the write queue for BIO_ZONE commands so they can't get executed ahead of writes that were sent after them. More generally, since they introduce strong ordering into the list, they need to go to the write queue (which is the only queue that BIO_ORDERED is honored for at the moment). In fact, fix mismatch between queueing and dequeueing code by changing this to queue all non-reads (and non-trims) to the write queue. As a side effect this prevents the kernel message: kernel: Found bio_cmd = 0x9 which cam_iosched_next_bio() emits when finding commands other than BIO_READ in the read queue. PR: 221973 Obtained from: ElectroBSD Submitted by: Fabian Keil Differential Revision: https://reviews.freebsd.org/D12353
This commit is contained in:
parent
d0d0ad0ae2
commit
84c12dcdd0
@ -1345,8 +1345,7 @@ cam_iosched_queue_work(struct cam_iosched_softc *isc, struct bio *bp)
|
||||
#endif
|
||||
}
|
||||
#ifdef CAM_IOSCHED_DYNAMIC
|
||||
else if (do_dynamic_iosched &&
|
||||
(bp->bio_cmd == BIO_WRITE || bp->bio_cmd == BIO_FLUSH)) {
|
||||
else if (do_dynamic_iosched && (bp->bio_cmd != BIO_READ)) {
|
||||
if (cam_iosched_sort_queue(isc))
|
||||
bioq_disksort(&isc->write_queue, bp);
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user