Hi Linus, First pull request for this merge window, there will also be a followup request with some stragglers. This pull request contains: - Fix for a thundering heard issue in the wbt block code (Anchal Agarwal) - A few NVMe pull requests: - Improved tracepoints (Keith) - Larger inline data support for RDMA (Steve Wise) - RDMA setup/teardown fixes (Sagi) - Effects log suppor for NVMe target (Chaitanya Kulkarni) - Buffered IO suppor for NVMe target (Chaitanya Kulkarni) - TP4004 (ANA) support (Christoph) - Various NVMe fixes - Block io-latency controller support. Much needed support for properly containing block devices. (Josef) - Series improving how we handle sense information on the stack (Kees) - Lightnvm fixes and updates/improvements (Mathias/Javier et al) - Zoned device support for null_blk (Matias) - AIX partition fixes (Mauricio Faria de Oliveira) - DIF checksum code made generic (Max Gurtovoy) - Add support for discard in iostats (Michael Callahan / Tejun) - Set of updates for BFQ (Paolo) - Removal of async write support for bsg (Christoph) - Bio page dirtying and clone fixups (Christoph) - Set of bcache fix/changes (via Coly) - Series improving blk-mq queue setup/teardown speed (Ming) - Series improving merging performance on blk-mq (Ming) - Lots of other fixes and cleanups from a slew of folks. Please pull! git://git.kernel.dk/linux-block.git tags/for-4.19/block-20180812 ---------------------------------------------------------------- Anchal Agarwal (1): blk-wbt: Avoid lock contention and thundering herd issue in wbt_wait Andy Shevchenko (1): nvmet: don't use uuid_le type Arnd Bergmann (2): block: iolatency: avoid 64-bit division bcache: stop using the deprecated get_seconds() Bart Van Assche (16): block: Remove a superfluous cast from blkdev_report_zones() include/uapi/linux/blkzoned.h: Remove a superfluous __packed directive block: Remove bdev_nr_zones() block: Inline blk_queue_nr_zones() block: Make struct request_queue smaller for CONFIG_BLK_DEV_ZONED=n drbd: Do not redefine __must_hold() block: Document how blk_update_request() handles RQF_SPECIAL_PAYLOAD requests lightnvm: Remove redundant rq->__data_len initialization block: Rename the null_blk_mod kernel module back into null_blk cfq: Annotate fall-through in a switch statement cfq: Suppress compiler warnings about comparisons block: Remove two superfluous #include directives blkcg: Introduce blkg_root_lookup() block: Introduce blk_exit_queue() block: Ensure that a request queue is dissociated from the cgroup controller blkcg: Make blkg_root_lookup() work for queues in bypass mode Chaitanya Kulkarni (6): nvmet: add commands supported and effects log page nvmet: add buffered I/O support for file backed ns nvmet: use Retain Async Event bit to clear AEN nvme.h: add support for ns write protect definitions nvme: set gendisk read only based on nsattr nvmet: add ns write protect support Christoph Hellwig (20): bsg: remove read/write support block: simplify bio_check_pages_dirty block: bio_set_pages_dirty can't see NULL bv_page in a valid bio_vec bcache: don't clone bio in bch_data_verify exofs: use bio_clone_fast in _write_mirror block: remove bio_clone_kmalloc md: remove a bogus comment block: unexport bio_clone_bioset nvme.h: add support for the log specific field nvme.h: add ANA definitions nvme: simplify the API for getting log pages nvme: remove nvme_req_needs_failover nvme: add ANA support nvmet: keep a port pointer in nvmet_ctrl nvmet: track and limit the number of namespaces per subsystem nvmet: add minimal ANA support nvmet: support configuring ANA groups scsi: build scsi_common.o for all scsi passthrough request users target: don't depend on SCSI target/loop: depend on SCSI Colin Ian King (4): block/floppy: remove redundant variable dflags loop: remove redundant pointer inode partitions/ldm: remove redundant pointer dgrp paride: remove redundant variable n Coly Li (9): bcache: do not check return value of debugfs_create_dir() bcache: display rate debug parameters to 0 when writeback is not running bcache: avoid unncessary cache prefetch bch_btree_node_get() bcache: add a comment in super.c bcache: fix mistaken code comments in bcache.h bcache: fix mistaken comments in request.c bcache: add code comments for bset.c bcache: set max writeback rate when I/O request is idle bcache: fix error setting writeback_rate through sysfs interface Dennis Zhou (Facebook) (1): block: make iolatency avg_lat exponentially decay Florian Schmaus (3): bcache: do not assign in if condition register_bcache() bcache: do not assign in if condition in bcache_init() bcache: do not assign in if condition in bcache_device_init() Geert Uytterhoeven (1): block: Add default switch case to blk_pm_allow_request() to kill warning Greg Edwards (3): block: move bio_integrity_{intervals,bytes} into blkdev.h scsi: virtio_scsi: fix pi_bytes{out,in} on 4 KiB block size devices block: bvec_nr_vecs() returns value for wrong slab Gustavo A. R. Silva (7): drbd: mark expected switch fall-throughs block/loop: mark expected switch fall-through lightnvm: pblk: mark expected switch fall-through nvme-rdma: mark expected switch fall-through aoe: mark expected switch fall-through xen-blkfront: use true and false for boolean values block: paride: pd: mark expected switch fall-throughs Hannes Reinecke (2): nvme: fixup crash on failed discovery nvme.h: fixup ANA group descriptor format Hans Holmberg (1): lightnvm: pblk: assume that chunks are closed on 1.2 devices Heiner Litz (1): lightnvm: pblk: add asynchronous partial read Helge Deller (1): block: skd: Use %pad printk format for dma_addr_t values James Smart (1): nvme: move init of keep_alive work item to controller initialization Jens Axboe (6): Merge branch 'nvme-4.19' of git://git.infradead.org/nvme into for-4.19/block t10-pi: provide empty t10_pi_complete() for !CONFIG_BLK_DEV_INTEGRITY Merge tag 'v4.18-rc6' into for-4.19/block2 Merge branch 'nvme-4.19' of git://git.infradead.org/nvme into for-4.19/block2 Merge branch 'nvme-4.19' of git://git.infradead.org/nvme into for-4.19/block null_blk: add lock drop/acquire annotation Jianchao Wang (1): blk-mq: count the hctx as active before allocating tag Jinbum Park (1): pktcdvd: Fix possible Spectre-v1 for pkt_devs Josef Bacik (20): block: add bi_blkg to the bio for cgroups block: introduce bio_issue_as_root_blkg blk-cgroup: allow controllers to output their own stats blk: introduce REQ_SWAP blkcg: add generic throttling mechanism blk-stat: export helpers for modifying blk_rq_stat blk-rq-qos: refactor out common elements of blk-wbt block: remove external dependency on wbt_flags rq-qos: introduce dio_bio callback block: introduce blk-iolatency io controller Documentation: add a doc for blk-iolatency mm: skip readahead if the cgroup is congested blk-iolatency: fix max_depth comparisons blk-iolatency: don't change the latency window blk-iolatency: truncate our current time blk-rq-qos: make depth comparisons unsigned block: don't account for split bio's size in cgroup stats blk-iolatency: fix blkg leak in timer_fn blk-cgroup: hold the queue ref during throttling blk-cgroup: clear the throttle queue on fork Juergen Gross (1): xen/blkfront: remove unused macros Kees Cook (7): ide-cd: Drop unused sense buffers scsi: cxlflash: Drop unused sense buffers block: Switch struct packet_command to use struct scsi_sense_hdr ide-cd: Remove redundant sense buffer cdrom: Use struct scsi_sense_hdr internally libata-scsi: Move sense buffers onto stack scsi: Check sense buffer size at build time Keith Busch (3): nvme: use hw qid in trace events nvme: add controller name to trace events nvme: add disk name to trace events Liu Bo (4): Blktrace: bail out early if block debugfs is not configured Block: blk-throttle: set low_valid immediately once one cgroup has io.low configured null_blk: remove NULLB_DEV_FL_CONFIGURED on turning off nullb device Blk-throttle: reduce tail io latency when iops limit is enforced Marcin Dziegielewski (1): lightnvm: pblk: handle case when mw_cunits equals to 0 Markus Stockhausen (1): readahead: stricter check for bdi io_pages Matias Bjørling (8): null_blk: move shared definitions to header file null_blk: add zone support lightnvm: move NVM_DEBUG to pblk lightnvm: pblk: enable line minor version detection lightnvm: pblk: fix read_bitmap for 32bit archs lightnvm: limit get chunk meta request size lightnvm: pblk: expose generic disk name on pr_* msgs lightnvm: remove minor version check for 2.0 Mauricio Faria de Oliveira (2): partitions/aix: fix usage of uninitialized lv_info and lvname structures partitions/aix: append null character to print data from disk Max Gurtovoy (5): nvmet-rdma: add unlikely check in the fast path nvmet-rdma: add an error flow for post_recv failures block: move ref_tag calculation func to the block layer block: move dif_prepare/dif_complete functions to block layer nvme: use blk API to remap ref tags for IOs with metadata Michael Callahan (4): block: Add part_stat_read_accum to read across field entries. block: Define and use STAT_READ and STAT_WRITE block: Add and use op_stat_group() for indexing disk_stat fields. block: Track DISCARD statistics and output them in stat and diskstat Mike Snitzer (1): block: allow max_discard_segments to be stacked Mikulas Patocka (1): block: fix infinite loop if the device loses discard capability Ming Lei (12): blk-mq: cleanup blk_mq_get_driver_tag() blk-mq: don't pass **hctx to blk_mq_mark_tag_wait() blk-mq: introduce new lock for protecting hctx->dispatch_wait blk-mq: remove synchronize_rcu() from blk_mq_del_queue_tag_set() blk-mq: avoid to synchronize rcu inside blk_cleanup_queue() blk-mq: use list_splice_tail_init() to insert requests blk-mq: only attempt to merge bio if there is rq in sw queue blk-mq: dequeue request one by one from sw queue if hctx is busy blk-mq: issue directly if hw queue isn't busy in case of 'none' blk-mq: fail the request in case issue failure block: really disable runtime-pm for blk-mq blk-mq: fix updating tags depth Minwoo Im (2): blk-mq: code clean-up by adding an API to clear set->mq_map blk-mq: fix typo in a function comment Paolo Valente (4): block, bfq: add/remove entity weights correctly block, bfq: do not expire a queue that will deserve dispatch plugging block, bfq: fix service being wrongly set to zero in case of preemption block, bfq: give a better name to bfq_bfqq_may_idle RAGHU Halharvi (1): pktcdvd: remove assignment in if condition Randy Dunlap (1): block/DAC960.c: fix defined but not used build warnings Revanth Rajashekar (1): nvme.h: resync with nvme-cli Sagi Grimberg (6): nvme: cache struct nvme_ctrl reference to struct nvme_request nvme-rdma: unquiesce queues when deleting the controller nvme-rdma: centralize controller setup sequence nvme-rdma: centralize admin/io queue teardown sequence nvmet: fix file discard return status nvmet: check fileio lba range access boundaries Shakeel Butt (1): block, mm: remove unnecessary __GFP_HIGH flag Shenghui Wang (3): bcache: free heap cache_set->flush_btree in bch_journal_free bcache: make the pr_err statement used for ENOENT only in sysfs_attatch section bcache: trivial - remove tailing backslash in macro BTREE_FLAG Steve Wise (2): nvme-rdma: support up to 4 segments of inline data nvmet-rdma: support max(16KB, PAGE_SIZE) inline data Tal Shorer (1): nvme-fabrics: fix ctrl_loss_tmo < 0 to reconnect forever Tang Junhui (4): bcache: simplify the calculation of the total amount of flash dirty data bcache: finish incremental GC bcache: calculate the number of incremental GC nodes according to the total of btree nodes bcache: fix I/O significant decline while backend devices registering Tejun Heo (4): swap,blkcg: issue swap io with the appropriate context memcontrol: schedule throttling if we are congested block: make bdev_ops->rw_page() take a REQ_OP instead of bool blkcg: Track DISCARD statistics and output them in cgroup io.stat Vladimir Zapolskiy (1): block: remove blkdev_entry_to_request() macro xiao jin (1): block: blk_init_allocated_queue() set q->fq as NULL in the fail case zhong jiang (4): block/bsg-lib: use PTR_ERR_OR_ZERO to simplify the flow path drivers/block/mtip32xx: remove the null check for debugfs_remove_recursive drivers/block/aoe/aoedev: NULL check is not needed for mempool_destroy drivers/block/drbd: remove the null check for kmem_cache_destroy Documentation/ABI/testing/procfs-diskstats | 10 + Documentation/admin-guide/cgroup-v2.rst | 92 ++- Documentation/block/null_blk.txt | 7 + Documentation/block/stat.txt | 28 +- Documentation/iostats.txt | 15 + block/Kconfig | 16 + block/Makefile | 4 +- block/bfq-iosched.c | 131 +++- block/bfq-iosched.h | 7 +- block/bfq-wf2q.c | 30 +- block/bio-integrity.c | 22 - block/bio.c | 208 +++--- block/blk-cgroup.c | 284 +++++++- block/blk-core.c | 106 +-- block/blk-ioc.c | 2 +- block/blk-iolatency.c | 955 ++++++++++++++++++++++++++ block/blk-lib.c | 10 + block/blk-mq-debugfs-zoned.c | 24 + block/blk-mq-debugfs.c | 24 +- block/blk-mq-debugfs.h | 9 + block/blk-mq-pci.c | 5 +- block/blk-mq-sched.c | 112 +-- block/blk-mq-tag.c | 11 +- block/blk-mq.c | 173 +++-- block/blk-mq.h | 13 +- block/blk-rq-qos.c | 194 ++++++ block/blk-rq-qos.h | 109 +++ block/blk-settings.c | 6 +- block/blk-stat.c | 16 +- block/blk-stat.h | 4 + block/blk-sysfs.c | 37 +- block/blk-throttle.c | 32 +- block/blk-wbt.c | 425 ++++++------ block/blk-wbt.h | 68 +- block/blk-zoned.c | 2 +- block/blk.h | 7 + block/bounce.c | 69 +- block/bsg-lib.c | 5 +- block/bsg.c | 460 +------------ block/cfq-iosched.c | 23 +- block/genhd.c | 29 +- block/partition-generic.c | 25 +- block/partitions/aix.c | 13 +- block/partitions/ldm.c | 3 - block/t10-pi.c | 110 +++ drivers/Makefile | 2 +- drivers/ata/libata-scsi.c | 18 +- drivers/block/DAC960.c | 9 +- drivers/block/Kconfig | 2 +- drivers/block/Makefile | 5 +- drivers/block/aoe/aoecmd.c | 1 + drivers/block/aoe/aoedev.c | 4 +- drivers/block/brd.c | 14 +- drivers/block/drbd/drbd_int.h | 2 - drivers/block/drbd/drbd_main.c | 12 +- drivers/block/drbd/drbd_receiver.c | 6 +- drivers/block/drbd/drbd_req.c | 4 +- drivers/block/drbd/drbd_worker.c | 4 +- drivers/block/floppy.c | 3 - drivers/block/loop.c | 3 +- drivers/block/mtip32xx/mtip32xx.c | 3 +- drivers/block/null_blk.h | 108 +++ drivers/block/{null_blk.c => null_blk_main.c} | 129 ++-- drivers/block/null_blk_zoned.c | 149 ++++ drivers/block/paride/bpck.c | 3 +- drivers/block/paride/pd.c | 2 + drivers/block/pktcdvd.c | 109 +-- drivers/block/rsxx/dev.c | 6 +- drivers/block/skd_main.c | 16 +- drivers/block/xen-blkfront.c | 9 +- drivers/block/zram/zram_drv.c | 19 +- drivers/cdrom/cdrom.c | 30 +- drivers/ide/ide-cd.c | 58 +- drivers/ide/ide-cd.h | 6 +- drivers/ide/ide-cd_ioctl.c | 62 +- drivers/infiniband/ulp/iser/iser_memory.c | 2 +- drivers/lightnvm/Kconfig | 30 +- drivers/lightnvm/pblk-cache.c | 9 +- drivers/lightnvm/pblk-core.c | 78 ++- drivers/lightnvm/pblk-gc.c | 34 +- drivers/lightnvm/pblk-init.c | 98 +-- drivers/lightnvm/pblk-rb.c | 24 +- drivers/lightnvm/pblk-read.c | 247 ++++--- drivers/lightnvm/pblk-recovery.c | 47 +- drivers/lightnvm/pblk-sysfs.c | 13 +- drivers/lightnvm/pblk-write.c | 35 +- drivers/lightnvm/pblk.h | 48 +- drivers/md/bcache/bcache.h | 24 +- drivers/md/bcache/bset.c | 63 ++ drivers/md/bcache/btree.c | 63 +- drivers/md/bcache/btree.h | 2 +- drivers/md/bcache/closure.c | 13 +- drivers/md/bcache/closure.h | 4 +- drivers/md/bcache/debug.c | 17 +- drivers/md/bcache/journal.c | 1 + drivers/md/bcache/request.c | 75 +- drivers/md/bcache/super.c | 59 +- drivers/md/bcache/sysfs.c | 48 +- drivers/md/bcache/util.c | 2 +- drivers/md/bcache/util.h | 2 +- drivers/md/bcache/writeback.c | 125 +++- drivers/md/bcache/writeback.h | 19 - drivers/md/dm.c | 6 +- drivers/md/md.c | 12 +- drivers/nvdimm/btt.c | 12 +- drivers/nvdimm/nd.h | 7 +- drivers/nvdimm/pmem.c | 13 +- drivers/nvme/host/core.c | 108 ++- drivers/nvme/host/fabrics.c | 2 +- drivers/nvme/host/fc.c | 1 + drivers/nvme/host/lightnvm.c | 27 +- drivers/nvme/host/multipath.c | 349 +++++++++- drivers/nvme/host/nvme.h | 78 ++- drivers/nvme/host/pci.c | 77 +-- drivers/nvme/host/rdma.c | 234 +++---- drivers/nvme/host/trace.c | 11 + drivers/nvme/host/trace.h | 142 ++-- drivers/nvme/target/admin-cmd.c | 221 +++++- drivers/nvme/target/configfs.c | 250 +++++++ drivers/nvme/target/core.c | 104 ++- drivers/nvme/target/discovery.c | 2 +- drivers/nvme/target/io-cmd-bdev.c | 7 + drivers/nvme/target/io-cmd-file.c | 80 ++- drivers/nvme/target/loop.c | 1 + drivers/nvme/target/nvmet.h | 62 +- drivers/nvme/target/rdma.c | 197 ++++-- drivers/scsi/Makefile | 2 +- drivers/scsi/cxlflash/superpipe.c | 8 +- drivers/scsi/cxlflash/vlun.c | 7 +- drivers/scsi/mpt3sas/mpt3sas_scsih.c | 2 +- drivers/scsi/scsi_lib.c | 6 +- drivers/scsi/sd.c | 8 +- drivers/scsi/sd.h | 9 - drivers/scsi/sd_dif.c | 113 --- drivers/scsi/sr_ioctl.c | 22 +- drivers/scsi/virtio_scsi.c | 8 +- drivers/target/Kconfig | 5 +- drivers/target/loopback/Kconfig | 1 + fs/block_dev.c | 6 +- fs/exofs/ore.c | 4 +- fs/ext4/super.c | 5 +- fs/ext4/sysfs.c | 6 +- fs/f2fs/f2fs.h | 2 +- fs/f2fs/super.c | 3 +- fs/mpage.c | 4 +- include/linux/bio.h | 19 +- include/linux/blk-cgroup.h | 146 +++- include/linux/blk-mq.h | 4 +- include/linux/blk_types.h | 27 +- include/linux/blkdev.h | 66 +- include/linux/cdrom.h | 3 +- include/linux/cgroup-defs.h | 3 + include/linux/genhd.h | 14 +- include/linux/memcontrol.h | 13 + include/linux/nvme.h | 72 +- include/linux/sched.h | 8 + include/linux/swap.h | 11 +- include/linux/t10-pi.h | 24 + include/linux/tracehook.h | 2 + include/scsi/scsi_cmnd.h | 13 +- include/scsi/scsi_device.h | 14 +- include/uapi/linux/bcache.h | 4 +- include/uapi/linux/blkzoned.h | 2 +- kernel/fork.c | 5 + kernel/trace/blktrace.c | 6 +- mm/huge_memory.c | 6 +- mm/memcontrol.c | 13 + mm/memory.c | 11 +- mm/page_io.c | 3 +- mm/readahead.c | 19 +- mm/shmem.c | 10 +- mm/swapfile.c | 31 + 172 files changed, 6029 insertions(+), 2659 deletions(-) create mode 100644 block/blk-iolatency.c create mode 100644 block/blk-mq-debugfs-zoned.c create mode 100644 block/blk-rq-qos.c create mode 100644 block/blk-rq-qos.h create mode 100644 drivers/block/null_blk.h rename drivers/block/{null_blk.c => null_blk_main.c} (95%) create mode 100644 drivers/block/null_blk_zoned.c -- Jens Axboe