]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Merge tag 'for-6.13-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 19 Nov 2024 00:37:41 +0000 (16:37 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 19 Nov 2024 00:37:41 +0000 (16:37 -0800)
Pull btrfs updates from David Sterba:
 "Changes outside of btrfs: add io_uring command flag to track a dying
  task (the rest will go via the block git tree).

  User visible changes:

   - wire encoded read (ioctl) to io_uring commands, this can be used on
     itself, in the future this will allow 'send' to be asynchronous. As
     a consequence, the encoded read ioctl can also work in non-blocking
     mode

   - new ioctl to wait for cleaned subvolumes, no need to use the
     generic and root-only SEARCH_TREE ioctl, will be used by "btrfs
     subvol sync"

   - recognize different paths/symlinks for the same devices and don't
     report them during rescanning, this can be observed with LVM or DM

   - seeding device use case change, the sprout device (the one
     capturing new writes) will not clear the read-only status of the
     super block; this prevents accumulating space from deleted
     snapshots

  Performance improvements:

   - reduce lock contention when traversing extent buffers

   - reduce extent tree lock contention when searching for inline
     backref

   - switch from rb-trees to xarray for delayed ref tracking,
     improvements due to better cache locality, branching factors and
     more compact data structures

   - enable extent map shrinker again (prevent memory exhaustion under
     some types of IO load), reworked to run in a single worker thread
     (there used to be problems causing long stalls under memory
     pressure)

  Core changes:

   - raid-stripe-tree feature updates:
       - make device replace and scrub work
       - implement partial deletion of stripe extents
       - new selftests

   - split the config option BTRFS_DEBUG and add EXPERIMENTAL for
     features that are experimental or with known problems so we don't
     misuse debugging config for that

   - subpage mode updates (sector < page):
       - update compression implementations
       - update writepage, writeback

   - continued folio API conversions:
       - buffered writes

   - make buffered write copy one page at a time, preparatory work for
     future integration with large folios, may cause performance drop

   - proper locking of root item regarding starting send

   - error handling improvements

   - code cleanups and refactoring:
       - dead code removal
       - unused parameter reduction
       - lockdep assertions"

* tag 'for-6.13-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (119 commits)
  btrfs: send: check for read-only send root under critical section
  btrfs: send: check for dead send root under critical section
  btrfs: remove check for NULL fs_info at btrfs_folio_end_lock_bitmap()
  btrfs: fix warning on PTR_ERR() against NULL device at btrfs_control_ioctl()
  btrfs: fix a typo in btrfs_use_zone_append
  btrfs: avoid superfluous calls to free_extent_map() in btrfs_encoded_read()
  btrfs: simplify logic to decrement snapshot counter at btrfs_mksnapshot()
  btrfs: remove hole from struct btrfs_delayed_node
  btrfs: update stale comment for struct btrfs_delayed_ref_node::add_list
  btrfs: add new ioctl to wait for cleaned subvolumes
  btrfs: simplify range tracking in cow_file_range()
  btrfs: remove conditional path allocation in btrfs_read_locked_inode()
  btrfs: push cleanup into btrfs_read_locked_inode()
  io_uring/cmd: let cmds to know about dying task
  btrfs: add struct io_btrfs_cmd as type for io_uring_cmd_to_pdu()
  btrfs: add io_uring command for encoded reads (ENCODED_READ ioctl)
  btrfs: move priv off stack in btrfs_encoded_read_regular_fill_pages()
  btrfs: don't sleep in btrfs_encoded_read() if IOCB_NOWAIT is set
  btrfs: change btrfs_encoded_read() so that reading of extent is done by caller
  btrfs: remove pointless iocb::ki_pos addition in btrfs_encoded_read()
  ...

1  2 
fs/btrfs/delayed-ref.c
fs/btrfs/extent_io.c
fs/btrfs/file.c
fs/btrfs/inode.c
fs/btrfs/ioctl.c
fs/btrfs/super.c

Simple merge
Simple merge
diff --cc fs/btrfs/file.c
index e5384ceb8acf86a15e65232a9294339e5d778523,fbb753300071b57472f6466141598b2609bca2e1..588c353d296935d6cc100e5d48d1a1d8671b3d8c
@@@ -1120,7 -1067,27 +1067,7 @@@ void btrfs_check_nocow_unlock(struct bt
        btrfs_drew_write_unlock(&inode->root->snapshot_lock);
  }
  
- int btrfs_write_check(struct kiocb *iocb, struct iov_iter *from, size_t count)
 -static void update_time_for_write(struct inode *inode)
 -{
 -      struct timespec64 now, ts;
 -
 -      if (IS_NOCMTIME(inode))
 -              return;
 -
 -      now = current_time(inode);
 -      ts = inode_get_mtime(inode);
 -      if (!timespec64_equal(&ts, &now))
 -              inode_set_mtime_to_ts(inode, now);
 -
 -      ts = inode_get_ctime(inode);
 -      if (!timespec64_equal(&ts, &now))
 -              inode_set_ctime_to_ts(inode, now);
 -
 -      if (IS_I_VERSION(inode))
 -              inode_inc_iversion(inode);
 -}
 -
+ int btrfs_write_check(struct kiocb *iocb, size_t count)
  {
        struct file *file = iocb->ki_filp;
        struct inode *inode = file_inode(file);
Simple merge
Simple merge
Simple merge