2022-08-04 15:36:33

by Darrick J. Wong

[permalink] [raw]
Subject: [GIT PULL] xfs: new code for 6.0, part 1

Hi Linus,

Please pull this branch containing new XFS code for 6.0. The biggest
changes for this release are the log scalability improvements, lockless
lookups for the buffer cache, and making the attr fork a permanent part
of the incore inode in preparation for directory parent pointers.
There's also a bunch of bug fixes that have accumulated since -rc5.
I might send you a second pull request with some more bug fixes that I'm
still working on.

Once the merge window ends, I will hand maintainership back to Dave
Chinner until the 6.1-rc1 release so that I can conduct the design
review for the online fsck feature, and try to get it merged.

As usual, I did a test-merge with upstream master as of a few minutes
ago, and it completed flawlessly. Please let me know if you encounter
any problems. Hopefully I got the merge commits from Dave's pull
requests landed correctly, since I'm a bit rusty on that.

--D

The following changes since commit 88084a3df1672e131ddc1b4e39eeacfd39864acf:

Linux 5.19-rc5 (2022-07-03 15:39:28 -0700)

are available in the Git repository at:

git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-5.20-merge-6

for you to fetch changes up to 5e9466a5d0604e20082d828008047b3165592caf:

xfs: delete extra space and tab in blank line (2022-07-31 09:21:27 -0700)

----------------------------------------------------------------
New code for 5.20:
- Improve scalability of the XFS log by removing spinlocks and global
synchronization points.
- Add security labels to whiteout inodes to match the other filesystems.
- Clean up per-ag pointer passing to simplify call sites.
- Reduce verifier overhead by precalculating more AG geometry.
- Implement fast-path lockless lookups in the buffer cache to reduce
spinlock hammering.
- Make attr forks a permanent part of the inode structure to fix a UAF
bug and because most files these days tend to have security labels and
soon will have parent pointers too.
- Clean up XFS_IFORK_Q usage and give it a better name.
- Fix more UAF bugs in the xattr code.
- SOB my tags.
- Fix some typos in the timestamp range documentation.
- Fix a few more memory leaks.
- Code cleanups and typo fixes.
- Fix an unlocked inode fork pointer access in getbmap.

Signed-off-by: Darrick J. Wong <[email protected]>

----------------------------------------------------------------
Andrey Strachuk (1):
xfs: removed useless condition in function xfs_attr_node_get

ChenXiaoSong (1):
xfs: fix NULL pointer dereference in xfs_getbmap()

Dan Carpenter (1):
xfs: delete unnecessary NULL checks

Darrick J. Wong (12):
Merge tag 'xfs-cil-scale-5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs into xfs-5.20-mergeA
Merge tag 'xfs-perag-conv-5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs into xfs-5.20-mergeA
xfs: convert XFS_IFORK_PTR to a static inline helper
xfs: make inode attribute forks a permanent part of struct xfs_inode
xfs: use XFS_IFORK_Q to determine the presence of an xattr fork
xfs: replace XFS_IFORK_Q with a proper predicate function
xfs: replace inode fork size macros with functions
Merge tag 'xfs-iunlink-item-5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs into xfs-5.20-mergeB
Merge tag 'xfs-buf-lockless-lookup-5.20' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs into xfs-5.20-mergeB
Merge tag 'make-attr-fork-permanent-5.20_2022-07-14' of git://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-5.20-mergeB
xfs: fix use-after-free in xattr node block inactivation
xfs: don't leak memory when attr fork loading fails

