Thread (10 messages) 10 messages, 2 authors, 2016-12-06

Re: [PATCHSET/RFC v2] Make legacy IO schedulers work with blk-mq

From: Paolo Valente <hidden>
Date: 2016-12-06 10:01:48
Also in: lkml

Il giorno 05 dic 2016, alle ore 19:26, Jens Axboe [off-list ref] ha =
scritto:
=20
Version 2 of the hack/patchset, that enables blk-mq to use the legacy
IO schedulers with single queue devices. Original posting is here:
=20
https://marc.info/?l=3Dlinux-block&m=3D148073493203664&w=3D2
=20
You can also found this version in the following git branch:
=20
git://git.kernel.dk/linux-block blk-mq-legacy-sched.2
=20
and new developments/fixes will happen in the 'blk-mq-legacy-sched'
branch.
=20
Hi Jens,
while running some tests, the system hung after a while.

If I'm not mistaken, the above branches contain a (modified) 4.9-rc1.
Maybe instability follows from that?  I have tried a rebase, but
resulting conflicts are non-trivial (for me) to solve.

Meanwhile, if you deem it useful, I can provide you with the oops
message, as I catch it.

As a secondary issue, iostat always reports 0 MB/s for both reads and
writes, while tps are non null.

Thanks,
Paolo
Changes since v1:
=20
- Remove the default 'deadline' hard wiring, and provide Kconfig
 entries to set the blk-mq scheduler. This now works like for legacy
 devices.
=20
- Rename blk_use_mq_path() to blk_use_sched_path() to make it more
 clear. Suggested by Johannes Thumshirn.
=20
- Fixup a spot where we did not use the accessor function to determine
 what path to use.
=20
- Flush mq software queues, even if IO scheduler managed. This should
 make paths work that are MQ aware, and using only MQ interfaces.
=20
- Cleanup free path of MQ request.
=20
- Account when IO was queued to a hardware context, similarly to the
 regular MQ path.
=20
- Add BLK_MQ_F_NO_SCHED flag, so that drivers can explicitly ask for
 no scheduling on a queue. Add this for NVMe admin queues.
=20
- Kill BLK_MQ_F_SCHED, since we now have Kconfig entries for setting
 the desired IO scheduler.
=20
- Fix issues with live scheduler switching through sysfs. Should now
 be solid, even with lots of IO running on the device.
=20
- Drop null_blk and SCSI changes, not needed anymore.
=20
=20
block/Kconfig.iosched   |   29 ++++
block/blk-core.c        |   77 ++++++-----
block/blk-exec.c        |   12 +
block/blk-flush.c       |   40 +++--
block/blk-merge.c       |    5=20
block/blk-mq.c          |  332 =
+++++++++++++++++++++++++++++++++++++++++++++---
block/blk-mq.h          |    1=20
block/blk-sysfs.c       |    2=20
block/blk.h             |   16 ++
block/cfq-iosched.c     |   22 ++-
block/elevator.c        |  125 ++++++++++++------
drivers/nvme/host/pci.c |    1=20
include/linux/blk-mq.h  |    1=20
include/linux/blkdev.h  |    2=20
14 files changed, 555 insertions(+), 110 deletions(-)
=20
=20
--
To unsubscribe from this list: send the line "unsubscribe linux-block" =
in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help