20 Jan, 2021

6 commits

  • This is the 5.10.9 stable release

    * tag 'v5.10.9': (153 commits)
    Linux 5.10.9
    netfilter: nf_nat: Fix memleak in nf_nat_init
    netfilter: conntrack: fix reading nf_conntrack_buckets
    ...

    Signed-off-by: Jason Liu

    Jason Liu
     
  • This is the 5.10.8 stable release

    * tag 'v5.10.8': (104 commits)
    Linux 5.10.8
    tools headers UAPI: Sync linux/fscrypt.h with the kernel sources
    drm/panfrost: Remove unused variables in panfrost_job_close()
    ...

    Signed-off-by: Jason Liu

    Jason Liu
     
  • This is the 5.10.7 stable release

    * tag 'v5.10.7': (144 commits)
    Linux 5.10.7
    scsi: target: Fix XCOPY NAA identifier lookup
    rtlwifi: rise completion at the last step of firmware callback
    ...

    Signed-off-by: Jason Liu

    Jason Liu
     
  • This is the 5.10.5 stable release

    * tag 'v5.10.5': (63 commits)
    Linux 5.10.5
    device-dax: Fix range release
    ext4: avoid s_mb_prefetch to be zero in individual scenarios
    ...

    Signed-off-by: Jason Liu

    Jason Liu
     
  • [ Upstream commit 02f938e9fed1681791605ca8b96c2d9da9355f6a ]

    Showing the hctx flags for when BLK_MQ_F_TAG_HCTX_SHARED is set gives
    something like:

    root@debian:/home/john# more /sys/kernel/debug/block/sda/hctx0/flags
    alloc_policy=FIFO SHOULD_MERGE|TAG_QUEUE_SHARED|3

    Add the decoding for that flag.

    Fixes: 32bc15afed04b ("blk-mq: Facilitate a shared sbitmap per tagset")
    Signed-off-by: John Garry
    Signed-off-by: Jens Axboe
    Signed-off-by: Sasha Levin

    John Garry
     
  • [ Upstream commit 6d4d273588378c65915acaf7b2ee74e9dd9c130a ]

    BFQ computes number of tags it allows to be allocated for each request type
    based on tag bitmap. However it uses 1 << bitmap.shift as number of
    available tags which is wrong. 'shift' is just an internal bitmap value
    containing logarithm of how many bits bitmap uses in each bitmap word.
    Thus number of tags allowed for some request types can be far to low.
    Use proper bitmap.depth which has the number of tags instead.

    Signed-off-by: Jan Kara
    Signed-off-by: Jens Axboe
    Signed-off-by: Sasha Levin

    Jan Kara
     

17 Jan, 2021

1 commit

  • commit aebf5db917055b38f4945ed6d621d9f07a44ff30 upstream.

    Make sure that bdgrab() is done on the 'block_device' instance before
    referring to it for avoiding use-after-free.

    Cc:
    Reported-by: syzbot+825f0f9657d4e528046e@syzkaller.appspotmail.com
    Signed-off-by: Ming Lei
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Jens Axboe
    Signed-off-by: Greg Kroah-Hartman

    Ming Lei
     

13 Jan, 2021