Dave Chinner (44):
xfs: use the CIL space used counter for emptiness checks
xfs: lift init CIL reservation out of xc_cil_lock
xfs: rework per-iclog header CIL reservation
xfs: introduce per-cpu CIL tracking structure
xfs: implement percpu cil space used calculation
xfs: track CIL ticket reservation in percpu structure
xfs: convert CIL busy extents to per-cpu
xfs: Add order IDs to log items in CIL
xfs: convert CIL to unordered per cpu lists
xfs: convert log vector chain to use list heads
xfs: move CIL ordering to the logvec chain
xfs: avoid cil push lock if possible
xfs: xlog_sync() manually adjusts grant head space
xfs: expanding delayed logging design with background material
xfs: make last AG grow/shrink perag centric
xfs: kill xfs_ialloc_pagi_init()
xfs: pass perag to xfs_ialloc_read_agi()
xfs: kill xfs_alloc_pagf_init()
xfs: pass perag to xfs_alloc_read_agf()
xfs: pass perag to xfs_read_agi
xfs: pass perag to xfs_read_agf
xfs: pass perag to xfs_alloc_get_freelist
xfs: pass perag to xfs_alloc_put_freelist
xfs: pass perag to xfs_alloc_read_agfl
xfs: Pre-calculate per-AG agbno geometry
xfs: Pre-calculate per-AG agino geometry
xfs: replace xfs_ag_block_count() with perag accesses
xfs: make is_log_ag() a first class helper
xfs: rework xfs_buf_incore() API
xfs: factor the xfs_iunlink functions
xfs: track the iunlink list pointer in the xfs_inode
xfs: refactor xlog_recover_process_iunlinks()
xfs: introduce xfs_iunlink_lookup
xfs: double link the unlinked inode list
xfs: clean up xfs_iunlink_update_inode()
xfs: combine iunlink inode update functions
xfs: add log item precommit operation
xfs: add in-memory iunlink log item
xfs: break up xfs_buf_find() into individual pieces
xfs: merge xfs_buf_find() and xfs_buf_get_map()
xfs: reduce the number of atomic when locking a buffer after lookup
xfs: remove a superflous hash lookup when inserting new buffers
xfs: lockless buffer lookup
xfs: xfs_buf cache destroy isn't RCU safe

Eric Sandeen (1):
xfs: add selinux labels to whiteout inodes

Slark Xiao (1):
xfs: Fix typo 'the the' in comment

Xiaole He (1):
xfs: fix comment for start time value of inode with bigtime enabled

Xie Shaowen (1):
xfs: delete extra space and tab in blank line

Xin Gao (1):
xfs: Fix comment typo

Zhang Yi (1):
xfs: flush inode gc workqueue before clearing agi bucket

sunliming (1):
xfs: fix for variable set but not used warning

