On Wed, Jul 10, 2019 at 09:57:05AM -0600, Jens Axboe wrote: > On 7/10/19 9:54 AM, Damien Le Moal wrote: > > diff --git a/block/blk-mq.h b/block/blk-mq.h > > index 633a5a77ee8b..c9195a2cd670 100644 > > --- a/block/blk-mq.h > > +++ b/block/blk-mq.h > > @@ -238,4 +238,14 @@ static inline void blk_mq_clear_mq_map(struct blk_mq_queue_map *qmap) > > qmap->mq_map[cpu] = 0; > > } > > > > +static inline struct blk_plug *blk_mq_plug(struct request_queue *q, > > + struct bio *bio) > > +{ > > + if (!blk_queue_is_zoned(q) || !op_is_write(bio_op(bio))) > > + return current->plug; > > + > > + /* Zoned block device write case: do not plug the BIO */ > > + return NULL; > > +} > > + > > #endif > > Folks are going to look at that and be puzzled, I think that function > deserves a comment. Agreed. Also I'd reformat the conditionals to make the default case more obvious: if (blk_queue_is_zoned(q) && op_is_write(bio_op(bio))) return NULL; return current->plug;