Hi Linus, This is the main pull request for block changes for 4.20. This pull request contains: - Series enabling runtime PM for blk-mq (Bart). - Two pull requests from Christoph for NVMe, with items such as; - Better AEN tracking - Multipath improvements - RDMA fixes - Rework of FC for target removal - Fixes for issues identified by static checkers - Fabric cleanups, as prep for TCP transport - Various cleanups and bug fixes - Block merging cleanups (Christoph) - Conversion of drivers to generic DMA mapping API (Christoph) - Series fixing ref count issues with blkcg (Dennis) - Series improving BFQ heuristics (Paolo, et al) - Series improving heuristics for the Kyber IO scheduler (Omar) - Removal of dangerous bio_rewind_iter() API (Ming) - Apply single queue IPI redirection logic to blk-mq (Ming) - Set of fixes and improvements for bcache (Coly et al) - Series closing a hotplug race with sysfs group attributes (Hannes) - Set of patches for lightnvm: - pblk trace support (Hans) - SPDX license header update (Javier) - Tons of refactoring patches to cleanly abstract the 1.2 and 2.0 specs behind a common core interface. (Javier, Matias) - Enable pblk to use a common interface to retrieve chunk metadata (Matias) - Bug fixes (Various) - Set of fixes and updates to the blk IO latency target (Josef) - blk-mq queue number updates fixes (Jianchao) - Convert a bunch of drivers from the old legacy IO interface to blk-mq. This will conclude with the removal of the legacy IO interface itself in 4.21, with the rest of the drivers (me, Omar) - Removal of the DAC960 driver. The SCSI tree will introduce two replacement drivers for this. (Hannes) I merged in v4.19-rc6 to resolve a conflict, but also to pull in a few fixes that went into the storage area after the 4.20 tree was forked off. Please pull! git://git.kernel.dk/linux-block.git for-4.20/block-20181021 ---------------------------------------------------------------- Bart Van Assche (25): blk-mq: Document the functions that iterate over requests block: Move power management code into a new source file block, scsi: Change the preempt-only flag into a counter block: Split blk_pm_add_request() and blk_pm_put_request() block: Schedule runtime resume earlier percpu-refcount: Introduce percpu_ref_resurrect() block: Allow unfreezing of a queue while requests are in progress block: Make blk_get_request() block for non-PM requests while suspended blk-mq: Enable support for runtime power management block: Finish renaming REQ_DISCARD into REQ_OP_DISCARD blk-mq-debugfs: Also show requests that have not yet been started nvmet: use strcmp() instead of strncmp() for subsystem lookup nvmet-rdma: check for timeout in nvme_rdma_wait_for_cm() nvme-core: declare local symbols static nvme-core: rework a NQN copying operation nvme-pci: fix nvme_suspend_queue() kernel-doc header nvmet: use strlcpy() instead of strcpy() nvmet-rdma: declare local symbols static nvmet: avoid integer overflow in the discard code nvme-fc: fix kernel-doc headers nvme-fc: introduce struct nvme_fcp_op_w_sgl nvme-fc: rework the request initialization code nvmet-fc: fix kernel-doc headers nvme-core: make implicit seed truncation explicit nvmet-fcloop: suppress a compiler warning Bartlomiej Zolnierkiewicz (2): block: remove redundant 'default n' from Kconfig-s drivers/block: remove redundant 'default n' from Kconfig-s Ben Peddell (1): bcache: Populate writeback_rate_minimum attribute Chaitanya Kulkarni (4): nvmet: remove redundant module prefix nvme-core: add async event trace helper nvmet: remove unreachable code nvme-pci: remove duplicate check Christoph Hellwig (23): block: use bio_add_page in bio_iov_iter_get_pages block: move integrity_req_gap_{back,front}_merge to blk.h block: move req_gap_{back,front}_merge to blk-merge.c block: move req_gap_back_merge to blk.h block: simplify BIOVEC_PHYS_MERGEABLE block: add a missing BIOVEC_SEG_BOUNDARY check in bio_add_pc_page block: merge BIOVEC_SEG_BOUNDARY into biovec_phys_mergeable block: remove bvec_to_phys block: don't include io.h from bio.h block: don't include bug.h from bio.h arm: remove the unused BIOVEC_MERGEABLE define xen: remove the xen_biovec_phys_mergeable export xen: provide a prototype for xen_biovec_phys_mergeable in xen.h block: remove ARCH_BIOVEC_PHYS_MERGEABLE xen: don't include <xen/xen.h> from <asm/io.h> and <asm/dma-mapping.h> nvme: take node locality into account when selecting a path ubd: remove use of blk_rq_map_sg skd: switch to the generic DMA API sx8: remove dead IF_64BIT_DMA_IS_POSSIBLE code sx8: switch to the generic DMA API umem: switch to the generic DMA API rsxx: switch to the generic DMA API mtip32xx: fully switch to the generic DMA API Coly Li (3): bcache: use REQ_PRIO to indicate bio for metadata bcache: fix typo in code comments of closure_return_with_destructor() bcache: replace hard coded number with BUCKET_GC_GEN_MAX Dennis Zhou (2): blkcg: fix edge case for blk_get_rl() under memory pressure blkcg: reassociate bios when make_request() is called recursively Dennis Zhou (Facebook) (12): blkcg: fix ref count issue with bio_blkcg using task_css blkcg: update blkg_lookup_create to do locking blkcg: convert blkg_lookup_create to find closest blkg blkcg: always associate a bio with a blkg blkcg: consolidate bio_issue_init to be a part of core blkcg: associate a blkg for pages being evicted by swap blkcg: associate writeback bios with a blkg blkcg: remove bio->bi_css and instead use bio->bi_blkg blkcg: remove additional reference to the css blkcg: cleanup and make blk_get_rl use blkg_lookup_create blkcg: change blkg reference counting to use percpu_ref blkcg: rename blkg_try_get to blkg_tryget Dongbo Cao (3): bcache: remove useless parameter of bch_debug_init() bcache: split combined if-condition code into separate ones bcache: panic fix for making cache device Federico Motta (1): block, bfq: improve asymmetric scenarios detection Gustavo A. R. Silva (1): pktcdvd: fix fall-through annotation Hannes Reinecke (6): block: genhd: add 'groups' argument to device_add_disk nvme: register ns_id attributes as default sysfs groups aoe: register default groups with device_add_disk() zram: register default groups with device_add_disk() virtio-blk: modernize sysfs attribute creation drivers/block: Remove DAC960 driver Hans Holmberg (11): lightnvm: introduce nvm_rq_to_ppa_list lightnvm: pblk: allocate line map bitmaps using a mempool lightnvm: pblk: remove unused parameters in pblk_up_rq lightnvm: pblk: fix up prints in pblk_read_check_rand lightnvm: pblk: fix write amplificiation calculation lightnvm: pblk: add trace events for chunk states lightnvm: pblk: add trace events for line state changes lightnvm: pblk: add trace events for pblk state changes lightnvm: pblk: add tracing for chunk resets lightnvm: pblk: stop recreating global caches lightnvm: pblk: fix mapping issue on failed writes James Smart (3): nvmet_fc: support target port removal with nvmet layer nvme_fc: add 'nvme_discovery' sysfs attribute to fc transport device nvme: call nvme_complete_rq when nvmf_check_ready fails for mpath I/O Javier González (21): lightnvm: pblk: fix race condition on metadata I/O lightnvm: pblk: add helpers for chunk addresses lightnvm: pblk: improve line helpers lightnvm: pblk: fix comment typo lightnvm: pblk: remove unused variable. lightnvm: pblk: guarantee emeta on line close lightnvm: move ppa transformations to core lightnvm: pblk: calculate line pad distance in helper lightnvm: use internal allocation for chunk log page lightnvm: pblk: encapsulate rqd dma allocations lightnvm: pblk: refactor metadata paths lightnvm: pblk: take write semaphore on metadata lightnvm: pblk: recover open lines on 2.0 devices lightnvm: pblk: add SPDX license tag lightnvm: pblk: fix race on sysfs line state lightnvm: pblk: remove unused function lightnvm: pblk: encapsulate rb pointer operations lightnvm: pblk: move ring buffer alloc/free rb init lightnvm: pblk: guarantee mw_cunits on read buffer lightnvm: do no update csecs and sos on 1.2 lightnvm: pblk: guarantee that backpointer is respected on writer stall Jens Axboe (19): Merge tag 'v4.19-rc6' into for-4.20/block Merge branch 'nvme-4.20' of git://git.infradead.org/nvme into for-4.20/block aoe: convert aoeblk to blk-mq skd: fixup usage of legacy IO API null_blk: remove legacy IO path block: remove bogus check for queue_lock assignment cdrom: don't attempt to fiddle with cdo->capability blk-mq: provide helper for setting up an SQ queue and tag set ps3disk: convert to blk-mq paride: convert pcd to blk-mq paride: convert pd to blk-mq paride: convert pf to blk-mq xsysace: convert to blk-mq mtd_blkdevs: convert to blk-mq gdrom: convert to blk-mq z2ram: convert to blk-mq sx8: convert to blk-mq Merge branch 'nvme-4.20' of git://git.infradead.org/nvme into for-4.20/block block: setup bounce bio_sets properly Jia-Ju Bai (1): lightnvm: pblk: fix two sleep-in-atomic-context bugs Jianchao Wang (4): blk-mq: adjust debugfs and sysfs register when updating nr_hw_queues blk-mq: change gfp flags to GFP_NOIO in blk_mq_realloc_hw_ctxs blk-mq: realloc hctx when hw queue is mapped to another node blk-mq: fallback to previous nr_hw_queues when updating fails Josef Bacik (5): blk-iolatency: use q->nr_requests directly blk-iolatency: deal with nr_requests == 1 blk-iolatency: deal with small samples blk-iolatency: use a percentile approache for ssd's blk-iolatency: keep track of previous windows stats Kees Cook (1): drbd: Convert from ahash to shash Keith Busch (2): nvme: update node paths after adding new path nvme-pci: fix hot removal during error handling Konstantin Khlebnikov (1): block: describe difference between flags IO_STAT and STATS Liu Bo (1): Blk-throttle: update to use rbtree with leftmost node cached Maciej S. Szmigiero (1): cfq: clear queue pointers from cfqg after unpinning them in cfq_pd_offline Matias Bjørling (10): lightnvm: remove dependencies on BLK_DEV_NVME and PCI lightnvm: combine 1.2 and 2.0 command flags lightnvm: pblk: fix rqd.error return value in pblk_blk_erase_sync lightnvm: move device L2P detection to core lightnvm: move bad block and chunk state logic to core lightnvm: pblk: unify vector max req constants lightnvm: pblk: fix incorrect min_write_pgs lightnvm: pblk: remove size and out of bounds read check lightnvm: pblk: refactor put line fn on read completion lightnvm: pblk: remove debug from pblk_[down/up]_page Milan P. Gandhi (2): nvme: fix typo in nvme_identify_ns_descs nvme-fc: fix for a minor typos Ming Lei (2): block: remove bio_rewind_iter() blk-mq: complete req in softirq context in case of single queue Nathan Chancellor (1): rsxx: Remove unnecessary parentheses Omar Sandoval (17): block: move call of scheduler's ->completed_request() hook block: export blk_stat_enable_accounting() kyber: don't make domain token sbitmap larger than necessary kyber: implement improved heuristics kyber: add tracepoints kyber: fix integer overflow of latency targets on 32-bit swim: fix cleanup on setup error swim: convert to blk-mq swim3: add real error handling in setup swim3: convert to blk-mq amiflop: fold headers into C file amiflop: clean up on errors during setup amiflop: convert to blk-mq ataflop: fold headers into C file ataflop: fix error handling during setup ataflop: convert to blk-mq floppy: convert to blk-mq Paolo Valente (3): block, bfq: correctly charge and reset entity service in all cases block, bfq: inject other-queue I/O into seeky idle queues on NCQ flash blok, bfq: do not plug I/O if all queues are weight-raised Richard Weinberger (1): um: Convert ubd driver to blk-mq Sagi Grimberg (4): nvmet: don't split large I/Os unconditionally nvmet-rdma: use a private workqueue for delete nvme-rdma: always have a valid trsvcid nvme-fabrics: move controller options matching to fabrics Shenghui Wang (4): bcache: account size of buckets used in uuid write to ca->meta_sectors_written bcache: recal cached_dev_sectors on detach bcache: remove unused bch_passthrough_cache bcache: use MAX_CACHES_PER_SET instead of magic number 8 in __bch_bucket_alloc_set Tang Junhui (4): bcache: trace missed reading by cache_missed bcache: fix ioctl in flash device bcache: correct dirty data statistics bcache: fix miss key refill->end in writeback Wei Yongjun (1): lightnvm: pblk: fix error handling of pblk_lines_init() Young_X (1): cdrom: fix improper type cast, which can leat to information leak. YueHaibing (2): blk-iolatency: remove set but not used variables 'changed' and 'blkiolat' null_blk: remove set but not used variable 'q' Zhoujie Wu (1): lightnvm: pblk: consider max hw sectors supported for max_write_pgs jun qian (1): block: umem: replace spin_lock_bh with spin_lock in tasklet callback Documentation/admin-guide/cgroup-v2.rst | 8 +- Documentation/blockdev/README.DAC960 | 756 --- Documentation/blockdev/zram.txt | 2 +- Documentation/device-mapper/log-writes.txt | 2 +- arch/arm/include/asm/io.h | 15 - arch/arm64/include/asm/io.h | 9 - arch/m68k/emu/nfblock.c | 2 +- arch/m68k/include/asm/atafd.h | 13 - arch/m68k/include/asm/atafdreg.h | 80 - arch/um/drivers/ubd_kern.c | 236 +- arch/x86/include/asm/io.h | 12 - arch/x86/include/asm/xen/events.h | 2 + arch/x86/xen/enlighten.c | 1 + arch/x86/xen/enlighten_pvh.c | 1 + arch/x86/xen/platform-pci-unplug.c | 1 + arch/x86/xen/pmu.c | 1 + block/Kconfig | 10 +- block/Kconfig.iosched | 3 - block/Makefile | 1 + block/bfq-cgroup.c | 4 +- block/bfq-iosched.c | 291 +- block/bfq-iosched.h | 53 +- block/bfq-wf2q.c | 49 +- block/bio-integrity.c | 12 +- block/bio.c | 218 +- block/blk-cgroup.c | 123 +- block/blk-core.c | 276 +- block/blk-flush.c | 6 +- block/blk-integrity.c | 12 +- block/blk-iolatency.c | 230 +- block/blk-merge.c | 88 +- block/blk-mq-debugfs.c | 13 +- block/blk-mq-sched.h | 4 +- block/blk-mq-tag.c | 69 +- block/blk-mq.c | 211 +- block/blk-pm.c | 216 + block/blk-pm.h | 69 + block/blk-softirq.c | 5 +- block/blk-stat.c | 1 + block/blk-throttle.c | 54 +- block/blk.h | 73 +- block/bounce.c | 41 +- block/cfq-iosched.c | 16 +- block/elevator.c | 22 +- block/genhd.c | 19 +- block/kyber-iosched.c | 547 ++- drivers/block/DAC960.c | 7229 ---------------------------- drivers/block/DAC960.h | 4414 ----------------- drivers/block/Kconfig | 13 - drivers/block/Makefile | 1 - drivers/block/amiflop.c | 318 +- drivers/block/aoe/aoe.h | 5 +- drivers/block/aoe/aoeblk.c | 70 +- drivers/block/aoe/aoecmd.c | 19 +- drivers/block/aoe/aoedev.c | 15 +- drivers/block/ataflop.c | 273 +- drivers/block/drbd/Kconfig | 1 - drivers/block/drbd/drbd_int.h | 15 +- drivers/block/drbd/drbd_main.c | 16 +- drivers/block/drbd/drbd_nl.c | 39 +- drivers/block/drbd/drbd_protocol.h | 4 +- drivers/block/drbd/drbd_receiver.c | 35 +- drivers/block/drbd/drbd_req.c | 2 +- drivers/block/drbd/drbd_worker.c | 65 +- drivers/block/floppy.c | 68 +- drivers/block/loop.c | 5 +- drivers/block/mtip32xx/mtip32xx.c | 49 +- drivers/block/null_blk_main.c | 111 +- drivers/block/paride/pcd.c | 88 +- drivers/block/paride/pd.c | 94 +- drivers/block/paride/pf.c | 56 +- drivers/block/pktcdvd.c | 2 +- drivers/block/ps3disk.c | 88 +- drivers/block/ps3vram.c | 2 +- drivers/block/rsxx/core.c | 2 +- drivers/block/rsxx/cregs.c | 2 +- drivers/block/rsxx/dev.c | 2 +- drivers/block/rsxx/dma.c | 52 +- drivers/block/skd_main.c | 69 +- drivers/block/sunvdc.c | 2 +- drivers/block/swim.c | 106 +- drivers/block/swim3.c | 211 +- drivers/block/sx8.c | 166 +- drivers/block/umem.c | 42 +- drivers/block/virtio_blk.c | 68 +- drivers/block/xen-blkfront.c | 2 +- drivers/block/xsysace.c | 80 +- drivers/block/z2ram.c | 87 +- drivers/block/zram/Kconfig | 2 - drivers/block/zram/zram_drv.c | 28 +- drivers/cdrom/cdrom.c | 29 +- drivers/cdrom/gdrom.c | 174 +- drivers/ide/ide-cd.c | 2 +- drivers/ide/ide-gd.c | 2 +- drivers/lightnvm/Kconfig | 3 +- drivers/lightnvm/core.c | 334 +- drivers/lightnvm/pblk-cache.c | 1 + drivers/lightnvm/pblk-core.c | 587 ++- drivers/lightnvm/pblk-gc.c | 11 +- drivers/lightnvm/pblk-init.c | 321 +- drivers/lightnvm/pblk-map.c | 13 +- drivers/lightnvm/pblk-rb.c | 110 +- drivers/lightnvm/pblk-read.c | 86 +- drivers/lightnvm/pblk-recovery.c | 471 +- drivers/lightnvm/pblk-rl.c | 5 +- drivers/lightnvm/pblk-sysfs.c | 12 +- drivers/lightnvm/pblk-trace.h | 145 + drivers/lightnvm/pblk-write.c | 90 +- drivers/lightnvm/pblk.h | 221 +- drivers/md/bcache/alloc.c | 2 +- drivers/md/bcache/bcache.h | 2 +- drivers/md/bcache/btree.c | 2 +- drivers/md/bcache/closure.h | 3 +- drivers/md/bcache/debug.c | 2 +- drivers/md/bcache/extents.c | 2 +- drivers/md/bcache/request.c | 9 +- drivers/md/bcache/request.h | 2 +- drivers/md/bcache/super.c | 113 +- drivers/md/bcache/sysfs.c | 2 + drivers/md/raid0.c | 2 +- drivers/memstick/core/ms_block.c | 2 +- drivers/memstick/core/mspro_block.c | 2 +- drivers/mmc/core/block.c | 2 +- drivers/mtd/mtd_blkdevs.c | 102 +- drivers/nvdimm/blk.c | 2 +- drivers/nvdimm/btt.c | 2 +- drivers/nvdimm/pmem.c | 2 +- drivers/nvme/host/core.c | 47 +- drivers/nvme/host/fabrics.c | 37 +- drivers/nvme/host/fabrics.h | 2 + drivers/nvme/host/fc.c | 153 +- drivers/nvme/host/lightnvm.c | 137 +- drivers/nvme/host/multipath.c | 79 +- drivers/nvme/host/nvme.h | 35 +- drivers/nvme/host/pci.c | 9 +- drivers/nvme/host/rdma.c | 78 +- drivers/nvme/host/trace.h | 28 + drivers/nvme/target/admin-cmd.c | 4 +- drivers/nvme/target/core.c | 3 +- drivers/nvme/target/discovery.c | 6 +- drivers/nvme/target/fc.c | 136 +- drivers/nvme/target/fcloop.c | 1 + drivers/nvme/target/io-cmd-bdev.c | 9 +- drivers/nvme/target/io-cmd-file.c | 3 +- drivers/nvme/target/nvmet.h | 1 + drivers/nvme/target/rdma.c | 19 +- drivers/s390/block/dasd_genhd.c | 2 +- drivers/s390/block/dcssblk.c | 2 +- drivers/s390/block/scm_blk.c | 2 +- drivers/scsi/scsi_lib.c | 11 +- drivers/scsi/scsi_pm.c | 1 + drivers/scsi/sd.c | 3 +- drivers/scsi/sr.c | 3 +- drivers/target/target_core_spc.c | 6 +- drivers/xen/biomerge.c | 3 +- drivers/xen/xen-acpi-pad.c | 1 + fs/buffer.c | 10 +- fs/ext4/page-io.c | 2 +- include/linux/amifd.h | 63 - include/linux/amifdreg.h | 82 - include/linux/bio.h | 78 +- include/linux/blk-cgroup.h | 145 +- include/linux/blk-mq.h | 4 + include/linux/blk-pm.h | 24 + include/linux/blk_types.h | 1 - include/linux/blkdev.h | 164 +- include/linux/bvec.h | 3 - include/linux/cgroup.h | 2 + include/linux/elevator.h | 2 +- include/linux/genhd.h | 5 +- include/linux/lightnvm.h | 166 +- include/linux/mtd/blktrans.h | 5 +- include/linux/nvme.h | 1 + include/linux/percpu-refcount.h | 1 + include/linux/writeback.h | 5 +- include/trace/events/kyber.h | 96 + include/xen/xen.h | 4 + kernel/cgroup/cgroup.c | 48 +- kernel/trace/blktrace.c | 4 +- lib/percpu-refcount.c | 28 +- mm/page_io.c | 2 +- 181 files changed, 5670 insertions(+), 16863 deletions(-) delete mode 100644 Documentation/blockdev/README.DAC960 delete mode 100644 arch/m68k/include/asm/atafd.h delete mode 100644 arch/m68k/include/asm/atafdreg.h create mode 100644 block/blk-pm.c create mode 100644 block/blk-pm.h delete mode 100644 drivers/block/DAC960.c delete mode 100644 drivers/block/DAC960.h create mode 100644 drivers/lightnvm/pblk-trace.h delete mode 100644 include/linux/amifd.h delete mode 100644 include/linux/amifdreg.h create mode 100644 include/linux/blk-pm.h create mode 100644 include/trace/events/kyber.h -- Jens Axboe