.../filesystems/xfs-delayed-logging-design.rst | 361 ++++++++++--
fs/xfs/Makefile | 1 +
fs/xfs/libxfs/xfs_ag.c | 173 ++++--
fs/xfs/libxfs/xfs_ag.h | 75 ++-
fs/xfs/libxfs/xfs_ag_resv.c | 2 +-
fs/xfs/libxfs/xfs_alloc.c | 145 ++---
fs/xfs/libxfs/xfs_alloc.h | 58 +-
fs/xfs/libxfs/xfs_alloc_btree.c | 9 +-
fs/xfs/libxfs/xfs_attr.c | 22 +-
fs/xfs/libxfs/xfs_attr.h | 10 +-
fs/xfs/libxfs/xfs_attr_leaf.c | 28 +-
fs/xfs/libxfs/xfs_attr_remote.c | 15 +-
fs/xfs/libxfs/xfs_bmap.c | 84 +--
fs/xfs/libxfs/xfs_bmap_btree.c | 10 +-
fs/xfs/libxfs/xfs_btree.c | 29 +-
fs/xfs/libxfs/xfs_dir2.c | 2 +-
fs/xfs/libxfs/xfs_dir2_block.c | 6 +-
fs/xfs/libxfs/xfs_dir2_sf.c | 8 +-
fs/xfs/libxfs/xfs_format.h | 2 +-
fs/xfs/libxfs/xfs_ialloc.c | 86 ++-
fs/xfs/libxfs/xfs_ialloc.h | 25 +-
fs/xfs/libxfs/xfs_ialloc_btree.c | 20 +-
fs/xfs/libxfs/xfs_inode_buf.c | 15 +-
fs/xfs/libxfs/xfs_inode_fork.c | 65 ++-
fs/xfs/libxfs/xfs_inode_fork.h | 27 +-
fs/xfs/libxfs/xfs_refcount.c | 19 +-
fs/xfs/libxfs/xfs_refcount_btree.c | 5 +-
fs/xfs/libxfs/xfs_rmap.c | 8 +-
fs/xfs/libxfs/xfs_rmap_btree.c | 9 +-
fs/xfs/libxfs/xfs_symlink_remote.c | 2 +-
fs/xfs/libxfs/xfs_types.c | 73 +--
fs/xfs/libxfs/xfs_types.h | 9 -
fs/xfs/scrub/agheader.c | 25 +-
fs/xfs/scrub/agheader_repair.c | 21 +-
fs/xfs/scrub/alloc.c | 7 +-
fs/xfs/scrub/bmap.c | 16 +-
fs/xfs/scrub/btree.c | 2 +-
fs/xfs/scrub/common.c | 6 +-
fs/xfs/scrub/dabtree.c | 2 +-
fs/xfs/scrub/dir.c | 2 +-
fs/xfs/scrub/fscounters.c | 4 +-
fs/xfs/scrub/health.c | 2 +
fs/xfs/scrub/ialloc.c | 12 +-
fs/xfs/scrub/quota.c | 2 +-
fs/xfs/scrub/refcount.c | 9 +-
fs/xfs/scrub/repair.c | 49 +-
fs/xfs/scrub/rmap.c | 6 +-
fs/xfs/scrub/symlink.c | 6 +-
fs/xfs/xfs_attr_inactive.c | 23 +-
fs/xfs/xfs_attr_list.c | 9 +-
fs/xfs/xfs_bmap_util.c | 47 +-
fs/xfs/xfs_buf.c | 294 +++++-----
fs/xfs/xfs_buf.h | 27 +-
fs/xfs/xfs_dir2_readdir.c | 2 +-
fs/xfs/xfs_discard.c | 2 +-
fs/xfs/xfs_dquot.c | 2 +-
fs/xfs/xfs_extfree_item.c | 18 +-
fs/xfs/xfs_filestream.c | 4 +-
fs/xfs/xfs_fsmap.c | 3 +-
fs/xfs/xfs_fsops.c | 13 +-
fs/xfs/xfs_icache.c | 14 +-
fs/xfs/xfs_inode.c | 648 ++++++---------------
fs/xfs/xfs_inode.h | 69 ++-
fs/xfs/xfs_inode_item.c | 58 +-
fs/xfs/xfs_ioctl.c | 10 +-
fs/xfs/xfs_iomap.c | 8 +-
fs/xfs/xfs_iops.c | 13 +-
fs/xfs/xfs_iops.h | 3 +
fs/xfs/xfs_itable.c | 4 +-
fs/xfs/xfs_iunlink_item.c | 180 ++++++
fs/xfs/xfs_iunlink_item.h | 27 +
fs/xfs/xfs_log.c | 57 +-
fs/xfs/xfs_log.h | 3 +-
fs/xfs/xfs_log_cil.c | 474 +++++++++++----
fs/xfs/xfs_log_priv.h | 58 +-
fs/xfs/xfs_log_recover.c | 204 ++++---
fs/xfs/xfs_mount.c | 3 +-
fs/xfs/xfs_qm.c | 11 +-
fs/xfs/xfs_reflink.c | 46 +-
fs/xfs/xfs_reflink.h | 3 -
fs/xfs/xfs_super.c | 33 +-
fs/xfs/xfs_symlink.c | 2 +-
fs/xfs/xfs_trace.h | 3 +-
fs/xfs/xfs_trans.c | 95 ++-
fs/xfs/xfs_trans.h | 7 +-
fs/xfs/xfs_trans_priv.h | 3 +-
86 files changed, 2332 insertions(+), 1722 deletions(-)
create mode 100644 fs/xfs/xfs_iunlink_item.c
create mode 100644 fs/xfs/xfs_iunlink_item.h


2022-08-05 03:39:57

by pr-tracker-bot

[permalink] [raw]
Subject: Re: [GIT PULL] xfs: new code for 6.0, part 1

The pull request you sent on Thu, 4 Aug 2022 08:14:31 -0700:

> git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-5.20-merge-6

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/b2a88c212e652e94f1e4b635910972ac57ba4e97

Thank you!

--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html