Skip to content
  1. Mar 31, 2023
    • Joe Thornber's avatar
      dm bufio: improve concurrent IO performance · 450e8dee
      Joe Thornber authored
      When multiple threads perform IO to a thin device, the underlying
      dm_bufio object can become a bottleneck; slowing down access to btree
      nodes that store the thin metadata. Prior to this commit, each bufio
      instance had a single mutex that was taken for every bufio operation.
      
      This commit concentrates on improving the common case where: a user of
      dm_bufio wishes to access, but not modify, a buffer which is already
      within the dm_bufio cache.
      
      Implementation::
      
        The code has been refactored; pulling out an 'lru' abstraction and a
        'buffer cache' abstraction (see 2 previous commits). This commit
        updates higher level bufio code (that performs allocation of buffers,
        IO and eviction/cache sizing) to leverage both abstractions. It also
        deals with the delicate locking requirements of both abstractions to
        provide finer grained locking. The result is significantly better
        concurrent IO performance.
      
        Before this commit, bufio has a global lru list it used to evict the
        oldest, clean buffers from _all_ clients. With the new locking we
        don’t want different ways to access the same buffer, so instead
        do_global_cleanup() loops around the clients asking them to free
        buffers older than a certain time.
      
        This commit also converts many old BUG_ONs to WARN_ON_ONCE, see the
        lru_evict and cache_evict code in particular.  They will return
        ER_DONT_EVICT if a given buffer somehow meets the invariants that
        should _never_ happen. [Aside from revising this commit's header and
        fixing coding style and whitespace nits: this switching to
        WARN_ON_ONCE is Mike Snitzer's lone contribution to this commit]
      
      Testing::
      
        Some of the low level functions have been unit tested using dm-unit:
          https://github.com/jthornber/dm-unit/blob/main/src/tests/bufio.rs
      
        Higher level concurrency and IO is tested via a test only target
        found here:
          https://github.com/jthornber/linux/blob/2023-03-24-thin-concurrency-9/drivers/md/dm-bufio-test.c
      
        The associated userland side of these tests is here:
          https://github.com/jthornber/dmtest-python/blob/main/src/dmtest/bufio/bufio_tests.py
      
      
      
        In addition the full dmtest suite of tests (dm-thin, dm-cache, etc)
        has been run (~450 tests).
      
      Performance::
      
        Most bufio operations have unchanged performance. But if multiple
        threads are attempting to get buffers concurrently, and these
        buffers are already in the cache then there's a big speed up. Eg,
        one test has 16 'hotspot' threads simulating btree lookups while
        another thread dirties the whole device. In this case the hotspot
        threads acquire the buffers about 25 times faster.
      
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      450e8dee
    • Joe Thornber's avatar
      dm bufio: add dm_buffer_cache abstraction · 2cd7a6d4
      Joe Thornber authored
      
      
      The buffer cache is responsible for managing the holder count,
      tracking clean/dirty state, and choosing buffers via predicates.
      Higher level code is responsible for allocation of buffers, IO and
      eviction/cache sizing.
      
      The buffer cache has thread safe methods for acquiring a reference
      to an existing buffer. All other methods in buffer cache are _not_
      threadsafe, and only contain enough locking to guarantee the safe
      methods.
      
      Rather than a single mutex, sharded rw_semaphores are used to allow
      concurrent threads to 'get' buffers. Each rw_semaphore protects its
      own rbtree of buffer entries.
      
      Code that uses this new dm_buffer_cache abstraction will be introduced
      in a following commit.
      
      This commit moves the dm_buffer struct in preparation for finer grained
      dm_buffer changes, in the next commit, to be more easily seen. It also
      introduces temporary dm_buffer struct members to allow compilation of
      this intermediate commit (they will be elided in the next commit).
      
      This commit will cause "defined but not used" compiler warnings that
      will be resolved by the next commit.
      
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      2cd7a6d4
    • Joe Thornber's avatar
      dm bufio: add LRU abstraction · be845bab
      Joe Thornber authored
      
      
      A CLOCK algorithm is used in this LRU abstraction.  This avoids
      relinking list nodes, which would require a write lock protecting it.
      
      None of the LRU methods are threadsafe; locking must be done at a
      higher level.
      
      Code that uses this new LRU will be introduced in the next 2 commits.
      
      As such, this commit will cause "defined but not used" compiler warnings
      that will be resolved by the next 2 commits.
      
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      be845bab
    • Mike Snitzer's avatar
      dm bufio: don't bug for clear developer oversight · b75a80f4
      Mike Snitzer authored
      
      
      Reasonable to relax to WARN_ON because these are easily avoided but do
      offer some assurance future coding mistakes won't occur (if changes
      tested properly).
      
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      b75a80f4
    • Mike Snitzer's avatar
      dm bufio: never crash if dm_bufio_in_request() · 05112287
      Mike Snitzer authored
      
      
      All these instances are entirely avoidable given that they speak to
      coding mistakes that result in inappropriate use. Proper testing during
      development will catch any such coding bug so its best to relax all of
      these from BUG_ON to WARN_ON_ONCE.
      
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      05112287
    • Mike Snitzer's avatar
      dm bufio: use WARN_ON in dm_bufio_client_destroy and dm_bufio_exit · 555977dd
      Mike Snitzer authored
      
      
      Using BUG_ON when tearing down is excessive. Relax these to WARN_ONs.
      
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      555977dd
    • Joe Thornber's avatar
      dm bufio: remove unused dm_bufio_release_move interface · 96a2ff2a
      Joe Thornber authored
      
      
      Was used by multi-snapshot DM target that never went upstream.
      
      Signed-off-by: default avatarJoe Thornber <ejt@redhat.com>
      Acked-by: default avatarMikulas Patocka <mpatocka@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      96a2ff2a
    • Mike Snitzer's avatar
      dm: fix __send_duplicate_bios() to always allow for splitting IO · 666eed46
      Mike Snitzer authored
      Commit 7dd76d1f ("dm: improve bio splitting and associated IO
      accounting") only called setup_split_accounting() from
      __send_duplicate_bios() if a single bio were being issued. But the case
      where duplicate bios are issued must call it too.
      
      Otherwise the bio won't be split and resubmitted (via recursion through
      block core back to DM) to submit the later portions of a bio (which may
      map to an entirely different target).
      
      For example, when discarding an entire DM striped device with the
      following DM table:
       vg-lvol0: 0 159744 striped 2 128 7:0 2048 7:1 2048
       vg-lvol0: 159744 45056 striped 2 128 7:2 2048 7:3 2048
      
      Before (broken, discards the first striped target's devices twice):
       device-mapper: striped: target_stripe=0, bdev=7:0, start=2048 len=79872
       device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=79872
       device-mapper: striped: target_stripe=0, bdev=7:0, start=2049 len=22528
       device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=22528
      
      After (works as expected):
       device-mapper: striped: target_stripe=0, bdev=7:0, start=2048 len=79872
       device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=79872
       device-mapper: striped: target_stripe=0, bdev=7:2, start=2048 len=22528
       device-mapper: striped: target_stripe=1, bdev=7:3, start=2048 len=22528
      
      Fixes: 7dd76d1f
      
       ("dm: improve bio splitting and associated IO accounting")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarOrange Kao <orange@aiven.io>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      666eed46
    • Mike Snitzer's avatar
      dm: fix improper splitting for abnormal bios · f7b58a69
      Mike Snitzer authored
      "Abnormal" bios include discards, write zeroes and secure erase. By no
      longer passing the calculated 'len' pointer, commit 7dd06a25 ("dm:
      allow dm_accept_partial_bio() for dm_io without duplicate bios") took a
      senseless approach to disallowing dm_accept_partial_bio() from working
      for duplicate bios processed using __send_duplicate_bios().
      
      It inadvertently and incorrectly stopped the use of 'len' when
      initializing a target's io (in alloc_tio). As such the resulting tio
      could address more area of a device than it should.
      
      For example, when discarding an entire DM striped device with the
      following DM table:
       vg-lvol0: 0 159744 striped 2 128 7:0 2048 7:1 2048
       vg-lvol0: 159744 45056 striped 2 128 7:2 2048 7:3 2048
      
      Before this fix:
      
       device-mapper: striped: target_stripe=0, bdev=7:0, start=2048 len=102400
       blkdiscard: attempt to access beyond end of device
       loop0: rw=2051, sector=2048, nr_sectors = 102400 limit=81920
      
       device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=102400
       blkdiscard: attempt to access beyond end of device
       loop1: rw=2051, sector=2048, nr_sectors = 102400 limit=81920
      
      After this fix;
      
       device-mapper: striped: target_stripe=0, bdev=7:0, start=2048 len=79872
       device-mapper: striped: target_stripe=1, bdev=7:1, start=2048 len=79872
      
      Fixes: 7dd06a25
      
       ("dm: allow dm_accept_partial_bio() for dm_io without duplicate bios")
      Cc: stable@vger.kernel.org
      Reported-by: default avatarOrange Kao <orange@aiven.io>
      Signed-off-by: default avatarMike Snitzer <snitzer@kernel.org>
      f7b58a69
  2. Mar 27, 2023
  3. Mar 26, 2023
    • Linus Torvalds's avatar
      Merge tag 'smb3-client-fixes-6.3-rc3' of git://git.samba.org/sfrench/cifs-2.6 · 6485ac65
      Linus Torvalds authored
      Pull cifs client fixes from Steve French:
       "Twelve cifs/smb3 client fixes (most also for stable)
      
         - forced umount fix
      
         - fix for two perf regressions
      
         - reconnect fixes
      
         - small debugging improvements
      
         - multichannel fixes"
      
      * tag 'smb3-client-fixes-6.3-rc3' of git://git.samba.org/sfrench/cifs-2.6:
        smb3: fix unusable share after force unmount failure
        cifs: fix dentry lookups in directory handle cache
        smb3: lower default deferred close timeout to address perf regression
        cifs: fix missing unload_nls() in smb2_reconnect()
        cifs: avoid race conditions with parallel reconnects
        cifs: append path to open_enter trace event
        cifs: print session id while listing open files
        cifs: dump pending mids for all channels in DebugData
        cifs: empty interface list when server doesn't support query interfaces
        cifs: do not poll server interfaces too regularly
        cifs: lock chan_lock outside match_session
        cifs: check on...
      6485ac65
    • Linus Torvalds's avatar
      Merge tag 'nfsd-6.3-4' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux · da8e7da1
      Linus Torvalds authored
      Pull nfsd fix from Chuck Lever:
      
       - Fix a crash when using NFS with krb5p
      
      * tag 'nfsd-6.3-4' of git://git.kernel.org/pub/scm/linux/kernel/git/cel/linux:
        SUNRPC: Fix a crash in gss_krb5_checksum()
      da8e7da1
    • Linus Torvalds's avatar
      Merge tag 'xfs-6.3-fixes-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 5b9ff397
      Linus Torvalds authored
      Pull yet more xfs bug fixes from Darrick Wong:
       "The first bugfix addresses a longstanding problem where we use the
        wrong file mapping cursors when trying to compute the speculative
        preallocation quantity. This has been causing sporadic crashes when
        alwayscow mode is engaged.
      
        The other two fixes correct minor problems in more recent changes.
      
         - Fix the new allocator tracepoints because git am mismerged the
           changes such that the trace_XXX got rebased to be in function YYY
           instead of XXX
      
         - Ensure that the perag AGFL_RESET state is consistent with whatever
           we've just read off the disk
      
         - Fix a bug where we used the wrong iext cursor during a write begin"
      
      * tag 'xfs-6.3-fixes-7' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: fix mismerged tracepoints
        xfs: clear incore AGFL_RESET state if it's not needed
        xfs: pass the correct cursor to xfs_iomap_prealloc_size
      5b9ff397
    • Linus Torvalds's avatar
      Merge tag 'xfs-6.3-fixes-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · f768b35a
      Linus Torvalds authored
      Pull xfs percpu counter fixes from Darrick Wong:
       "We discovered a filesystem summary counter corruption problem that was
        traced to cpu hot-remove racing with the call to percpu_counter_sum
        that sets the free block count in the superblock when writing it to
        disk. The root cause is that percpu_counter_sum doesn't cull from
        dying cpus and hence misses those counter values if the cpu shutdown
        hooks have not yet run to merge the values.
      
        I'm hoping this is a fairly painless fix to the problem, since the
        dying cpu mask should generally be empty. It's been in for-next for a
        week without any complaints from the bots.
      
         - Fix a race in the percpu counters summation code where the
           summation failed to add in the values for any CPUs that were dying
           but not yet dead. This fixes some minor discrepancies and incorrect
           assertions when running generic/650"
      
      * tag 'xfs-6.3-fixes-4' of git://git.kernel.org/pub/scm/...
      f768b35a
    • Linus Torvalds's avatar
      Merge tag 'xfs-6.3-fixes-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · d7044263
      Linus Torvalds authored
      Pull xfs fixes from Darrick Wong:
       "This batch started with some debugging enhancements to the new
        allocator refactoring that we put in 6.3-rc1 to assist developers in
        rebasing their dev branches.
      
        As for more serious code changes -- there's a bug fix to make the
        lockless allocator scan the whole filesystem before resorting to the
        locking allocator. We're also adding a selftest for the venerable
        directory/xattr hash function to make sure that it produces consistent
        results so that we can address any fallout as soon as possible.
      
         - Add a few debugging assertions so that people (me) trying to port
           code to the new allocator functions don't mess up the caller
           requirements
      
         - Relax some overly cautious lock ordering enforcement in the new
           allocator code, which means that file allocations will locklessly
           scan for the best space they can get before backing off to the
           traditional lock-and-really-get-it behavior
      
         - Add tracepoints to make it easier to trace the xfs allocator
           behavior
      
         - Actually test the dir/xattr hash algorithm to make sure it produces
           consistent results across all the platforms XFS supports"
      
      * tag 'xfs-6.3-fixes-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
        xfs: test dir/attr hash when loading module
        xfs: add tracepoints for each of the externally visible allocators
        xfs: walk all AGs if TRYLOCK passed to xfs_alloc_vextent_iterate_ags
        xfs: try to idiot-proof the allocators
      d7044263
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-v6.3-rc4' of... · 4bdec23f
      Linus Torvalds authored
      Merge tag 'hwmon-for-v6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging
      
      Pull hwmon fixes from Guenter Roeck:
      
       - it87: Fix voltage scaling for chips with 10.9mV ADCs
      
       - xgene: Fix ioremap and memremap leak
      
       - peci/cputemp: Fix miscalculated DTS temperature for SKX
      
       - hwmon core: fix potential sensor registration failure with thermal
         subsystem if of_node is missing
      
      * tag 'hwmon-for-v6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon (it87): Fix voltage scaling for chips with 10.9mV  ADCs
        hwmon: (xgene) Fix ioremap and memremap leak
        hwmon: fix potential sensor registration fail if of_node is missing
        hwmon: (peci/cputemp) Fix miscalculated DTS for SKX
      4bdec23f
  4. Mar 25, 2023
    • Linus Torvalds's avatar
      Merge tag 'mm-hotfixes-stable-2023-03-24-17-09' of... · 65aca32e
      Linus Torvalds authored
      Merge tag 'mm-hotfixes-stable-2023-03-24-17-09' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
      
      Pull misc fixes from Andrew Morton:
       "21 hotfixes, 8 of which are cc:stable. 11 are for MM, the remainder
        are for other subsystems"
      
      * tag 'mm-hotfixes-stable-2023-03-24-17-09' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (21 commits)
        mm: mmap: remove newline at the end of the trace
        mailmap: add entries for Richard Leitner
        kcsan: avoid passing -g for test
        kfence: avoid passing -g for test
        mm: kfence: fix using kfence_metadata without initialization in show_object()
        lib: dhry: fix unstable smp_processor_id(_) usage
        mailmap: add entry for Enric Balletbo i Serra
        mailmap: map Sai Prakash Ranjan's old address to his current one
        mailmap: map Rajendra Nayak's old address to his current one
        Revert "kasan: drop skip_kasan_poison variable in free_pages_prepare"
        mailmap: add entry for Tobias Klauser
        kasan, powerpc: don't rename memintrinsics if compiler adds prefixes
        mm/ks...
      65aca32e
    • Linus Torvalds's avatar
      Merge tag '6.3-rc3-ksmbd-smb3-server-fixes' of git://git.samba.org/ksmbd · 90c8ce31
      Linus Torvalds authored
      Pull ksmbd server fixes from Steve French:
      
       - return less confusing messages on unsupported dialects
         (STATUS_NOT_SUPPORTED instead of I/O error)
      
       - fix for overly frequent inactive session termination
      
       - fix refcount leak
      
       - fix bounds check problems found by static checkers
      
       - fix to advertise named stream support correctly
      
       - Fix AES256 signing bug when connected to from MacOS
      
      * tag '6.3-rc3-ksmbd-smb3-server-fixes' of git://git.samba.org/ksmbd:
        ksmbd: return unsupported error on smb1 mount
        ksmbd: return STATUS_NOT_SUPPORTED on unsupported smb2.0 dialect
        ksmbd: don't terminate inactive sessions after a few seconds
        ksmbd: fix possible refcount leak in smb2_open()
        ksmbd: add low bound validation to FSCTL_QUERY_ALLOCATED_RANGES
        ksmbd: add low bound validation to FSCTL_SET_ZERO_DATA
        ksmbd: set FILE_NAMED_STREAMS attribute in FS_ATTRIBUTE_INFORMATION
        ksmbd: fix wrong signingkey creation when encryption is AES256
      90c8ce31
    • Linus Torvalds's avatar
      Merge tag 'arm-fixes-6.3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc · e76db6e5
      Linus Torvalds authored
      Pull ARM SoC fixes from Arnd Bergmann:
       "As usual, most of the bug fixes address issues in the devicetree
        files, and out of these, most are for the Qualcomm and NXP platforms,
        including:
      
         - A missing 'reserved-memory' property on LG G Watch R that is needed
           to prevent clashing with firmware
      
         - Annotations for cache coherency on multiple machines
      
         - Corrections for pinctrl, regulator, clock, iommu and power domain
           properties for i.MX and Qualcomm to correctly reflect the hardware
           settings
      
         - Firmware file names on multiple machines SA8540P Ride board
      
         - An incompatible change to the qcom vadc driver requires adding
           individual labels
      
         - Fix EQoS PHY reset GPIO by dropping the deprecated/wrong property
           and switch to the new bindings.
      
         - A fix for PCI bus address translation Tegra194 and Tegra234.
      
        There are also a couple of device driver fixes, addressing:
      
         - A race cond...
      e76db6e5
    • Linus Torvalds's avatar
      Merge tag 'for-v6.3-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply · d7b5c942
      Linus Torvalds authored
      Pull power supply fixes from Sebastian Reichel:
      
       - rk817: Fix compiler warning
      
       - cros_usbpd-charger: Fix excessive error printing
      
       - axp288_fuel_gauge: handle platform_get_irq error
      
       - bq24190 and da9150: Fix race condition in remove path
      
      * tag 'for-v6.3-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
        power: supply: da9150: Fix use after free bug in da9150_charger_remove due to race condition
        power: supply: bq24190: Fix use after free bug in bq24190_remove due to race condition
        power: supply: axp288_fuel_gauge: Added check for negative values
        power: supply: cros_usbpd: reclassify "default case!" as debug
        power: supply: rk817: Fix unsigned comparison with less than zero
      d7b5c942
    • Linus Torvalds's avatar
      Merge tag 'drm-fixes-2023-03-24' of git://anongit.freedesktop.org/drm/drm · 37154c19
      Linus Torvalds authored
      Pull drm fixes from Daniel Vetter:
      
       - usual pile of fixes for amdgpu & i915
      
       - probe error handling fixes for meson, lt8912b bridge
      
       - the host1x patch from Arnd
      
       - panel-orientation fix for Lenovo Book X90F
      
      * tag 'drm-fixes-2023-03-24' of git://anongit.freedesktop.org/drm/drm: (23 commits)
        gpu: host1x: fix uninitialized variable use
        drm/amd/display: Set dcn32 caps.seamless_odm
        drm/amd/display: fix wrong index used in dccg32_set_dpstreamclk
        drm/amdgpu/nv: Apply ASPM quirk on Intel ADL + AMD Navi
        drm/amd/display: remove outdated 8bpc comments
        drm/amdgpu/gfx: set cg flags to enter/exit safe mode
        drm/amdgpu: Force signal hw_fences that are embedded in non-sched jobs
        drm/amdgpu: add mes resume when do gfx post soft reset
        drm/amdgpu: skip ASIC reset for APUs when go to S4
        drm/amdgpu: reposition the gpu reset checking for reuse
        drm/bridge: lt8912b: return EPROBE_DEFER if bridge is not found
        drm/meson: fix missing component unbind on bind errors
        drm: panel-orientation-quirks: Add quirk for Lenovo Yoga Book X90F
        Revert "drm/i915/hwmon: Enable PL1 power limit"
        drm/i915: Update vblank timestamping stuff on seamless M/N change
        drm/i915: Fix format for perf_limit_reasons
        drm/i915/gt: perform uc late init after probe error injection
        drm/i915/active: Fix missing debug object activation
        drm/i915/guc: Fix missing ecodes
        drm/i915/mtl: Disable MC6 for MTL A step
        ...
      37154c19
    • Linus Torvalds's avatar
      Merge tag 'for-6.3/dm-fixes' of... · 5ad4fe96
      Linus Torvalds authored
      Merge tag 'for-6.3/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper fixes from Mike Snitzer:
      
       - Fix DM thin to work as a swap device by using 'limit_swap_bios' DM
         target flag (initially added to allow swap to dm-crypt) to throttle
         the amount of outstanding swap bios.
      
       - Fix DM crypt soft lockup warnings by calling cond_resched() from the
         cpu intensive loop in dmcrypt_write().
      
       - Fix DM crypt to not access an uninitialized tasklet. This fix allows
         for consistent handling of IO completion, by _not_ needlessly punting
         to a workqueue when tasklets are not needed.
      
       - Fix DM core's alloc_dev() initialization for DM stats to check for
         and propagate alloc_percpu() failure.
      
      * tag 'for-6.3/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm stats: check for and propagate alloc_percpu failure
        dm crypt: avoid accessing uninitialized tasklet
        dm crypt: add cond_resched() to dmcrypt_write()
        dm thin: fix deadlock when swapping to thin device
      5ad4fe96
    • Linus Torvalds's avatar
      Merge tag 'block-6.3-2023-03-24' of git://git.kernel.dk/linux · 83511470
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
      
       - NVMe pull request via Christoph:
           - Send Identify with CNS 06h only to I/O controllers (Martin
             George)
           - Fix nvme_tcp_term_pdu to match spec (Caleb Sander)
      
       - Pass in issue_flags for uring_cmd, so the end_io handlers don't need
         to assume what the right context is (me)
      
       - Fix for ublk, marking it as LIVE before adding it to avoid races on
         the initial IO (Ming)
      
      * tag 'block-6.3-2023-03-24' of git://git.kernel.dk/linux:
        nvme-tcp: fix nvme_tcp_term_pdu to match spec
        nvme: send Identify with CNS 06h only to I/O controllers
        block/io_uring: pass in issue_flags for uring_cmd task_work handling
        block: ublk_drv: mark device as LIVE before adding disk
      83511470
    • Linus Torvalds's avatar
      Merge tag 'io_uring-6.3-2023-03-24' of git://git.kernel.dk/linux · e344eb7b
      Linus Torvalds authored
      Pull io_uring fixes from Jens Axboe:
      
       - Fix an issue with repeated -ECONNREFUSED on a socket (me)
      
       - Fix a NULL pointer deference due to a stale lookup cache for
         allocating direct descriptors (Savino)
      
      * tag 'io_uring-6.3-2023-03-24' of git://git.kernel.dk/linux:
        io_uring/rsrc: fix null-ptr-deref in io_file_bitmap_get()
        io_uring/net: avoid sending -ECONNABORTED on repeated connection requests
      e344eb7b
    • Linus Torvalds's avatar
      Merge tag 'thermal-6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · fd3d06ff
      Linus Torvalds authored
      Pull thermal control fixes from Rafael Wysocki:
       "These address two recent regressions related to thermal control.
      
        Specifics:
      
         - Restore the thermal core behavior regarding zero-temperature trip
           points to avoid a driver regression (Ido Schimmel)
      
         - Fix a recent regression in the ACPI processor driver preventing it
           from changing the number of CPU cooling device states exposed via
           sysfs after the given CPU cooling device has been registered
           (Rafael Wysocki)"
      
      * tag 'thermal-6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        thermal: core: Restore behavior regarding invalid trip points
        ACPI: processor: thermal: Update CPU cooling devices on cpufreq policy changes
        thermal: core: Introduce thermal_cooling_device_update()
        thermal: core: Introduce thermal_cooling_device_present()
        ACPI: processor: Reorder acpi_processor_driver_init()
      fd3d06ff
    • Linus Torvalds's avatar
      Merge tag 'acpi-6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 1868d192
      Linus Torvalds authored
      Pull ACPI fixes from Rafael Wysocki:
       "These add new ACPI IRQ override and backlight detection quirks.
      
        Specifics:
      
         - Add backlight=native DMI quirk for Acer Aspire 3830TG to the ACPI
           backlight driver (Hans de Goede)
      
         - Add an ACPI IRQ override quirk for Medion S17413 (Aymeric Wibo)"
      
      * tag 'acpi-6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: resource: Add Medion S17413 to IRQ override quirk
        ACPI: video: Add backlight=native DMI quirk for Acer Aspire 3830TG
      1868d192
    • Darrick J. Wong's avatar
      xfs: fix mismerged tracepoints · 4dfb02d5
      Darrick J. Wong authored
      
      
      At some point in between sending this patch to the list and merging it
      into for-next, the tracepoints got all mixed up because I've
      over-reliant on automated tools not sucking.  The end result is that the
      tracepoints are all wrong, so fix them.
      
      Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
      4dfb02d5
    • Steve French's avatar
      smb3: fix unusable share after force unmount failure · 491eafce
      Steve French authored
      
      
      If user does forced unmount ("umount -f") while files are still open
      on the share (as was seen in a Kubernetes example running on SMB3.1.1
      mount) then we were marking the share as "TID_EXITING" in umount_begin()
      which caused all subsequent operations (except write) to fail ... but
      unfortunately when umount_begin() is called we do not know yet that
      there are open files or active references on the share that would prevent
      unmount from succeeding.  Kubernetes had example when they were doing
      umount -f when files were open which caused the share to become
      unusable until the files were closed (and the umount retried).
      
      Fix this so that TID_EXITING is not set until we are about to send
      the tree disconnect (not at the beginning of forced umounts in
      umount_begin) so that if "umount -f" fails (due to open files or
      references) the mount is still usable.
      
      Cc: stable@vger.kernel.org
      Reviewed-by: default avatarShyam Prasad N <sprasad@microsoft.com>
      Reviewed-by: default avatarPaulo Alcantara (SUSE) <pc@manguebit.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      491eafce
    • Paulo Alcantara's avatar
      cifs: fix dentry lookups in directory handle cache · be4fde79
      Paulo Alcantara authored
      Get rid of any prefix paths in @path before lookup_positive_unlocked()
      as it will call ->lookup() which already adds those prefix paths
      through build_path_from_dentry().
      
      This has caused a performance regression when mounting shares with a
      prefix path where readdir(2) would end up retrying several times to
      open bad directory names that contained duplicate prefix paths.
      
      Fix this by skipping any prefix paths in @path before calling
      lookup_positive_unlocked().
      
      Fixes: e4029e07
      
       ("cifs: find and use the dentry for cached non-root directories also")
      Cc: stable@vger.kernel.org # 6.1+
      Signed-off-by: default avatarPaulo Alcantara (SUSE) <pc@manguebit.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      be4fde79
    • Steve French's avatar
      smb3: lower default deferred close timeout to address perf regression · 7e0e76d9
      Steve French authored
      
      
      Performance tests with large number of threads noted that the change
      of the default closetimeo (deferred close timeout between when
      close is done by application and when client has to send the close
      to the server), to 5 seconds from 1 second, significantly degraded
      perf in some cases like this (in the filebench example reported,
      the stats show close requests on the wire taking twice as long,
      and 50% regression in filebench perf). This is stil configurable
      via mount parm closetimeo, but to be safe, decrease default back
      to its previous value of 1 second.
      
      Reported-by: default avatarYin Fengwei <fengwei.yin@intel.com>
      Reported-by: default avatarkernel test robot <yujie.liu@intel.com>
      Link: https://lore.kernel.org/lkml/997614df-10d4-af53-9571-edec36b0e2f3@intel.com/
      Fixes: 5efdd912
      
       ("smb3: allow deferred close timeout to be configurable")
      Cc: stable@vger.kernel.org # 6.0+
      Tested-by: default avatarYin Fengwei <fengwei.yin@intel.com>
      Reviewed-by: default avatarPaulo Alcantara (SUSE) <pc@manguebit.com>
      Reviewed-by: default avatarShyam Prasad N <sprasad@microsoft.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      7e0e76d9
    • Paulo Alcantara's avatar
      cifs: fix missing unload_nls() in smb2_reconnect() · c24bb1a8
      Paulo Alcantara authored
      Make sure to unload_nls() @nls_codepage if we no longer need it.
      
      Fixes: bc962159
      
       ("cifs: avoid race conditions with parallel reconnects")
      Signed-off-by: default avatarPaulo Alcantara (SUSE) <pc@manguebit.com>
      Cc: Shyam Prasad N <sprasad@microsoft.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      c24bb1a8
    • Linus Torvalds's avatar
      Merge tag 'slab-fix-for-6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab · cb7f5b41
      Linus Torvalds authored
      Pull slab fix from Vlastimil Babka:
       "A single build fix for a corner case configuration that is apparently
        possible to achieve on some arches, from Geert"
      
      * tag 'slab-fix-for-6.3-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/vbabka/slab:
        mm/slab: Fix undefined init_cache_node_node() for NUMA and !SMP
      cb7f5b41
    • Linus Torvalds's avatar
      Merge tag 'efi-fixes-for-v6.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi · 877c20b1
      Linus Torvalds authored
      Pull EFI fixes from Ard Biesheuvel:
      
       - Set the NX compat flag for arm64 and zboot, to ensure compatibility
         with EFI firmware that complies with tightening requirements imposed
         across the ecosystem.
      
       - Improve identification of Ampere Altra systems based on SMBIOS data.
      
       - Fix some issues related to the EFI framebuffer that were introduced
         as a result from some refactoring related to zboot and the merge with
         sysfb.
      
       - Makefile tweak to avoid rebuilding vmlinuz unnecessarily.
      
       - Fix efi_random_alloc() return value on out of memory condition.
      
      * tag 'efi-fixes-for-v6.3-1' of git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi:
        efi/libstub: randomalloc: Return EFI_OUT_OF_RESOURCES on failure
        efi/libstub: Use relocated version of kernel's struct screen_info
        efi/libstub: zboot: Add compressed image to make targets
        efi: sysfb_efi: Add quirk for Lenovo Yoga Book X91F/L
        efi: sysfb_efi: Fix DMI quirks not working for simpledrm
        efi/libstub: smbios: Drop unused 'recsize' parameter
        arm64: efi: Use SMBIOS processor version to key off Ampere quirk
        efi/libstub: smbios: Use length member instead of record struct size
        efi: earlycon: Reprobe after parsing config tables
        arm64: efi: Set NX compat flag in PE/COFF header
        efi/libstub: arm64: Remap relocated image with strict permissions
        efi/libstub: zboot: Mark zboot EFI application as NX compatible
      877c20b1
    • Arnd Bergmann's avatar
      Merge tag 'qcom-driver-fixes-for-6.3' of... · ec7d8bd7
      Arnd Bergmann authored
      Merge tag 'qcom-driver-fixes-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/fixes
      
      Qualcomm driver fixes for v6.3
      
      Support for the secure world interrupting the SCM driver drive the wait
      queue mechanism was recently introduced, but most platforms doesn't have
      this mechanism and an error should not be printed in the log.
      
      The rmtfs_mem driver recently gained support for assigning the region to
      multiple VMIDs, but accidentally removed the support for running without
      assignment. A couple of changes are introducd to correct this.
      
      The SC8280XP LLCC slice configuration is wrong, reslting in incorrect
      configuration of the hardware. The table is corrected, based on the
      datasheet.
      
      * tag 'qcom-driver-fixes-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
        firmware: qcom: scm: fix bogus irq error at probe
        soc: qcom: rmtfs: handle optional qcom,vmid correctly
        soc: qcom: rmtfs: fix error handling reading qcom,vmid
        soc: qcom: llcc: Fix slice configuration values for SC8280XP
      
      Link: https://lore.kernel.org/r/20230323142505.1086072-1-andersson@kernel.org
      
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      ec7d8bd7
    • Arnd Bergmann's avatar
      Merge tag 'qcom-dts-fixes-for-6.3' of... · 7158e61c
      Arnd Bergmann authored
      Merge tag 'qcom-dts-fixes-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux into soc/fixes
      
      Qualcomm ARM32 Devicetree fixes for v6.3
      
      This introduces missing reserved-memory ranges on LG G Watch R,
      resolving stability issues caused by Linux reusing memory used by
      firmware.
      
      * tag 'qcom-dts-fixes-for-6.3' of https://git.kernel.org/pub/scm/linux/kernel/git/qcom/linux:
        ARM: dts: qcom: apq8026-lg-lenok: add missing reserved memory
      
      Link: https://lore.kernel.org/r/20230323141922.1085875-1-andersson@kernel.org
      
      
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      7158e61c