Hi Linus, This is a rebase (and collapse of the fix with the original change) of the original driver pull request for this merge window, with the changes staged for a later pull queued into this branch as well. This pull request contains: - NVMe pull requests via Christoph - add support for In-Band authentication (Hannes Reinecke) - handle the persistent internal error AER (Michael Kelley) - use in-capsule data for TCP I/O queue connect (Caleb Sander) - remove timeout for getting RDMA-CM established event (Israel Rukshin) - misc cleanups (Joel Granados, Sagi Grimberg, Chaitanya Kulkarni, Guixin Liu, Xiang wangx) - use command_id instead of req->tag in trace_nvme_complete_rq() (Bean Huo) - various fixes for the new authentication code (Lukas Bulwahn, Dan Carpenter, Colin Ian King, Chaitanya Kulkarni, Hannes Reinecke) - small cleanups (Liu Song, Christoph Hellwig) - restore compat_ioctl support (Nick Bowler) - make a nvmet-tcp workqueue lockdep-safe (Sagi Grimberg) - enable generic interface (/dev/ngXnY) for unknown command sets (Joel Granados, Christoph Hellwig) - don't always build constants.o (Christoph Hellwig) - print the command name of aborted commands (Christoph Hellwig) - MD pull requests via Song - Improve raid5 lock contention, by Logan Gunthorpe. - Misc fixes to raid5, by Logan Gunthorpe. - Fix race condition with md_reap_sync_thread(), by Guoqing Jiang. - Fix potential deadlock with raid5_quiesce and raid5_get_active_stripe, by Logan Gunthorpe. - Refactoring md_alloc(), by Christoph" - Fix md disk_name lifetime problems, by Christoph Hellwig - Convert prepare_to_wait() to wait_woken() api, by Logan Gunthorpe; - Fix sectors_to_do bitmap issue, by Logan Gunthorpe. - Work on unifying the null_blk module parameters and configfs API (Vincent) - drbd bitmap IO error fix (Lars) - Set of rnbd fixes (Guoqing, Md Haris) - Remove experimental marker on bcache async device registration (Coly) - Series from cleaning up the bio splitting (Christoph) - Removal of the sx8 block driver. This hardware never really widespread, and it didn't receive a lot of attention after the initial merge of it back in 2005 (Christoph) - A few fixes for s390 dasd (Eric, Jiang) - Followup set of fixes for ublk (Ming) - Support for UBLK_IO_NEED_GET_DATA for ublk (ZiyangZhang) - Fixes for the dio dma alignment (Keith) - Misc fixes and cleanups (Ming, Yu, Dan, Christophe Please pull! The following changes since commit 8374cfe647a1f360be3228b949dd6d753c55c19c: Merge tag 'for-6.0/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm (2022-08-02 14:21:25 -0700) are available in the Git repository at: git://git.kernel.dk/linux-block.git tags/for-5.20/block-2022-08-04 for you to fetch changes up to bc792884b76f0da2f5c9a8d720e430e2de9756f5: s390/dasd: Establish DMA alignment (2022-08-04 16:19:15 -0600) ---------------------------------------------------------------- for-5.20/block-2022-08-04 ---------------------------------------------------------------- Bean Huo (1): nvme: use command_id instead of req->tag in trace_nvme_complete_rq() Caleb Sander (1): nvme-tcp: use in-capsule data for I/O connect Chaitanya Kulkarni (4): nvme: remove unused timeout parameter nvme: fix qid param blk_mq_alloc_request_hctx nvmet-auth: fix return value check in auth send nvmet-auth: fix return value check in auth receive Chris Webb (1): md: Explicitly create command-line configured devices Christoph Hellwig (34): md: fix mddev->kobj lifetime md: fix error handling in md_alloc md: implement ->free_disk md: rename md_free to md_kobj_release md: factor out the rdev overlaps check from rdev_size_store md: stop using for_each_mddev in md_do_sync md: stop using for_each_mddev in md_notify_reboot md: stop using for_each_mddev in md_exit md: only delete entries from all_mddevs when the disk is freed md: simplify md_open remove the sx8 block driver md: open code md_probe in autorun_devices md: return the allocated devices from md_alloc nvme: don't always build constants.o nvme-pci: print the command name of aborted commands nvme-pci: split nvme_alloc_admin_tags nvme-pci: split nvme_dev_add nvme-rdma: split nvme_rdma_alloc_tagset nvme-tcp: split nvme_tcp_alloc_tagset nvme-apple: stop casting function pointer signatures nvmet: don't check for NULL pointer before kfree in nvmet_host_release nvmet: fix a format specifier in nvmet_auth_ctrl_exponential nvme: catch -ENODEV from nvme_revalidate_zones again nvme: rename nvme_validate_or_alloc_ns to nvme_scan_ns nvme: generalize the nvme_multi_css check in nvme_scan_ns nvme: refactor namespace probing nvme: factor out a nvme_ns_is_readonly helper nvme: update MAINTAINERS for the new auth code block: change the blk_queue_split calling convention block: change the blk_queue_bounce calling convention block: move ->bio_split to the gendisk block: move the call to get_max_io_size out of blk_bio_segment_split block: move bio_allowed_max_sectors to blk-merge.c block: pass struct queue_limits to the bio splitting helpers Christophe JAILLET (1): block: null_blk: Use the bitmap API to allocate bitmaps Colin Ian King (1): nvmet-auth: fix a couple of spelling mistakes Coly Li (1): bcache: remove EXPERIMENTAL for Kconfig option 'Asynchronous device registration' Dan Carpenter (3): null_blk: fix ida error handling in null_add_dev() nvme-auth: fix off by one checks nvme-auth: uninitialized variable in nvme_auth_transform_key() Eric Farman (1): s390/dasd: Establish DMA alignment Guixin Liu (2): nvme-pci: use nvme core helper to cancel requests in tagset nvme-apple: use nvme core helper to cancel requests in tagset Guoqing Jiang (9): md: unlock mddev before reap sync_thread in action_store rnbd-clt: open code send_msg_open in rnbd_clt_map_device rnbd-clt: don't free rsp in msg_open_conf for map scenario rnbd-clt: kill read_only from struct rnbd_clt_dev rnbd-clt: reduce the size of struct rnbd_clt_dev rnbd-clt: adjust the layout of struct rnbd_clt_dev rnbd-clt: check capacity inside rnbd_clt_change_capacity rnbd-clt: pass sector_t type for resize capacity rnbd-clt: make rnbd_clt_change_capacity return void Hannes Reinecke (11): crypto: add crypto_has_shash() crypto: add crypto_has_kpp() lib/base64: RFC4648-compliant base64 encoding nvme: add definitions for NVMe In-Band authentication nvme-fabrics: decode 'authentication required' connect error nvme: implement In-Band authentication nvme-auth: Diffie-Hellman key exchange support nvmet: parse fabrics commands on io queues nvmet: implement basic In-Band Authentication nvmet-auth: Diffie-Hellman key exchange support nvmet-auth: expire authentication sessions Israel Rukshin (1): nvme-rdma: remove timeout for getting RDMA-CM established event Jackie Liu (1): raid5: fix duplicate checks for rdev->saved_raid_disk Jiang Jian (1): s390/dasd: drop unexpected word 'for' in comments Joel Granados (2): nvme-multipath: refactor nvme_mpath_add_disk nvme: enable generic interface (/dev/ngXnY) for unknown command sets Keith Busch (3): block: ensure iov_iter advances for added pages block: ensure bio_iov_add_page can't fail block: fix leaking page ref on truncated direct io Lars Ellenberg (1): drbd: bm_page_async_io: fix spurious bitmap "IO error" on large volumes Liu Song (1): nvme-pci: remove useless assignment in nvme_pci_setup_prps Logan Gunthorpe (32): md/raid5-log: Drop extern decorators for function prototypes md/raid5-ppl: Drop unused argument from ppl_handle_flush_request() md/raid5: suspend the array for calls to log_exit() md/raid5-cache: Take mddev_lock in r5c_journal_mode_show() md/raid5-cache: Drop RCU usage of conf->log md/raid5-cache: Clear conf->log after finishing work md/raid5-cache: Annotate pslot with __rcu notation md: Use enum for overloaded magic numbers used by mddev->curr_resync md: Ensure resync is reported after it starts md: Notify sysfs sync_completed in md_reap_sync_thread() md/raid5: Make logic blocking check consistent with logic that blocks md/raid5: Factor out ahead_of_reshape() function md/raid5: Refactor raid5_make_request loop md/raid5: Move stripe_add_to_batch_list() call out of add_stripe_bio() md/raid5: Move common stripe get code into new find_get_stripe() helper md/raid5: Factor out helper from raid5_make_request() loop md/raid5: Drop the do_prepare flag in raid5_make_request() md/raid5: Move read_seqcount_begin() into make_stripe_request() md/raid5: Refactor for loop in raid5_make_request() into while loop md/raid5: Keep a reference to last stripe_head for batch md/raid5: Refactor add_stripe_bio() md/raid5: Check all disks in a stripe_head for reshape progress md/raid5: Pivot raid5_make_request() md/raid5: Improve debug prints md/raid5: Increase restriction on max segments per request md/raid5: Fix sectors_to_do bitmap overflow in raid5_make_request() md/raid5: Convert prepare_to_wait() to wait_woken() api md/raid5: Refactor raid5_get_active_stripe() md/raid5: Make is_inactive_blocked() helper md/raid5: Drop unnecessary call to r5c_check_stripe_cache_usage() md/raid5: Move stripe_request_ctx up md/raid5: Ensure batch_last is released before sleeping for quiesce Lukas Bulwahn (1): nvmet-auth: select the intended CRYPTO_DH_RFC7919_GROUPS Md Haris Iqbal (2): block/rnbd-srv: Set keep_id to true after mutex_trylock block/rnbd-srv: Replace sess_dev_list with index_idr Michael Kelley (1): nvme: handle the persistent internal error AER Mikulas Patocka (2): md-raid: destroy the bitmap after destroying the thread md-raid10: fix KASAN warning Ming Lei (4): ublk_drv: cancel device even though disk isn't up ublk_drv: fix ublk device leak in case that add_disk fails ublk_drv: add SET_PARAMS/GET_PARAMS control command ublk_drv: cleanup ublksrv_ctrl_dev_info Nick Bowler (1): nvme: define compat_ioctl again to unbreak 32-bit userspace. Sagi Grimberg (2): nvme-loop: use nvme core helpers to cancel all requests in a tagset nvmet-tcp: fix lockdep complaint on nvmet_tcp_wq flush during queue teardown Song Liu (1): MAINTAINERS: add patchwork link to linux-raid project Stephen Rothwell (1): md: fix build failure for !MODULE Vincent Fu (2): null_blk: add module parameters for 4 options null_blk: add configfs variables for 2 options Wentao_Liang (1): drivers:md:fix a potential use-after-free bug Xiang wangx (1): nvme: remove a double word in a comment Yang Li (1): md: remove unneeded semicolon Yu Kuai (1): nbd: add missing definition of pr_fmt Zhang Jiaming (1): md: Fix spelling mistake in comments ZiyangZhang (2): ublk_cmd.h: add one new ublk command: UBLK_IO_NEED_GET_DATA ublk_drv: add support for UBLK_IO_NEED_GET_DATA Documentation/block/null_blk.rst | 22 + MAINTAINERS | 4 +- block/bio-integrity.c | 2 +- block/bio.c | 51 +- block/blk-core.c | 9 +- block/blk-merge.c | 185 ++-- block/blk-mq.c | 6 +- block/blk-sysfs.c | 2 - block/blk.h | 47 +- block/bounce.c | 26 +- block/genhd.c | 8 +- crypto/kpp.c | 6 + crypto/shash.c | 6 + drivers/block/Kconfig | 9 - drivers/block/Makefile | 2 - drivers/block/drbd/drbd_bitmap.c | 49 +- drivers/block/drbd/drbd_req.c | 2 +- drivers/block/nbd.c | 6 +- drivers/block/null_blk/main.c | 108 ++- drivers/block/null_blk/null_blk.h | 2 + drivers/block/pktcdvd.c | 2 +- drivers/block/ps3vram.c | 2 +- drivers/block/rnbd/rnbd-clt-sysfs.c | 2 +- drivers/block/rnbd/rnbd-clt.c | 201 ++-- drivers/block/rnbd/rnbd-clt.h | 18 +- drivers/block/rnbd/rnbd-srv.c | 20 +- drivers/block/rnbd/rnbd-srv.h | 4 - drivers/block/sx8.c | 1582 -------------------------------- drivers/block/ublk_drv.c | 348 ++++++- drivers/md/bcache/Kconfig | 2 +- drivers/md/dm-raid.c | 1 + drivers/md/dm.c | 8 +- drivers/md/md-autodetect.c | 21 +- drivers/md/md-cluster.c | 4 +- drivers/md/md.c | 424 +++++---- drivers/md/md.h | 19 + drivers/md/raid10.c | 5 +- drivers/md/raid5-cache.c | 40 +- drivers/md/raid5-log.h | 77 +- drivers/md/raid5-ppl.c | 2 +- drivers/md/raid5.c | 727 ++++++++++----- drivers/md/raid5.h | 2 +- drivers/nvme/Kconfig | 1 + drivers/nvme/Makefile | 1 + drivers/nvme/common/Kconfig | 4 + drivers/nvme/common/Makefile | 7 + drivers/nvme/common/auth.c | 483 ++++++++++ drivers/nvme/host/Kconfig | 15 + drivers/nvme/host/Makefile | 4 +- drivers/nvme/host/apple.c | 28 +- drivers/nvme/host/auth.c | 1017 ++++++++++++++++++++ drivers/nvme/host/constants.c | 3 +- drivers/nvme/host/core.c | 490 +++++++--- drivers/nvme/host/fabrics.c | 94 +- drivers/nvme/host/fabrics.h | 7 + drivers/nvme/host/multipath.c | 9 +- drivers/nvme/host/nvme.h | 39 +- drivers/nvme/host/pci.c | 145 +-- drivers/nvme/host/rdma.c | 106 ++- drivers/nvme/host/tcp.c | 95 +- drivers/nvme/host/trace.c | 32 + drivers/nvme/host/trace.h | 2 +- drivers/nvme/target/Kconfig | 15 + drivers/nvme/target/Makefile | 1 + drivers/nvme/target/admin-cmd.c | 4 +- drivers/nvme/target/auth.c | 525 +++++++++++ drivers/nvme/target/configfs.c | 136 +++ drivers/nvme/target/core.c | 15 + drivers/nvme/target/fabrics-cmd-auth.c | 544 +++++++++++ drivers/nvme/target/fabrics-cmd.c | 55 +- drivers/nvme/target/loop.c | 8 +- drivers/nvme/target/nvmet.h | 75 +- drivers/nvme/target/tcp.c | 3 +- drivers/s390/block/dasd.c | 2 +- drivers/s390/block/dasd_diag.c | 1 + drivers/s390/block/dasd_eckd.c | 1 + drivers/s390/block/dcssblk.c | 2 +- include/crypto/hash.h | 2 + include/crypto/kpp.h | 2 + include/linux/base64.h | 16 + include/linux/blkdev.h | 5 +- include/linux/nvme-auth.h | 41 + include/linux/nvme.h | 213 ++++- include/uapi/linux/ublk_cmd.h | 80 +- lib/Makefile | 2 +- lib/base64.c | 103 +++ 86 files changed, 5640 insertions(+), 2856 deletions(-) delete mode 100644 drivers/block/sx8.c create mode 100644 drivers/nvme/common/Kconfig create mode 100644 drivers/nvme/common/Makefile create mode 100644 drivers/nvme/common/auth.c create mode 100644 drivers/nvme/host/auth.c create mode 100644 drivers/nvme/target/auth.c create mode 100644 drivers/nvme/target/fabrics-cmd-auth.c create mode 100644 include/linux/base64.h create mode 100644 include/linux/nvme-auth.h create mode 100644 lib/base64.c -- Jens Axboe