5 commits

  • commit d16baa3f1453c14d680c5fee01cd122a22d0e0ce upstream.

    When initializing iocost for a queue, its rqos should be registered before
    the blkcg policy is activated to allow policy data initiailization to lookup
    the associated ioc. This unfortunately means that the rqos methods can be
    called on bios before iocgs are attached to all existing blkgs.

    While the race is theoretically possible on ioc_rqos_throttle(), it mostly
    happened in ioc_rqos_merge() due to the difference in how they lookup ioc.
    The former determines it from the passed in @rqos and then bails before
    dereferencing iocg if the looked up ioc is disabled, which most likely is
    the case if initialization is still in progress. The latter looked up ioc by
    dereferencing the possibly NULL iocg making it a lot more prone to actually
    triggering the bug.

    * Make ioc_rqos_merge() use the same method as ioc_rqos_throttle() to look
    up ioc for consistency.

    * Make ioc_rqos_throttle() and ioc_rqos_merge() test for NULL iocg before
    dereferencing it.

    * Explain the danger of NULL iocgs in blk_iocost_init().

    Signed-off-by: Tejun Heo
    Reported-by: Jonathan Lemon
    Cc: stable@vger.kernel.org # v5.4+
    Signed-off-by: Jens Axboe
    Signed-off-by: Greg Kroah-Hartman

    Tejun Heo
     
  • [ Upstream commit 52abca64fd9410ea6c9a3a74eab25663b403d7da ]

    blk_queue_enter() accepts BLK_MQ_REQ_PM requests independent of the runtime
    power management state. Now that SCSI domain validation no longer depends
    on this behavior, modify the behavior of blk_queue_enter() as follows:

    - Do not accept any requests while suspended.

    - Only process power management requests while suspending or resuming.

    Submitting BLK_MQ_REQ_PM requests to a device that is runtime suspended
    causes runtime-suspended devices not to resume as they should. The request
    which should cause a runtime resume instead gets issued directly, without
    resuming the device first. Of course the device can't handle it properly,
    the I/O fails, and the device remains suspended.

    The problem is fixed by checking that the queue's runtime-PM status isn't
    RPM_SUSPENDED before allowing a request to be issued, and queuing a
    runtime-resume request if it is. In particular, the inline
    blk_pm_request_resume() routine is renamed blk_pm_resume_queue() and the
    code is unified by merging the surrounding checks into the routine. If the
    queue isn't set up for runtime PM, or there currently is no restriction on
    allowed requests, the request is allowed. Likewise if the BLK_MQ_REQ_PM
    flag is set and the status isn't RPM_SUSPENDED. Otherwise a runtime resume
    is queued and the request is blocked until conditions are more suitable.

    [ bvanassche: modified commit message and removed Cc: stable because
    without the previous patches from this series this patch would break
    parallel SCSI domain validation + introduced queue_rpm_status() ]

    Link: https://lore.kernel.org/r/20201209052951.16136-9-bvanassche@acm.org
    Cc: Jens Axboe
    Cc: Christoph Hellwig
    Cc: Hannes Reinecke
    Cc: Can Guo
    Cc: Stanley Chu
    Cc: Ming Lei
    Cc: Rafael J. Wysocki
    Reported-and-tested-by: Martin Kepplinger
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Can Guo
    Signed-off-by: Alan Stern
    Signed-off-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin

    Alan Stern
     
  • [ Upstream commit a4d34da715e3cb7e0741fe603dcd511bed067e00 ]

    Remove flag RQF_PREEMPT and BLK_MQ_REQ_PREEMPT since these are no longer
    used by any kernel code.

    Link: https://lore.kernel.org/r/20201209052951.16136-8-bvanassche@acm.org
    Cc: Can Guo
    Cc: Stanley Chu
    Cc: Alan Stern
    Cc: Ming Lei
    Cc: Rafael J. Wysocki
    Cc: Martin Kepplinger
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Jens Axboe
    Reviewed-by: Can Guo
    Signed-off-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin

    Bart Van Assche
     
  • [ Upstream commit 0854bcdcdec26aecdc92c303816f349ee1fba2bc ]

    Introduce the BLK_MQ_REQ_PM flag. This flag makes the request allocation
    functions set RQF_PM. This is the first step towards removing
    BLK_MQ_REQ_PREEMPT.

    Link: https://lore.kernel.org/r/20201209052951.16136-3-bvanassche@acm.org
    Cc: Alan Stern
    Cc: Stanley Chu
    Cc: Ming Lei
    Cc: Rafael J. Wysocki
    Cc: Can Guo
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Jens Axboe
    Reviewed-by: Can Guo
    Signed-off-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin

    Bart Van Assche
     
  • [ Upstream commit dc30432605bbbd486dfede3852ea4d42c40a84b4 ]

    This was missed in 021a24460dc2. Leads to the numeric value of
    QUEUE_FLAG_NOWAIT (i.e. 29) showing up in
    /sys/kernel/debug/block/*/state.

    Fixes: 021a24460dc28e7412aecfae89f60e1847e685c0
    Cc: Konstantin Khlebnikov
    Cc: Mike Snitzer
    Cc: Christoph Hellwig
    Cc: Jens Axboe
    Signed-off-by: Andres Freund
    Signed-off-by: Jens Axboe
    Signed-off-by: Sasha Levin

    Andres Freund
     

06 Jan, 2021

1 commit

  • commit fa4d0f1992a96f6d7c988ef423e3127e613f6ac9 upstream.

    With the current implementation the following race can happen:

    * blk_pre_runtime_suspend() calls blk_freeze_queue_start() and
    blk_mq_unfreeze_queue().

    * blk_queue_enter() calls blk_queue_pm_only() and that function returns
    true.

    * blk_queue_enter() calls blk_pm_request_resume() and that function does
    not call pm_request_resume() because the queue runtime status is
    RPM_ACTIVE.

    * blk_pre_runtime_suspend() changes the queue status into RPM_SUSPENDING.

    Fix this race by changing the queue runtime status into RPM_SUSPENDING
    before switching q_usage_counter to atomic mode.

    Link: https://lore.kernel.org/r/20201209052951.16136-2-bvanassche@acm.org
    Fixes: 986d413b7c15 ("blk-mq: Enable support for runtime power management")
    Cc: Ming Lei
    Cc: Rafael J. Wysocki
    Cc: stable
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Jens Axboe
    Acked-by: Alan Stern
    Acked-by: Stanley Chu
    Co-developed-by: Can Guo
    Signed-off-by: Can Guo
    Signed-off-by: Bart Van Assche
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Greg Kroah-Hartman

    Bart Van Assche
     

14 Dec, 2020

1 commit

  • errata:
    When a read command returns less data than specified in the PRDs (for
    example, there are two PRDs for this command, but the device returns a
    number of bytes which is less than in the first PRD), the second PRD of
    this command is not read out of the PRD FIFO, causing the next command
    to use this PRD erroneously.

    workaround
    - forces sg_tablesize = 1
    - modified the sg_io function in block/scsi_ioctl.c to use a 64k buffer
    allocated with dma_alloc_coherent during the probe in ahci_imx
    - In order to fix the scsi/sata hang, when CD_ROM and HDD are
    accessed simultaneously after the workaround is applied.
    Do not go to sleep in scsi_eh_handler, when there is host failed.

    Signed-off-by: Richard Zhu

    Richard Zhu
     

06 Dec, 2020

1 commit


05 Dec, 2020

2 commits

  • …evice-mapper/linux-dm

    Pull device mapper fixes from Mike Snitzer:

    - Fix DM's bio splitting changes that were made during v5.9. This
    restores splitting in terms of varied per-target ti->max_io_len
    rather than use block core's single stacked 'chunk_sectors' limit.

    - Like DM crypt, update DM integrity to not use crypto drivers that
    have CRYPTO_ALG_ALLOCATES_MEMORY set.

    - Fix DM writecache target's argument parsing and status display.

    - Remove needless BUG() from dm writecache's persistent_memory_claim()

    - Remove old gcc workaround in DM cache target's block_div() for ARM
    link errors now that gcc >= 4.9 is required.

    - Fix RCU locking in dm_blk_report_zones and dm_dax_zero_page_range.

    - Remove old, and now frowned upon, BUG_ON(in_interrupt()) in
    dm_table_event().

    - Remove invalid sparse annotations from dm_prepare_ioctl() and
    dm_unprepare_ioctl().

    * tag 'for-5.10/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm: remove invalid sparse __acquires and __releases annotations
    dm: fix double RCU unlock in dm_dax_zero_page_range() error path
    dm: fix IO splitting
    dm writecache: remove BUG() and fail gracefully instead
    dm table: Remove BUG_ON(in_interrupt())
    dm: fix bug with RCU locking in dm_blk_report_zones
    Revert "dm cache: fix arm link errors with inline"
    dm writecache: fix the maximum number of arguments
    dm writecache: advance the number of arguments when reporting max_age
    dm integrity: don't use drivers that have CRYPTO_ALG_ALLOCATES_MEMORY

    Linus Torvalds
     
  • Commit 882ec4e609c1 ("dm table: stack 'chunk_sectors' limit to account
    for target-specific splitting") caused a couple regressions:
    1) Using lcm_not_zero() when stacking chunk_sectors was a bug because
    chunk_sectors must reflect the most limited of all devices in the
    IO stack.
    2) DM targets that set max_io_len but that do _not_ provide an
    .iterate_devices method no longer had there IO split properly.

    And commit 5091cdec56fa ("dm: change max_io_len() to use
    blk_max_size_offset()") also caused a regression where DM no longer
    supported varied (per target) IO splitting. The implication being the
    potential for severely reduced performance for IO stacks that use a DM
    target like dm-cache to hide performance limitations of a slower
    device (e.g. one that requires 4K IO splitting).

    Coming full circle: Fix all these issues by discontinuing stacking
    chunk_sectors up using ti->max_io_len in dm_calculate_queue_limits(),
    add optional chunk_sectors override argument to blk_max_size_offset()
    and update DM's max_io_len() to pass ti->max_io_len to its
    blk_max_size_offset() call.

    Passing in an optional chunk_sectors override to blk_max_size_offset()
    allows for code reuse of block's centralized calculation for max IO
    size based on provided offset and split boundary.

    Fixes: 882ec4e609c1 ("dm table: stack 'chunk_sectors' limit to account for target-specific splitting")
    Fixes: 5091cdec56fa ("dm: change max_io_len() to use blk_max_size_offset()")
    Cc: stable@vger.kernel.org
    Reported-by: John Dorminy
    Reported-by: Bruce Johnston
    Reported-by: Kirill Tkhai
    Reviewed-by: John Dorminy
    Signed-off-by: Mike Snitzer
    Reviewed-by: Jens Axboe

    Mike Snitzer
     

02 Dec, 2020

1 commit

  • commit 22ada802ede8 ("block: use lcm_not_zero() when stacking
    chunk_sectors") broke chunk_sectors limit stacking. chunk_sectors must
    reflect the most limited of all devices in the IO stack.

    Otherwise malformed IO may result. E.g.: prior to this fix,
    ->chunk_sectors = lcm_not_zero(8, 128) would result in
    blk_max_size_offset() splitting IO at 128 sectors rather than the
    required more restrictive 8 sectors.

    And since commit 07d098e6bbad ("block: allow 'chunk_sectors' to be
    non-power-of-2") care must be taken to properly stack chunk_sectors to
    be compatible with the possibility that a non-power-of-2 chunk_sectors
    may be stacked. This is why gcd() is used instead of reverting back
    to using min_not_zero().

    Fixes: 22ada802ede8 ("block: use lcm_not_zero() when stacking chunk_sectors")
    Fixes: 07d098e6bbad ("block: allow 'chunk_sectors' to be non-power-of-2")
    Reported-by: John Dorminy
    Reported-by: Bruce Johnston
    Signed-off-by: Mike Snitzer
    Reviewed-by: John Dorminy
    Cc: stable@vger.kernel.org
    Reviewed-by: Martin K. Petersen
    Signed-off-by: Jens Axboe

    Mike Snitzer
     

21 Nov, 2020

1 commit

  • If there is only one keyslot, then blk_ksm_init() computes
    slot_hashtable_size=1 and log_slot_ht_size=0. This causes
    blk_ksm_find_keyslot() to crash later because it uses
    hash_ptr(key, log_slot_ht_size) to find the hash bucket containing the
    key, and hash_ptr() doesn't support the bits == 0 case.

    Fix this by making the hash table always have at least 2 buckets.

    Tested by running:

    kvm-xfstests -c ext4 -g encrypt -m inlinecrypt \
    -o blk-crypto-fallback.num_keyslots=1

    Fixes: 1b2628397058 ("block: Keyslot Manager for Inline Encryption")
    Signed-off-by: Eric Biggers
    Signed-off-by: Jens Axboe

    Eric Biggers
     

15 Nov, 2020

1 commit


14 Nov, 2020

1 commit

  • For avoiding use-after-free on flush request, we call its .end_io() from
    both timeout code path and __blk_mq_end_request().

    When flush request's ref doesn't drop to zero, it is still used, we
    can't mark it as IDLE, so fix it by marking IDLE when its refcount drops
    to zero really.

    Fixes: 65ff5cd04551 ("blk-mq: mark flush request as IDLE in flush_end_io()")
    Signed-off-by: Ming Lei
    Cc: Yi Zhang
    Signed-off-by: Jens Axboe

    Ming Lei
     

13 Nov, 2020

1 commit


30 Oct, 2020

1 commit

  • Mark flush request as IDLE in its .end_io(), aligning it with how normal
    requests behave. The flush request stays in in-flight tags if we're not
    using an IO scheduler, so we need to change its state into IDLE.
    Otherwise, we will hang in blk_mq_tagset_wait_completed_request() during
    error recovery because flush the request state is kept as COMPLETED.

    Reported-by: Yi Zhang
    Signed-off-by: Ming Lei
    Tested-by: Yi Zhang
    Cc: Chao Leng
    Cc: Sagi Grimberg
    Signed-off-by: Jens Axboe

    Ming Lei
     

28 Oct, 2020

1 commit

  • When the bio's size reaches max_append_sectors, bio_add_hw_page returns
    0 then __bio_iov_append_get_pages returns -EINVAL. This is an expected
    result of building a small enough bio not to be split in the IO path.
    However, iov_iter is not advanced in this case, causing the same pages
    are filled for the bio again and again.

    Fix the case by properly advancing the iov_iter for already processed
    pages.

    Fixes: 0512a75b98f8 ("block: Introduce REQ_OP_ZONE_APPEND")
    Cc: stable@vger.kernel.org # 5.8+
    Reviewed-by: Johannes Thumshirn
    Signed-off-by: Naohiro Aota
    Signed-off-by: Jens Axboe

    Naohiro Aota
     

26 Oct, 2020

2 commits

  • Similarly to commit 457e490f2b741 ("blkcg: allocate struct blkcg_gq
    outside request queue spinlock"), blkg_create can also trigger
    occasional -ENOMEM failures at the radix insertion because any
    allocation inside blkg_create has to be non-blocking, making it more
    likely to fail. This causes trouble for userspace tools trying to
    configure io weights who need to deal with this condition.

    This patch reduces the occurrence of -ENOMEMs on this path by preloading
    the radix tree element on a GFP_KERNEL context, such that we guarantee
    the later non-blocking insertion won't fail.

    A similar solution exists in blkcg_init_queue for the same situation.

    Acked-by: Tejun Heo
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jens Axboe

    Gabriel Krisman Bertazi
     
  • If new_blkg allocation raced with blk_policy change and
    blkg_lookup_check fails, new_blkg is leaked.

    Acked-by: Tejun Heo
    Signed-off-by: Gabriel Krisman Bertazi
    Signed-off-by: Jens Axboe

    Gabriel Krisman Bertazi
     

25 Oct, 2020

1 commit

  • Pull block fixes from Jens Axboe:

    - NVMe pull request from Christoph
    - rdma error handling fixes (Chao Leng)
    - fc error handling and reconnect fixes (James Smart)
    - fix the qid displace when tracing ioctl command (Keith Busch)
    - don't use BLK_MQ_REQ_NOWAIT for passthru (Chaitanya Kulkarni)
    - fix MTDT for passthru (Logan Gunthorpe)
    - blacklist Write Same on more devices (Kai-Heng Feng)
    - fix an uninitialized work struct (zhenwei pi)"

    - lightnvm out-of-bounds fix (Colin)

    - SG allocation leak fix (Doug)

    - rnbd fixes (Gioh, Guoqing, Jack)

    - zone error translation fixes (Keith)

    - kerneldoc markup fix (Mauro)

    - zram lockdep fix (Peter)

    - Kill unused io_context members (Yufen)

    - NUMA memory allocation cleanup (Xianting)

    - NBD config wakeup fix (Xiubo)

    * tag 'block-5.10-2020-10-24' of git://git.kernel.dk/linux-block: (27 commits)
    block: blk-mq: fix a kernel-doc markup
    nvme-fc: shorten reconnect delay if possible for FC
    nvme-fc: wait for queues to freeze before calling update_hr_hw_queues
    nvme-fc: fix error loop in create_hw_io_queues
    nvme-fc: fix io timeout to abort I/O
    null_blk: use zone status for max active/open
    nvmet: don't use BLK_MQ_REQ_NOWAIT for passthru
    nvmet: cleanup nvmet_passthru_map_sg()
    nvmet: limit passthru MTDS by BIO_MAX_PAGES
    nvmet: fix uninitialized work for zero kato
    nvme-pci: disable Write Zeroes on Sandisk Skyhawk
    nvme: use queuedata for nvme_req_qid
    nvme-rdma: fix crash due to incorrect cqe
    nvme-rdma: fix crash when connect rejected
    block: remove unused members for io_context
    blk-mq: remove the calling of local_memory_node()
    zram: Fix __zram_bvec_{read,write}() locking order
    skd_main: remove unused including
    sgl_alloc_order: fix memory leak
    lightnvm: fix out-of-bounds write to array devices->info[]
    ...

    Linus Torvalds
     

24 Oct, 2020

1 commit


20 Oct, 2020

1 commit

  • We don't need to check whether the node is memoryless numa node before
    calling allocator interface. SLUB(and SLAB,SLOB) relies on the page
    allocator to pick a node. Page allocator should deal with memoryless
    nodes just fine. It has zonelists constructed for each possible nodes.
    And it will automatically fall back into a node which is closest to the
    requested node. As long as __GFP_THISNODE is not enforced of course.

    The code comments of kmem_cache_alloc_node() of SLAB also showed this:
    * Fallback to other node is possible if __GFP_THISNODE is not set.

    blk-mq code doesn't set __GFP_THISNODE, so we can remove the calling
    of local_memory_node().

    Signed-off-by: Xianting Tian
    Signed-off-by: Jens Axboe

    Xianting Tian
     

15 Oct, 2020

3 commits

  • Fix this warning:

    ./block/bio.c:1098: WARNING: Inline emphasis start-string without end-string.

    The thing is that *iter is not a valid markup.

    That seems to be a typo:
    *iter -> @iter

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • Using "@bio's parent" causes the following waring:
    ./block/bio.c:10: WARNING: Inline emphasis start-string without end-string.

    The main problem here is that this would be converted into:

    **bio**'s parent

    By kernel-doc, which is not a valid notation. It would be
    possible to use, instead, this kernel-doc markup:

    ``bio's`` parent

    Yet, here, is probably simpler to just use an altenative language:

    the parent of @bio

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • …/device-mapper/linux-dm

    Pull device mapper updates from Mike Snitzer:

    - Improve DM core's bio splitting to use blk_max_size_offset(). Also
    fix bio splitting for bios that were deferred to the worker thread
    due to a DM device being suspended.

    - Remove DM core's special handling of NVMe devices now that block core
    has internalized efficiencies drivers previously needed to be
    concerned about (via now removed direct_make_request).

    - Fix request-based DM to not bounce through indirect dm_submit_bio;
    instead have block core make direct call to blk_mq_submit_bio().

    - Various DM core cleanups to simplify and improve code.

    - Update DM cryot to not use drivers that set
    CRYPTO_ALG_ALLOCATES_MEMORY.

    - Fix DM raid's raid1 and raid10 discard limits for the purposes of
    linux-stable. But then remove DM raid's discard limits settings now
    that MD raid can efficiently handle large discards.

    - A couple small cleanups across various targets.

    * tag 'for-5.10/dm-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm: fix request-based DM to not bounce through indirect dm_submit_bio
    dm: remove special-casing of bio-based immutable singleton target on NVMe
    dm: export dm_copy_name_and_uuid
    dm: fix comment in __dm_suspend()
    dm: fold dm_process_bio() into dm_submit_bio()
    dm: fix missing imposition of queue_limits from dm_wq_work() thread
    dm snap persistent: simplify area_io()
    dm thin metadata: Remove unused local variable when create thin and snap
    dm raid: remove unnecessary discard limits for raid10
    dm raid: fix discard limits for raid1 and raid10
    dm crypt: don't use drivers that have CRYPTO_ALG_ALLOCATES_MEMORY
    dm: use dm_table_get_device_name() where appropriate in targets
    dm table: make 'struct dm_table' definition accessible to all of DM core
    dm: eliminate need for start_io_acct() forward declaration
    dm: simplify __process_abnormal_io()
    dm: push use of on-stack flush_bio down to __send_empty_flush()
    dm: optimize max_io_len() by inlining max_io_len_target_boundary()
    dm: push md->immutable_target optimization down to __process_bio()
    dm: change max_io_len() to use blk_max_size_offset()
    dm table: stack 'chunk_sectors' limit to account for target-specific splitting

    Linus Torvalds
     

14 Oct, 2020

3 commits

  • A zoned device with limited resources to open or activate zones may
    return an error when the host exceeds those limits. The same command may
    be successful if retried later, but the host needs to wait for specific
    zone states before it should expect a retry to succeed. Have the block
    layer provide an appropriate status for these conditions so applications
    can distinuguish this error for special handling.

    Cc: linux-api@vger.kernel.org
    Cc: Niklas Cassel
    Reviewed-by: Christoph Hellwig
    Reviewed-by: Damien Le Moal
    Reviewed-by: Johannes Thumshirn
    Reviewed-by: Martin K. Petersen
    Signed-off-by: Keith Busch
    Signed-off-by: Jens Axboe

    Keith Busch
     
  • Pull block driver updates from Jens Axboe:
    "Here are the driver updates for 5.10.

    A few SCSI updates in here too, in coordination with Martin as they
    depend on core block changes for the shared tag bitmap.

    This contains:

    - NVMe pull requests via Christoph:
    - fix keep alive timer modification (Amit Engel)
    - order the PCI ID list more sensibly (Andy Shevchenko)
    - cleanup the open by controller helper (Chaitanya Kulkarni)
    - use an xarray for the CSE log lookup (Chaitanya Kulkarni)
    - support ZNS in nvmet passthrough mode (Chaitanya Kulkarni)
    - fix nvme_ns_report_zones (Christoph Hellwig)
    - add a sanity check to nvmet-fc (James Smart)
    - fix interrupt allocation when too many polled queues are
    specified (Jeffle Xu)
    - small nvmet-tcp optimization (Mark Wunderlich)
    - fix a controller refcount leak on init failure (Chaitanya
    Kulkarni)
    - misc cleanups (Chaitanya Kulkarni)
    - major refactoring of the scanning code (Christoph Hellwig)

    - MD updates via Song:
    - Bug fixes in bitmap code, from Zhao Heming
    - Fix a work queue check, from Guoqing Jiang
    - Fix raid5 oops with reshape, from Song Liu
    - Clean up unused code, from Jason Yan
    - Discard improvements, from Xiao Ni
    - raid5/6 page offset support, from Yufen Yu

    - Shared tag bitmap for SCSI/hisi_sas/null_blk (John, Kashyap,
    Hannes)

    - null_blk open/active zone limit support (Niklas)

    - Set of bcache updates (Coly, Dongsheng, Qinglang)"

    * tag 'drivers-5.10-2020-10-12' of git://git.kernel.dk/linux-block: (78 commits)
    md/raid5: fix oops during stripe resizing
    md/bitmap: fix memory leak of temporary bitmap
    md: fix the checking of wrong work queue
    md/bitmap: md_bitmap_get_counter returns wrong blocks
    md/bitmap: md_bitmap_read_sb uses wrong bitmap blocks
    md/raid0: remove unused function is_io_in_chunk_boundary()
    nvme-core: remove extra condition for vwc
    nvme-core: remove extra variable
    nvme: remove nvme_identify_ns_list
    nvme: refactor nvme_validate_ns
    nvme: move nvme_validate_ns
    nvme: query namespace identifiers before adding the namespace
    nvme: revalidate zone bitmaps in nvme_update_ns_info
    nvme: remove nvme_update_formats
    nvme: update the known admin effects
    nvme: set the queue limits in nvme_update_ns_info
    nvme: remove the 0 lba_shift check in nvme_update_ns_info
    nvme: clean up the check for too large logic block sizes
    nvme: freeze the queue over ->lba_shift updates
    nvme: factor out a nvme_configure_metadata helper
    ...

    Linus Torvalds
     
  • Pull block updates from Jens Axboe:

    - Series of merge handling cleanups (Baolin, Christoph)

    - Series of blk-throttle fixes and cleanups (Baolin)

    - Series cleaning up BDI, seperating the block device from the
    backing_dev_info (Christoph)

    - Removal of bdget() as a generic API (Christoph)

    - Removal of blkdev_get() as a generic API (Christoph)

    - Cleanup of is-partition checks (Christoph)

    - Series reworking disk revalidation (Christoph)

    - Series cleaning up bio flags (Christoph)

    - bio crypt fixes (Eric)

    - IO stats inflight tweak (Gabriel)

    - blk-mq tags fixes (Hannes)

    - Buffer invalidation fixes (Jan)

    - Allow soft limits for zone append (Johannes)

    - Shared tag set improvements (John, Kashyap)

    - Allow IOPRIO_CLASS_RT for CAP_SYS_NICE (Khazhismel)

    - DM no-wait support (Mike, Konstantin)

    - Request allocation improvements (Ming)

    - Allow md/dm/bcache to use IO stat helpers (Song)

    - Series improving blk-iocost (Tejun)

    - Various cleanups (Geert, Damien, Danny, Julia, Tetsuo, Tian, Wang,
    Xianting, Yang, Yufen, yangerkun)

    * tag 'block-5.10-2020-10-12' of git://git.kernel.dk/linux-block: (191 commits)
    block: fix uapi blkzoned.h comments
    blk-mq: move cancel of hctx->run_work to the front of blk_exit_queue
    blk-mq: get rid of the dead flush handle code path
    block: get rid of unnecessary local variable
    block: fix comment and add lockdep assert
    blk-mq: use helper function to test hw stopped
    block: use helper function to test queue register
    block: remove redundant mq check
    block: invoke blk_mq_exit_sched no matter whether have .exit_sched
    percpu_ref: don't refer to ref->data if it isn't allocated
    block: ratelimit handle_bad_sector() message
    blk-throttle: Re-use the throtl_set_slice_end()
    blk-throttle: Open code __throtl_de/enqueue_tg()
    blk-throttle: Move service tree validation out of the throtl_rb_first()
    blk-throttle: Move the list operation after list validation
    blk-throttle: Fix IO hang for a corner case
    blk-throttle: Avoid tracking latency if low limit is invalid
    blk-throttle: Avoid getting the current time if tg->last_finish_time is 0
    blk-throttle: Remove a meaningless parameter for throtl_downgrade_state()
    block: Remove redundant 'return' statement
    ...

    Linus Torvalds
     

13 Oct, 2020

1 commit

  • Pull compat iovec cleanups from Al Viro:
    "Christoph's series around import_iovec() and compat variant thereof"

    * 'work.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    security/keys: remove compat_keyctl_instantiate_key_iov
    mm: remove compat_process_vm_{readv,writev}
    fs: remove compat_sys_vmsplice
    fs: remove the compat readv/writev syscalls
    fs: remove various compat readv/writev helpers
    iov_iter: transparently handle compat iovecs in import_iovec
    iov_iter: refactor rw_copy_check_uvector and import_iovec
    iov_iter: move rw_copy_check_uvector() into lib/iov_iter.c
    compat.h: fix a spelling error in

    Linus Torvalds
     

10 Oct, 2020

4 commits

  • blk_exit_queue will free elevator_data, while blk_mq_run_work_fn
    will access it. Move cancel of hctx->run_work to the front of
    blk_exit_queue to avoid use-after-free.

    Fixes: 1b97871b501f ("blk-mq: move cancel of hctx->run_work into blk_mq_hw_sysfs_release")
    Signed-off-by: Yang Yang
    Reviewed-by: Ming Lei
    Signed-off-by: Jens Axboe

    Yang Yang
     
  • After commit 923218f6166a ("blk-mq: don't allocate driver tag upfront
    for flush rq"), blk_mq_submit_bio() will call blk_insert_flush()
    directly to handle flush request rather than blk_mq_sched_insert_request()
    in the case of elevator.

    Then, all flush request either have set RQF_FLUSH_SEQ flag when call
    blk_mq_sched_insert_request(), or have inserted into hctx->dispatch.
    So, remove the dead code path.

    Signed-off-by: Yufen Yu
    Signed-off-by: Jens Axboe

    Yufen Yu
     
  • Since whole elevator register is protectd by sysfs_lock, we
    don't need extras 'has_elevator'. Just use q->elevator directly.

    Signed-off-by: Yufen Yu
    Signed-off-by: Jens Axboe

    Yufen Yu
     
  • After commit b89f625e28d4 ("block: don't release queue's sysfs
    lock during switching elevator"), whole elevator register and
    unregister function are covered by sysfs_lock. So, remove wrong
    comment and add lockdep assert.

    Signed-off-by: Yufen Yu
    Signed-off-by: Jens Axboe

    Yufen Yu