There are two places in the block layer at the moment where blk_mq_plug() helper could be used instead of directly accessing the plug from struct current. In both these cases, directly accessing the plug should not have any consequences for zoned devices. Make the intent explicit by adding comments instead of introducing unwanted checks with blk_mq_plug() helper.[1] [1] https://lore.kernel.org/linux-block/f6e54907-1035-2b2c-6387-ed178be05ccb@kernel.dk/
Unified · Split
| @@ -850,6 +850,12 @@ int bio_poll(struct bio *bio, struct io_comp_batch *iob, unsigned int flags) · 849 unmodified lines | |||
| 850 | !test_bit(QUEUE_FLAG_POLL, &q->queue_flags)) | 850 | !test_bit(QUEUE_FLAG_POLL, &q->queue_flags)) |
| 851 | return 0; | 851 | return 0; |
| 852 | 852 | ||
| 853 | /* | ||
| 854 | * As the requests that require a zone lock are not plugged in the | ||
| 855 | * first place, directly accessing the plug instead of using | ||
| 856 | * blk_mq_plug() should not have any consequences during flushing for | ||
| 857 | * zoned devices. | ||
| 858 | */ | ||
| 853 | blk_flush_plug(current->plug, false); | 859 | blk_flush_plug(current->plug, false); |
| 854 | 860 | ||
| 855 | if (bio_queue_enter(bio)) | 861 | if (bio_queue_enter(bio)) |
| @@ -1215,6 +1215,12 @@ void blk_execute_rq_nowait(struct request *rq, bool at_head) · 1214 unmodified lines | |||
| 1215 | WARN_ON(!blk_rq_is_passthrough(rq)); | 1215 | WARN_ON(!blk_rq_is_passthrough(rq)); |
| 1216 | 1216 | ||
| 1217 | blk_account_io_start(rq); | 1217 | blk_account_io_start(rq); |
| 1218 | |||
| 1219 | /* | ||
| 1220 | * As plugging can be enabled for passthrough requests on a zoned | ||
| 1221 | * device, directly accessing the plug instead of using blk_mq_plug() | ||
| 1222 | * should not have any consequences. | ||
| 1223 | */ | ||
| 1218 | if (current->plug) | 1224 | if (current->plug) |
| 1219 | blk_add_rq_to_plug(current->plug, rq); | 1225 | blk_add_rq_to_plug(current->plug, rq); |
| 1220 | else | 1226 | else |