Merge tag 'for-6.2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 13 Dec 2022 04:47:51 +0000 (20:47 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 13 Dec 2022 04:47:51 +0000 (20:47 -0800)
Pull btrfs updates from David Sterba:
 "This round there are a lot of cleanups and moved code so the diffstat
  looks huge, otherwise there are some nice performance improvements and
  an update to raid56 reliability.

  User visible features:

   - raid56 reliability vs performance trade off:
      - fix destructive RMW for raid5 data (raid6 still needs work): do
        full checksum verification for all data during RMW cycle, this
        should prevent rewriting potentially corrupted data without
        notice
      - stripes are cached in memory which should reduce the performance
        impact but still can hurt some workloads
      - checksums are verified after repair again
      - this is the last option without introducing additional features
        (write intent bitmap, journal, another tree), the extra checksum
        read/verification was supposed to be avoided by the original
        implementation exactly for performance reasons but that caused
        all the reliability problems

   - discard=async by default for devices that support it

   - implement emergency flush reserve to avoid almost all unnecessary
     transaction aborts due to ENOSPC in cases where there are too many
     delayed refs or delayed allocation

   - skip block group synchronization if there's no change in used
     bytes, can reduce transaction commit count for some workloads

  Performance improvements:

   - fiemap and lseek:
      - overall speedup due to skipping unnecessary or duplicate
        searches (-40% run time)
      - cache some data structures and sharedness of extents (-30% run
        time)

   - send:
      - faster backref resolution when finding clones
      - cached leaf to root mapping for faster backref walking
      - improved clone/sharing detection
      - overall run time improvements (-70%)

  Core:

   - module initialization converted to a table of function pointers run
     in a sequence

   - preparation for fscrypt, extend passing file names across calls,
     dir item can store encryption status

   - raid56 updates:
      - more accurate error tracking of sectors within stripe
      - simplify recovery path and remove dedicated endio worker kthread
      - simplify scrub call paths
      - refactoring to support the extra data checksum verification
        during RMW cycle

   - tree block parentness checks consolidated and done at metadata read
     time

   - improved error handling

   - cleanups:
      - move a lot of code for better synchronization between kernel and
        user space sources, split big files
      - enum cleanups
      - GFP flag cleanups
      - header file cleanups, prototypes, dependencies
      - redundant parameter cleanups
      - inline extent handling simplifications
      - inode parameter conversion
      - data structure cleanups, reductions, renames, merges"

* tag 'for-6.2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (249 commits)
  btrfs: print transaction aborted messages with an error level
  btrfs: sync some cleanups from progs into uapi/btrfs.h
  btrfs: do not BUG_ON() on ENOMEM when dropping extent items for a range
  btrfs: fix extent map use-after-free when handling missing device in read_one_chunk
  btrfs: remove outdated logic from overwrite_item() and add assertion
  btrfs: unify overwrite_item() and do_overwrite_item()
  btrfs: replace strncpy() with strscpy()
  btrfs: fix uninitialized variable in find_first_clear_extent_bit
  btrfs: fix uninitialized parent in insert_state
  btrfs: add might_sleep() annotations
  btrfs: add stack helpers for a few btrfs items
  btrfs: add nr_global_roots to the super block definition
  btrfs: remove BTRFS_LEAF_DATA_OFFSET
  btrfs: add helpers for manipulating leaf items and data
  btrfs: add eb to btrfs_node_key_ptr_offset
  btrfs: pass the extent buffer for the btrfs_item_nr helpers
  btrfs: move the csum helpers into ctree.h
  btrfs: move eb offset helpers into extent_io.h
  btrfs: move file_extent_item helpers into file-item.h
  btrfs: move leaf_data_end into ctree.c
  ...

1  2 
fs/btrfs/acl.c
fs/btrfs/acl.h
fs/btrfs/inode.c
fs/btrfs/ioctl.c
fs/btrfs/ordered-data.c

diff --cc fs/btrfs/acl.c
Simple merge
diff --cc fs/btrfs/acl.h
index 0000000,45197b4..39bd36e
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,27 +1,27 @@@
 -int btrfs_set_acl(struct user_namespace *mnt_userns, struct inode *inode,
+ /* SPDX-License-Identifier: GPL-2.0 */
+ #ifndef BTRFS_ACL_H
+ #define BTRFS_ACL_H
+ #ifdef CONFIG_BTRFS_FS_POSIX_ACL
+ struct posix_acl *btrfs_get_acl(struct inode *inode, int type, bool rcu);
++int btrfs_set_acl(struct user_namespace *mnt_userns, struct dentry *dentry,
+                 struct posix_acl *acl, int type);
+ int __btrfs_set_acl(struct btrfs_trans_handle *trans, struct inode *inode,
+                   struct posix_acl *acl, int type);
+ #else
+ #define btrfs_get_acl NULL
+ #define btrfs_set_acl NULL
+ static inline int __btrfs_set_acl(struct btrfs_trans_handle *trans,
+                                 struct inode *inode, struct posix_acl *acl,
+                                 int type)
+ {
+       return -EOPNOTSUPP;
+ }
+ #endif
+ #endif
@@@ -5253,10 -5304,10 +5304,10 @@@ static int btrfs_setattr(struct user_na
        if (attr->ia_valid) {
                setattr_copy(mnt_userns, inode, attr);
                inode_inc_iversion(inode);
-               err = btrfs_dirty_inode(inode);
+               err = btrfs_dirty_inode(BTRFS_I(inode));
  
                if (!err && attr->ia_valid & ATTR_MODE)
 -                      err = posix_acl_chmod(mnt_userns, inode, inode->i_mode);
 +                      err = posix_acl_chmod(mnt_userns, dentry, inode->i_mode);
        }
  
        return err;
Simple merge
Simple merge