On 1/28/21 1:13 AM, Mike Snitzer wrote: > On Mon, Jan 25 2021 at 7:13am -0500, > Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> wrote: > >> Introduce QUEUE_FLAG_POLL_CAP flag representing if the request queue >> capable of polling or not. >> >> Signed-off-by: Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> > > Why are you adding QUEUE_FLAG_POLL_CAP? Doesn't seem as though DM or > anything else actually needs it. Users can switch on/off polling on device via '/sys/block/<dev>/queue/io_poll' at runtime. The requisite for turning on polling is that the device is **capable** of polling. For mq devices, the requisite is that there's polling hw queue for the device, i.e., ``` q->tag_set->nr_maps > HCTX_TYPE_POLL && q->tag_set->map[HCTX_TYPE_POLL].nr_queues ``` But for dm devices, we need to check if all the underlying devices support polling or not. Without this newly added queue flag, we need to check again every time users want to turn on polling via 'io_poll', and thus the dm layer need to export one interface to block layer, checking if all the underlying target devices support polling or not, maybe just like the iopoll() method we did in patch 3. Something like, ``` struct block_device_operations { + bool (*support_iopoll)(struct request_queue *q); ``` The newly added queue flag 'QUEUE_FLAG_POLL_CAP' is just used as a cache representing if the device **capable** of polling, while the original queue flag 'QUEUE_FLAG_POLL' representing if polling is turned on for this device **currently**. But indeed we are short of queue flag resource. Adding a new queue flag may not be the best resolution. Any inspiration? -- Thanks, Jeffle -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel