mbox series

xfs: new code for 6.14

Message ID i6yf5ledzs4qdt5zhrpg7nz5neyygktthupap6uulpuojcx7un@phdanup4alqb (mailing list archive)
State New
Headers show
Series xfs: new code for 6.14 | expand

Pull-request

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

Message

Carlos Maiolino Jan. 21, 2025, 1:09 p.m. UTC
Hi Linus,

could you please pull the patches below?

This pull request are mostly focused on the implementation of reflink
and reverse-mapping support for XFS's real-time devices.
This also includes several bugfixes.

The patches are in linux-next for a few days already, and a trial
merge just now, against your TOT didn't show any conflicts.

Thanks,
Carlos.

The following changes since commit 111d36d6278756128b7d7fab787fdcbf8221cd98:

  xfs: lock dquot buffer before detaching dquot from b_li_list (2025-01-10 10:12:48 +0100)

are available in the Git repository at:

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

for you to fetch changes up to ee10f6fcdb961e810d7b16be1285319c15c78ef6:

  xfs: fix buffer lookup vs release race (2025-01-16 10:19:59 +0100)

----------------------------------------------------------------
New XFS code for 6.14

* Implement reflink support for the realtime device
* Implement reverse-mapping support for the realtime device
* Several bug fixes and cleanups

Signed-off-by: Carlos Maiolino <cem@kernel.org>

----------------------------------------------------------------
Carlos Maiolino (5):
      Merge tag 'xfs-6.13-fixes_2024-12-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into for-next
      Merge tag 'btree-ifork-records_2024-12-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into for-next
      Merge tag 'reserve-rt-metadata-space_2024-12-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into for-next
      Merge tag 'realtime-rmap_2024-12-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into for-next
      Merge tag 'realtime-reflink_2024-12-23' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into for-next

Christoph Hellwig (25):
      xfs: refactor xfs_reflink_find_shared
      xfs: mark xfs_dir_isempty static
      xfs: remove XFS_ILOG_NONCORE
      xfs: remove the t_magic field in struct xfs_trans
      xfs: fix the comment above xfs_discard_endio
      xfs: don't take m_sb_lock in xfs_fs_statfs
      xfs: refactor xfs_fs_statfs
      xfs: constify feature checks
      xfs: fix a double completion for buffers on in-memory targets
      xfs: remove the incorrect comment above xfs_buf_free_maps
      xfs: remove the incorrect comment about the b_pag field
      xfs: move xfs_buf_iowait out of (__)xfs_buf_submit
      xfs: simplify xfs_buf_delwri_pushbuf
      xfs: remove xfs_buf_delwri_submit_buffers
      xfs: move write verification out of _xfs_buf_ioapply
      xfs: move in-memory buftarg handling out of _xfs_buf_ioapply
      xfs: simplify buffer I/O submission
      xfs: move invalidate_kernel_vmap_range to xfs_buf_ioend
      xfs: remove the extra buffer reference in xfs_buf_submit
      xfs: always complete the buffer inline in xfs_buf_submit
      xfs: simplify xfsaild_resubmit_item
      xfs: move b_li_list based retry handling to common code
      xfs: add a b_iodone callback to struct xfs_buf
      xfs: check for dead buffers in xfs_buf_find_insert
      xfs: fix buffer lookup vs release race

