On Tue, 2017-08-01 at 18:39 +0900, Damien Le Moal wrote: > diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c > index 96855df9f49d..78fb51a37e86 100644 > --- a/drivers/scsi/sd_zbc.c > +++ b/drivers/scsi/sd_zbc.c > @@ -528,15 +528,20 @@ static int sd_zbc_check_zone_size(struct scsi_disk *sdkp) > > static int sd_zbc_setup(struct scsi_disk *sdkp) > { > + struct request_queue *q = sdkp->disk->queue; > > /* chunk_sectors indicates the zone size */ > - blk_queue_chunk_sectors(sdkp->disk->queue, > + blk_queue_chunk_sectors(q, > logical_to_sectors(sdkp->device, sdkp->zone_blocks)); > sdkp->zone_shift = ilog2(sdkp->zone_blocks); > sdkp->nr_zones = sdkp->capacity >> sdkp->zone_shift; > if (sdkp->capacity & (sdkp->zone_blocks - 1)) > sdkp->nr_zones++; > > + /* Do not use zone locking in mq case */ > + if (q->mq_ops) > + return 0; > + > if (!sdkp->zones_wlock) { > sdkp->zones_wlock = kcalloc(BITS_TO_LONGS(sdkp->nr_zones), > sizeof(unsigned long), Hello Damien, Are you aware that the blk-sq / scsi-sq code will be removed once all block drivers have been converted? Are you aware that we don't want any differences in behavior like the above between the single queue and multiqueue paths? Can you check whether the patch series Ming Lei posted earlier this week solves the frequent requeueing? See also "[PATCH 00/14] blk-mq-sched: fix SCSI-MQ performance regression" (http://marc.info/?l=linux-block&m=150151989915776). Thanks, Bart.