On 5/18/23 01:30, Bart Van Assche wrote: > On 5/16/23 18:06, Damien Le Moal wrote: >> On 5/17/23 07:33, Bart Van Assche wrote: >>> Make deadline_skip_seq_writes() do what its name suggests, namely to >>> skip sequential writes. >>> >>> Reviewed-by: Christoph Hellwig <hch@xxxxxx> >>> Cc: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> >>> Cc: Ming Lei <ming.lei@xxxxxxxxxx> >>> Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> >>> --- >>> block/mq-deadline.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/block/mq-deadline.c b/block/mq-deadline.c >>> index 6276afede9cd..dbc0feca963e 100644 >>> --- a/block/mq-deadline.c >>> +++ b/block/mq-deadline.c >>> @@ -308,7 +308,7 @@ static struct request *deadline_skip_seq_writes(struct deadline_data *dd, >>> do { >>> pos += blk_rq_sectors(rq); >>> rq = deadline_latter_request(rq); >>> - } while (rq && blk_rq_pos(rq) == pos); >>> + } while (rq && blk_rq_pos(rq) == pos && blk_rq_is_seq_zoned_write(rq)); >> >> No ! The "seq write" skip here is to skip writes that are contiguous/sequential >> to ensure that we keep issuing contiguous/sequential writes belonging to >> different zones, regardless of the target zone type. >> >> So drop this change please. > > Hi Damien, > > I'm fine with dropping this patch. I came up with this patch because it > surprised me to see that deadline_skip_seq_writes() does not check the > type of the requests that it is skipping. If e.g. a WRITE is followed by > two contiguous READs, all three requests are skipped. Is this intentional? Hmmm... mq-deadline is not supposed to mix up reads and writes in the same scheduling batch, and there is one sort_list (rbtree) per data direction. So we should not be seeing different data directions in this loop, no ? > > Thanks, > > Bart. > -- Damien Le Moal Western Digital Research