Commit d9d80a859bc4 for kernel

commit d9d80a859bc45ca022abc13afdd11d1c812a1034
Merge: 0d9ff90a5422 6a7a45b1d947
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Sat Sep 5 10:18:21 2026 -0700

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

    Pull btrfs fixes from David Sterba:

     - preserve inode compression level when changing attributes

     - fix lost wakeup when waiting for a zstd workspace

     - fix bio context leaks after ordered extent processing errors

     - in send, handle unexpected extents for non-regular inodes

     - handle edge case in creation of reloc tree with enabled quotas

     - in scrub report the exact failing offset, not the stripe base

     - error handling fixes
         - error code propagation in send, zoned mode and raid-stripe-tree
         - restore active device pointer after seeding device addition error
         - transaction abort fixups

     - update Chris' email address

    * tag 'for-7.3-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux:
      MAINTAINERS: update Chris Mason's email address
      btrfs: tests: do not touch page cache if root/inode allocation failed
      btrfs: zstd: fix lost wakeup when waiting for a workspace
      btrfs: do not force reloc root creation during qgroup_account_snapshot()
      btrfs: send: fix lost error return value in will_overwrite_ref()
      btrfs: abort transaction before releasing tree_log_mutex on commit failure
      btrfs: zoned: propagate do_zone_finish() error in btrfs_zone_finish_endio()
      btrfs: zoned: finish active block group cleanup if call_zone_finish() fails
      btrfs: send: reject extents for non-regular inodes
      btrfs: return proper negative error code for update_raid_extent_item()
      btrfs: fix the possible bioc_list memory leak during error
      btrfs: fix transaction use-after-free in raid stripe insertion
      btrfs: scrub: report the failing sector's address, not the stripe base
      btrfs: preserve the compression property when other inode flags change
      btrfs: restore active device pointers after failed sprout
      btrfs: detach failed sprout device from transaction update list
      btrfs: clean up target device if block group marking fails

diff --cc fs/btrfs/dev-replace.c
index dc0834f920c3,bf0b78790171..af1b898029e8
--- a/fs/btrfs/dev-replace.c
+++ b/fs/btrfs/dev-replace.c
@@@ -625,18 -624,9 +625,18 @@@ static int btrfs_dev_replace_start(stru
  	if (ret)
  		return ret;

 +	/* Deny the source before mark, so every 'leave' unwinds both denied. */
 +	if (src_device->bdev) {
 +		ret = bdev_deny_freeze(src_device->bdev);
 +		if (ret) {
 +			btrfs_destroy_dev_replace_tgtdev(tgt_device, true);
 +			return ret;
 +		}
 +	}
 +
  	ret = mark_block_group_to_copy(fs_info, src_device);
  	if (ret)
- 		return ret;
+ 		goto leave;

  	down_write(&dev_replace->rwsem);
  	dev_replace->replace_task = current;