Commit 7696286034ac for kernel

commit 7696286034ac72cf9b46499be1715ac62fd302c3
Merge: cc25df3e2e22 9e0e6577b3e5
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Wed Dec 3 20:03:46 2025 -0800

    Merge tag 'for-6.19-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

    Pull btrfs updates from David Sterba:
     "Features:

       - shutdown ioctl support (needs CONFIG_BTRFS_EXPERIMENTAL for now):
          - set filesystem state as being shut down (also named going down
            in other filesystems), where all active operations return EIO
            and this cannot be changed until unmount
          - pending operations are attempted to be finished but error
            messages may still show up depending on where exactly the
            shutdown happened

       - scrub (and device replace) vs suspend/hibernate:
          - a running scrub will prevent suspend, which can be annoying as
            suspend is an immediate request and scrub is not critical
          - filesystem freezing before suspend was not sufficient as the
            problem was in process freezing
          - behaviour change: on suspend scrub and device replace are
            cancelled, where scrub can record the last state and continue
            from there; the device replace has to be restarted from the
            beginning

       - zone stats exported in sysfs, from the perspective of the
         filesystem this includes active, reclaimable, relocation etc zones

      Performance:

       - improvements when processing space reservation tickets by
         optimizing locking and shrinking critical sections, cumulative
         improvements in lockstat numbers show +15%

      Notable fixes:

       - use vmalloc fallback when allocating bios as high order allocations
         can happen with wide checksums (like sha256)

       - scrub will always track the last position of progress so it's not
         starting from zero after an error

      Core:

       - under experimental config, checksum calculations are offloaded to
         process context, simplifies locking and allows to remove
         compression write worker kthread(s):
          - speed improvement in direct IO throughput with buffered IO
            fallback is +15% when not offloaded but this is more related to
            internal crypto subsystem improvements
          - this will be probably default in the future removing the sysfs
            tunable

       - (experimental) block size > page size updates:
          - support more operations when not using large folios (encoded
            read/write and send)
          - raid56

       - more preparations for fscrypt support

      Other:

       - more conversions to auto-cleaned variables

       - parameter cleanups and removals

       - extended warning fixes

       - improved printing of structured values like keys

       - lots of other cleanups and refactoring"

    * tag 'for-6.19-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (147 commits)
      btrfs: remove unnecessary inode key in btrfs_log_all_parents()
      btrfs: remove redundant zero/NULL initializations in btrfs_alloc_root()
      btrfs: remaining BTRFS_PATH_AUTO_FREE conversions
      btrfs: send: do not allocate memory for xattr data when checking it exists
      btrfs: send: add unlikely to all unexpected overflow checks
      btrfs: reduce arguments to btrfs_del_inode_ref_in_log()
      btrfs: remove root argument from btrfs_del_dir_entries_in_log()
      btrfs: use test_and_set_bit() in btrfs_delayed_delete_inode_ref()
      btrfs: don't search back for dir inode item in INO_LOOKUP_USER
      btrfs: don't rewrite ret from inode_permission
      btrfs: add orig_logical to btrfs_bio for encryption
      btrfs: disable verity on encrypted inodes
      btrfs: disable various operations on encrypted inodes
      btrfs: remove redundant level reset in btrfs_del_items()
      btrfs: simplify leaf traversal after path release in btrfs_next_old_leaf()
      btrfs: optimize balance_level() path reference handling
      btrfs: factor out root promotion logic into promote_child_to_root()
      btrfs: raid56: remove the "_step" infix
      btrfs: raid56: enable bs > ps support
      btrfs: raid56: prepare finish_parity_scrub() to support bs > ps cases
      ...

diff --cc fs/btrfs/file.c
index e7453f992e1e,1e0ff3d7210d..7a501e73d880
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@@ -86,11 -86,9 +86,9 @@@ int btrfs_dirty_folio(struct btrfs_inod
  		extra_bits |= EXTENT_NORESERVE;

  	start_pos = round_down(pos, fs_info->sectorsize);
- 	num_bytes = round_up(write_bytes + pos - start_pos,
- 			     fs_info->sectorsize);
+ 	num_bytes = round_up(end_pos - start_pos, fs_info->sectorsize);
  	ASSERT(num_bytes <= U32_MAX);
- 	ASSERT(folio_pos(folio) <= pos &&
- 	       folio_next_pos(folio) >= pos + write_bytes);
 -	ASSERT(folio_pos(folio) <= pos && folio_end(folio) >= end_pos);
++	ASSERT(folio_pos(folio) <= pos && folio_next_pos(folio) >= end_pos);

  	end_of_last_block = start_pos + num_bytes - 1;