Use I/O scheduler 'none' for loop devices

On my test setup I noticed that the 'mq-deadline' scheduler is assigned
to loop devices. The optimal I/O scheduler for loop devices is 'none'.
'none' is a better choice than BFQ or mq-deadline because it does not
delay I/O requests. 'none' is a better choice than Kyber because it
does not throttle I/O and because it requires fewer CPU cycles.

Note: the blk-mq core tries to merge a bio into an existing request if
possible. See also the blk_attempt_plug_merge() call in blk_mq_submit_bio().

Hence this patch. With this patch applied the deadline scheduler is no
longer used:

 # grep -aH . /sys/block/loop*/queue/scheduler
/sys/block/loop0/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop1/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop2/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop3/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop4/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop5/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop6/queue/scheduler:[none] mq-deadline kyber bfq
/sys/block/loop7/queue/scheduler:[none] mq-deadline kyber bfq

Bug: 194450129
Test: Built Android images and installed these on an Android phone.
Change-Id: I403ed263e7c159f8bd43a2572c38fe545c3d0541
Signed-off-by: Bart Van Assche <bvanassche@google.com>
1 file changed