Darrick J. Wong (91):
      xfs: don't over-report free space or inodes in statvfs
      xfs: tidy up xfs_iroot_realloc
      xfs: release the dquot buf outside of qli_lock
      xfs: refactor the inode fork memory allocation functions
      xfs: make xfs_iroot_realloc take the new numrecs instead of deltas
      xfs: make xfs_iroot_realloc a bmap btree function
      xfs: tidy up xfs_bmap_broot_realloc a bit
      xfs: hoist the node iroot update code out of xfs_btree_new_iroot
      xfs: hoist the node iroot update code out of xfs_btree_kill_iroot
      xfs: add some rtgroup inode helpers
      xfs: prepare rmap btree cursor tracepoints for realtime
      xfs: prepare to reuse the dquot pointer space in struct xfs_inode
      xfs: simplify the xfs_rmap_{alloc,free}_extent calling conventions
      xfs: support storing records in the inode core root
      xfs: allow inode-based btrees to reserve space in the data device
      xfs: introduce realtime rmap btree ondisk definitions
      xfs: realtime rmap btree transaction reservations
      xfs: add realtime rmap btree operations
      xfs: prepare rmap functions to deal with rtrmapbt
      xfs: add a realtime flag to the rmap update log redo items
      xfs: support recovering rmap intent items targetting realtime extents
      xfs: pretty print metadata file types in error messages
      xfs: support file data forks containing metadata btrees
      xfs: add realtime reverse map inode to metadata directory
      xfs: add metadata reservations for realtime rmap btrees
      xfs: wire up a new metafile type for the realtime rmap
      xfs: wire up rmap map and unmap to the realtime rmapbt
      xfs: create routine to allocate and initialize a realtime rmap btree inode
      xfs: wire up getfsmap to the realtime reverse mapping btree
      xfs: check that the rtrmapbt maxlevels doesn't increase when growing fs
      xfs: report realtime rmap btree corruption errors to the health system
      xfs: allow queued realtime intents to drain before scrubbing
      xfs: scrub the realtime rmapbt
      xfs: cross-reference realtime bitmap to realtime rmapbt scrubber
      xfs: cross-reference the realtime rmapbt
      xfs: scan rt rmap when we're doing an intense rmap check of bmbt mappings
      xfs: scrub the metadir path of rt rmap btree files
      xfs: walk the rt reverse mapping tree when rebuilding rmap
      xfs: online repair of realtime file bmaps
      xfs: repair inodes that have realtime extents
      xfs: repair rmap btree inodes
      xfs: online repair of realtime bitmaps for a realtime group
      xfs: support repairing metadata btrees rooted in metadir inodes
      xfs: online repair of the realtime rmap btree
      xfs: create a shadow rmap btree during realtime rmap repair
      xfs: hook live realtime rmap operations during a repair operation
      xfs: don't shut down the filesystem for media failures beyond end of log
      xfs: react to fsdax failure notifications on the rt device
      xfs: enable realtime rmap btree
      xfs: prepare refcount btree cursor tracepoints for realtime
      xfs: namespace the maximum length/refcount symbols
      xfs: introduce realtime refcount btree ondisk definitions
      xfs: realtime refcount btree transaction reservations
      xfs: add realtime refcount btree operations
      xfs: prepare refcount functions to deal with rtrefcountbt
      xfs: add a realtime flag to the refcount update log redo items
      xfs: support recovering refcount intent items targetting realtime extents
      xfs: add realtime refcount btree block detection to log recovery
      xfs: add realtime refcount btree inode to metadata directory
      xfs: add metadata reservations for realtime refcount btree
      xfs: wire up a new metafile type for the realtime refcount
      xfs: wire up realtime refcount btree cursors
      xfs: create routine to allocate and initialize a realtime refcount btree inode
      xfs: update rmap to allow cow staging extents in the rt rmap
      xfs: compute rtrmap btree max levels when reflink enabled
      xfs: refactor reflink quota updates
      xfs: enable CoW for realtime data
      xfs: enable sharing of realtime file blocks
      xfs: allow inodes to have the realtime and reflink flags
      xfs: recover CoW leftovers in the realtime volume
      xfs: fix xfs_get_extsz_hint behavior with realtime alwayscow files
      xfs: apply rt extent alignment constraints to CoW extsize hint
      xfs: enable extent size hints for CoW operations
      xfs: check that the rtrefcount maxlevels doesn't increase when growing fs
      xfs: report realtime refcount btree corruption errors to the health system
      xfs: scrub the realtime refcount btree
      xfs: cross-reference checks with the rt refcount btree
      xfs: allow overlapping rtrmapbt records for shared data extents
      xfs: check reference counts of gaps between rt refcount records
      xfs: allow dquot rt block count to exceed rt blocks on reflink fs
      xfs: detect and repair misaligned rtinherit directory cowextsize hints
      xfs: scrub the metadir path of rt refcount btree files
      xfs: don't flag quota rt block usage on rtreflink filesystems
      xfs: check new rtbitmap records against rt refcount btree
      xfs: walk the rt reference count tree when rebuilding rmap
      xfs: capture realtime CoW staging extents when rebuilding rt rmapbt
      xfs: online repair of the realtime refcount btree
      xfs: repair inodes that have a refcount btree in the data fork
      xfs: check for shared rt extents when rebuilding rt file's data fork
      xfs: fix CoW forks for realtime files
      xfs: enable realtime reflink

Long Li (4):
      xfs: fix mount hang during primary superblock recovery failure
      xfs: clean up xfs_end_ioend() to reuse local variables
      xfs: remove redundant update for ticket->t_curr_res in xfs_log_ticket_regrant
      xfs: remove bp->b_error check in xfs_attr3_root_inactive

Mirsad Todorovac (1):
      xfs/libxfs: replace kmalloc() and memcpy() with kmemdup()

 fs/xfs/Makefile                      |    6 +
 fs/xfs/libxfs/xfs_ag_resv.c          |    3 +
 fs/xfs/libxfs/xfs_attr.c             |    4 +-
 fs/xfs/libxfs/xfs_bmap.c             |   34 +-
 fs/xfs/libxfs/xfs_bmap_btree.c       |  111 ++++
 fs/xfs/libxfs/xfs_bmap_btree.h       |    3 +
 fs/xfs/libxfs/xfs_btree.c            |  411 +++++++++++---
 fs/xfs/libxfs/xfs_btree.h            |   28 +-
 fs/xfs/libxfs/xfs_btree_mem.c        |    1 +
 fs/xfs/libxfs/xfs_btree_staging.c    |   10 +-
 fs/xfs/libxfs/xfs_defer.h            |    2 +
 fs/xfs/libxfs/xfs_dir2.c             |    9 +-
 fs/xfs/libxfs/xfs_dir2.h             |    1 -
 fs/xfs/libxfs/xfs_errortag.h         |    4 +-
 fs/xfs/libxfs/xfs_exchmaps.c         |    4 +-
 fs/xfs/libxfs/xfs_format.h           |   51 +-
 fs/xfs/libxfs/xfs_fs.h               |   10 +-
 fs/xfs/libxfs/xfs_health.h           |    6 +-
 fs/xfs/libxfs/xfs_inode_buf.c        |   65 ++-
 fs/xfs/libxfs/xfs_inode_fork.c       |  201 +++----
 fs/xfs/libxfs/xfs_inode_fork.h       |    6 +-
 fs/xfs/libxfs/xfs_log_format.h       |   16 +-
 fs/xfs/libxfs/xfs_log_recover.h      |    4 +
 fs/xfs/libxfs/xfs_metadir.c          |    4 +
 fs/xfs/libxfs/xfs_metafile.c         |  223 ++++++++
 fs/xfs/libxfs/xfs_metafile.h         |   13 +
 fs/xfs/libxfs/xfs_ondisk.h           |    4 +
 fs/xfs/libxfs/xfs_refcount.c         |  278 +++++++--
 fs/xfs/libxfs/xfs_refcount.h         |   23 +-
 fs/xfs/libxfs/xfs_rmap.c             |  178 ++++--
 fs/xfs/libxfs/xfs_rmap.h             |   12 +-
 fs/xfs/libxfs/xfs_rtbitmap.c         |    2 +-
 fs/xfs/libxfs/xfs_rtbitmap.h         |    9 +
 fs/xfs/libxfs/xfs_rtgroup.c          |   74 ++-
 fs/xfs/libxfs/xfs_rtgroup.h          |   58 +-
 fs/xfs/libxfs/xfs_rtrefcount_btree.c |  757 +++++++++++++++++++++++++
 fs/xfs/libxfs/xfs_rtrefcount_btree.h |  189 +++++++
 fs/xfs/libxfs/xfs_rtrmap_btree.c     | 1035 ++++++++++++++++++++++++++++++++++
 fs/xfs/libxfs/xfs_rtrmap_btree.h     |  210 +++++++
 fs/xfs/libxfs/xfs_sb.c               |   14 +
 fs/xfs/libxfs/xfs_shared.h           |   21 +
 fs/xfs/libxfs/xfs_trans_resv.c       |   37 +-
 fs/xfs/libxfs/xfs_trans_space.h      |   13 +
 fs/xfs/libxfs/xfs_types.h            |    7 +
 fs/xfs/scrub/agheader_repair.c       |    2 +-
 fs/xfs/scrub/alloc_repair.c          |    5 +-
 fs/xfs/scrub/bmap.c                  |  126 ++++-
 fs/xfs/scrub/bmap_repair.c           |  148 ++++-
 fs/xfs/scrub/common.c                |  170 +++++-
 fs/xfs/scrub/common.h                |   26 +-
 fs/xfs/scrub/cow_repair.c            |  180 +++++-
 fs/xfs/scrub/health.c                |    2 +
 fs/xfs/scrub/inode.c                 |   41 +-
 fs/xfs/scrub/inode_repair.c          |  193 ++++++-
 fs/xfs/scrub/metapath.c              |    6 +
 fs/xfs/scrub/newbt.c                 |   42 ++
 fs/xfs/scrub/newbt.h                 |    1 +
 fs/xfs/scrub/quota.c                 |    8 +-
 fs/xfs/scrub/quota_repair.c          |    2 +-
 fs/xfs/scrub/reap.c                  |  288 +++++++++-
 fs/xfs/scrub/reap.h                  |    9 +
 fs/xfs/scrub/refcount.c              |    2 +-
 fs/xfs/scrub/refcount_repair.c       |    6 +-
 fs/xfs/scrub/repair.c                |  197 +++++++
 fs/xfs/scrub/repair.h                |   24 +
 fs/xfs/scrub/rgb_bitmap.h            |   37 ++
 fs/xfs/scrub/rgsuper.c               |    6 +-
 fs/xfs/scrub/rmap_repair.c           |   91 ++-
 fs/xfs/scrub/rtb_bitmap.h            |   37 ++
 fs/xfs/scrub/rtbitmap.c              |   77 ++-
 fs/xfs/scrub/rtbitmap.h              |   55 ++
 fs/xfs/scrub/rtbitmap_repair.c       |  451 ++++++++++++++-
 fs/xfs/scrub/rtrefcount.c            |  661 ++++++++++++++++++++++
 fs/xfs/scrub/rtrefcount_repair.c     |  783 +++++++++++++++++++++++++
 fs/xfs/scrub/rtrmap.c                |  323 +++++++++++
 fs/xfs/scrub/rtrmap_repair.c         | 1006 +++++++++++++++++++++++++++++++++
 fs/xfs/scrub/rtsummary.c             |   17 +-
 fs/xfs/scrub/rtsummary_repair.c      |    3 +-
 fs/xfs/scrub/scrub.c                 |   18 +-
 fs/xfs/scrub/scrub.h                 |   28 +-
 fs/xfs/scrub/stats.c                 |    2 +
 fs/xfs/scrub/tempexch.h              |    2 +-
 fs/xfs/scrub/tempfile.c              |   21 +-
 fs/xfs/scrub/trace.c                 |    1 +
 fs/xfs/scrub/trace.h                 |  280 ++++++++-
 fs/xfs/xfs_aops.c                    |    2 +-
 fs/xfs/xfs_attr_inactive.c           |    5 -
 fs/xfs/xfs_buf.c                     |  606 ++++++++------------
 fs/xfs/xfs_buf.h                     |   11 +-
 fs/xfs/xfs_buf_item.h                |    5 -
 fs/xfs/xfs_buf_item_recover.c        |   19 +-
 fs/xfs/xfs_discard.c                 |    2 +-
 fs/xfs/xfs_dquot.c                   |   26 +-
 fs/xfs/xfs_dquot.h                   |    3 +
 fs/xfs/xfs_drain.c                   |   20 +-
 fs/xfs/xfs_drain.h                   |    7 +-
 fs/xfs/xfs_error.c                   |    3 +
 fs/xfs/xfs_exchrange.c               |    3 +
 fs/xfs/xfs_fsmap.c                   |  193 ++++++-
 fs/xfs/xfs_fsops.c                   |   30 +
 fs/xfs/xfs_health.c                  |    2 +
 fs/xfs/xfs_inode.c                   |   19 +-
 fs/xfs/xfs_inode.h                   |   16 +-
 fs/xfs/xfs_inode_item.c              |   30 +-
 fs/xfs/xfs_inode_item_recover.c      |   48 +-
 fs/xfs/xfs_ioctl.c                   |   21 +-
 fs/xfs/xfs_log.c                     |    2 -
 fs/xfs/xfs_log_recover.c             |    4 +
 fs/xfs/xfs_mount.c                   |   14 +
 fs/xfs/xfs_mount.h                   |   25 +-
 fs/xfs/xfs_notify_failure.c          |  230 +++++---
 fs/xfs/xfs_notify_failure.h          |   11 +
 fs/xfs/xfs_qm.c                      |   10 +-
 fs/xfs/xfs_qm_bhv.c                  |   26 +-
 fs/xfs/xfs_quota.h                   |    5 -
 fs/xfs/xfs_refcount_item.c           |  240 +++++++-
 fs/xfs/xfs_reflink.c                 |  321 ++++++++---
 fs/xfs/xfs_reflink.h                 |    4 +-
 fs/xfs/xfs_rmap_item.c               |  216 ++++++-
 fs/xfs/xfs_rtalloc.c                 |  121 +++-
 fs/xfs/xfs_rtalloc.h                 |   20 +
 fs/xfs/xfs_stats.c                   |    5 +-
 fs/xfs/xfs_stats.h                   |    3 +
 fs/xfs/xfs_super.c                   |  142 +++--
 fs/xfs/xfs_super.h                   |    1 -
 fs/xfs/xfs_trace.h                   |  270 ++++++---
 fs/xfs/xfs_trans.c                   |    6 +-
 fs/xfs/xfs_trans.h                   |    1 -
 fs/xfs/xfs_trans_ail.c               |    9 +-
 fs/xfs/xfs_trans_buf.c               |    8 +-
 fs/xfs/xfs_trans_dquot.c             |    8 +-
 131 files changed, 10861 insertions(+), 1440 deletions(-)
 create mode 100644 fs/xfs/libxfs/xfs_rtrefcount_btree.c
 create mode 100644 fs/xfs/libxfs/xfs_rtrefcount_btree.h
 create mode 100644 fs/xfs/libxfs/xfs_rtrmap_btree.c
 create mode 100644 fs/xfs/libxfs/xfs_rtrmap_btree.h
 create mode 100644 fs/xfs/scrub/rgb_bitmap.h
 create mode 100644 fs/xfs/scrub/rtb_bitmap.h
 create mode 100644 fs/xfs/scrub/rtrefcount.c
 create mode 100644 fs/xfs/scrub/rtrefcount_repair.c
 create mode 100644 fs/xfs/scrub/rtrmap.c
 create mode 100644 fs/xfs/scrub/rtrmap_repair.c
 create mode 100644 fs/xfs/xfs_notify_failure.h