mbox series

[5.4,CANDIDATE,00/25] xfs stable candidate patches for 5.4.y (from v5.10)

Message ID 20230213040445.192946-1-chandan.babu@oracle.com (mailing list archive)
Headers show
Series xfs stable candidate patches for 5.4.y (from v5.10) | expand

Message

Chandan Babu R Feb. 13, 2023, 4:04 a.m. UTC
Hi Darrick,

This 5.4.y backport series contains fixes from v5.10 release.

This patchset has been tested by executing fstests (via kdevops) using
the following XFS configurations,

1. No CRC (with 512 and 4k block size).
2. Reflink/Rmapbt (1k and 4k block size).
3. Reflink without Rmapbt.
4. External log device.

The following is the list of commits along with corresponding
dependent commits.

1. xfs: log new intent items created as part of finishing recovered intent
   items
   Dependent commits
   1. xfs: remove the xfs_efi_log_item_t typedef
   2. xfs: remove the xfs_efd_log_item_t typedef
   3. xfs: remove the xfs_inode_log_item_t typedef
   4. xfs: factor out a xfs_defer_create_intent helper
   5. xfs: merge the ->log_item defer op into ->create_intent
   6. xfs: merge the ->diff_items defer op into ->create_intent
   7. xfs: turn dfp_intent into a xfs_log_item
   8. xfs: refactor xfs_defer_finish_noroll

2. xfs: fix finobt btree block recovery ordering
3. xfs: proper replay of deferred ops queued during log recovery
4. xfs: xfs_defer_capture should absorb remaining block reservations
5  xfs: xfs_defer_capture should absorb remaining transaction reservation

6. xfs: fix an incore inode UAF in xfs_bui_recover
   Dependent commits
   1. xfs: clean up bmap intent item recovery checking
   2. xfs: clean up xfs_bui_item_recover iget/trans_alloc/ilock ordering

7. xfs: change the order in which child and parent defer ops are finished

8. xfs: periodically relog deferred intent items
   Dependent commits
   1. xfs: prevent UAF in xfs_log_item_in_current_chkpt

9. xfs: only relog deferred intent items if free space in the log gets low
   Dependent commits
   1. xfs: expose the log push threshold

10. xfs: fix missing CoW blocks writeback conversion retry

11. xfs: ensure inobt record walks always make forward progress
    Dependent commits
    1. xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks

12. xfs: sync lazy sb accounting on quiesce of read-only mounts

The last commit was picked from v5.12 since failure rate of recovery loop
tests would increase drastically for some xfs configurations without applying
it.

Brian Foster (1):
  xfs: sync lazy sb accounting on quiesce of read-only mounts

Christoph Hellwig (8):
  xfs: remove the xfs_efi_log_item_t typedef
  xfs: remove the xfs_efd_log_item_t typedef
  xfs: remove the xfs_inode_log_item_t typedef
  xfs: factor out a xfs_defer_create_intent helper
  xfs: merge the ->log_item defer op into ->create_intent
  xfs: merge the ->diff_items defer op into ->create_intent
  xfs: turn dfp_intent into a xfs_log_item
  xfs: refactor xfs_defer_finish_noroll

Darrick J. Wong (15):
  xfs: log new intent items created as part of finishing recovered
    intent items
  xfs: proper replay of deferred ops queued during log recovery
  xfs: xfs_defer_capture should absorb remaining block reservations
  xfs: xfs_defer_capture should absorb remaining transaction reservation
  xfs: clean up bmap intent item recovery checking
  xfs: clean up xfs_bui_item_recover iget/trans_alloc/ilock ordering
  xfs: fix an incore inode UAF in xfs_bui_recover
  xfs: change the order in which child and parent defer ops are finished
  xfs: periodically relog deferred intent items
  xfs: expose the log push threshold
  xfs: only relog deferred intent items if free space in the log gets
    low
  xfs: fix missing CoW blocks writeback conversion retry
  xfs: ensure inobt record walks always make forward progress
  xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
  xfs: prevent UAF in xfs_log_item_in_current_chkpt

Dave Chinner (1):
  xfs: fix finobt btree block recovery ordering

 fs/xfs/libxfs/xfs_defer.c       | 358 ++++++++++++++++++++++++--------
 fs/xfs/libxfs/xfs_defer.h       |  49 ++++-
 fs/xfs/libxfs/xfs_inode_fork.c  |   2 +-
 fs/xfs/libxfs/xfs_trans_inode.c |   2 +-
 fs/xfs/xfs_aops.c               |   4 +-
 fs/xfs/xfs_bmap_item.c          | 238 +++++++++++----------
 fs/xfs/xfs_bmap_item.h          |   3 +-
 fs/xfs/xfs_extfree_item.c       | 175 +++++++++-------
 fs/xfs/xfs_extfree_item.h       |  18 +-
 fs/xfs/xfs_icreate_item.c       |   1 +
 fs/xfs/xfs_inode.c              |   4 +-
 fs/xfs/xfs_inode_item.c         |   2 +-
 fs/xfs/xfs_inode_item.h         |   4 +-
 fs/xfs/xfs_iwalk.c              |  27 ++-
 fs/xfs/xfs_log.c                |  68 ++++--
 fs/xfs/xfs_log.h                |   3 +
 fs/xfs/xfs_log_cil.c            |   8 +-
 fs/xfs/xfs_log_recover.c        | 160 ++++++++------
 fs/xfs/xfs_mount.c              |   3 +-
 fs/xfs/xfs_refcount_item.c      | 173 ++++++++-------
 fs/xfs/xfs_refcount_item.h      |   3 +-
 fs/xfs/xfs_rmap_item.c          | 161 +++++++-------
 fs/xfs/xfs_rmap_item.h          |   3 +-
 fs/xfs/xfs_stats.c              |   4 +
 fs/xfs/xfs_stats.h              |   1 +
 fs/xfs/xfs_super.c              |   8 +-
 fs/xfs/xfs_trace.h              |   1 +
 fs/xfs/xfs_trans.h              |  10 +
 28 files changed, 946 insertions(+), 547 deletions(-)

Comments

Darrick J. Wong Feb. 15, 2023, 4:21 p.m. UTC | #1
On Mon, Feb 13, 2023 at 09:34:20AM +0530, Chandan Babu R wrote:
> Hi Darrick,
> 
> This 5.4.y backport series contains fixes from v5.10 release.
> 
> This patchset has been tested by executing fstests (via kdevops) using
> the following XFS configurations,
> 
> 1. No CRC (with 512 and 4k block size).
> 2. Reflink/Rmapbt (1k and 4k block size).
> 3. Reflink without Rmapbt.
> 4. External log device.
> 
> The following is the list of commits along with corresponding
> dependent commits.
> 
> 1. xfs: log new intent items created as part of finishing recovered intent
>    items
>    Dependent commits
>    1. xfs: remove the xfs_efi_log_item_t typedef
>    2. xfs: remove the xfs_efd_log_item_t typedef
>    3. xfs: remove the xfs_inode_log_item_t typedef
>    4. xfs: factor out a xfs_defer_create_intent helper
>    5. xfs: merge the ->log_item defer op into ->create_intent
>    6. xfs: merge the ->diff_items defer op into ->create_intent
>    7. xfs: turn dfp_intent into a xfs_log_item
>    8. xfs: refactor xfs_defer_finish_noroll
> 
> 2. xfs: fix finobt btree block recovery ordering
> 3. xfs: proper replay of deferred ops queued during log recovery
> 4. xfs: xfs_defer_capture should absorb remaining block reservations
> 5  xfs: xfs_defer_capture should absorb remaining transaction reservation
> 
> 6. xfs: fix an incore inode UAF in xfs_bui_recover
>    Dependent commits
>    1. xfs: clean up bmap intent item recovery checking
>    2. xfs: clean up xfs_bui_item_recover iget/trans_alloc/ilock ordering
> 
> 7. xfs: change the order in which child and parent defer ops are finished
> 
> 8. xfs: periodically relog deferred intent items
>    Dependent commits
>    1. xfs: prevent UAF in xfs_log_item_in_current_chkpt
> 
> 9. xfs: only relog deferred intent items if free space in the log gets low
>    Dependent commits
>    1. xfs: expose the log push threshold
> 
> 10. xfs: fix missing CoW blocks writeback conversion retry
> 
> 11. xfs: ensure inobt record walks always make forward progress
>     Dependent commits
>     1. xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
> 
> 12. xfs: sync lazy sb accounting on quiesce of read-only mounts
> 
> The last commit was picked from v5.12 since failure rate of recovery loop
> tests would increase drastically for some xfs configurations without applying
> it.

Looks good to me; thanks for putting this together!
Acked-by: Darrick J. Wong <djwong@kernel.org>

--D

> 
> Brian Foster (1):
>   xfs: sync lazy sb accounting on quiesce of read-only mounts
> 
> Christoph Hellwig (8):
>   xfs: remove the xfs_efi_log_item_t typedef
>   xfs: remove the xfs_efd_log_item_t typedef
>   xfs: remove the xfs_inode_log_item_t typedef
>   xfs: factor out a xfs_defer_create_intent helper
>   xfs: merge the ->log_item defer op into ->create_intent
>   xfs: merge the ->diff_items defer op into ->create_intent
>   xfs: turn dfp_intent into a xfs_log_item
>   xfs: refactor xfs_defer_finish_noroll
> 
> Darrick J. Wong (15):
>   xfs: log new intent items created as part of finishing recovered
>     intent items
>   xfs: proper replay of deferred ops queued during log recovery
>   xfs: xfs_defer_capture should absorb remaining block reservations
>   xfs: xfs_defer_capture should absorb remaining transaction reservation
>   xfs: clean up bmap intent item recovery checking
>   xfs: clean up xfs_bui_item_recover iget/trans_alloc/ilock ordering
>   xfs: fix an incore inode UAF in xfs_bui_recover
>   xfs: change the order in which child and parent defer ops are finished
>   xfs: periodically relog deferred intent items
>   xfs: expose the log push threshold
>   xfs: only relog deferred intent items if free space in the log gets
>     low
>   xfs: fix missing CoW blocks writeback conversion retry
>   xfs: ensure inobt record walks always make forward progress
>   xfs: fix the forward progress assertion in xfs_iwalk_run_callbacks
>   xfs: prevent UAF in xfs_log_item_in_current_chkpt
> 
> Dave Chinner (1):
>   xfs: fix finobt btree block recovery ordering
> 
>  fs/xfs/libxfs/xfs_defer.c       | 358 ++++++++++++++++++++++++--------
>  fs/xfs/libxfs/xfs_defer.h       |  49 ++++-
>  fs/xfs/libxfs/xfs_inode_fork.c  |   2 +-
>  fs/xfs/libxfs/xfs_trans_inode.c |   2 +-
>  fs/xfs/xfs_aops.c               |   4 +-
>  fs/xfs/xfs_bmap_item.c          | 238 +++++++++++----------
>  fs/xfs/xfs_bmap_item.h          |   3 +-
>  fs/xfs/xfs_extfree_item.c       | 175 +++++++++-------
>  fs/xfs/xfs_extfree_item.h       |  18 +-
>  fs/xfs/xfs_icreate_item.c       |   1 +
>  fs/xfs/xfs_inode.c              |   4 +-
>  fs/xfs/xfs_inode_item.c         |   2 +-
>  fs/xfs/xfs_inode_item.h         |   4 +-
>  fs/xfs/xfs_iwalk.c              |  27 ++-
>  fs/xfs/xfs_log.c                |  68 ++++--
>  fs/xfs/xfs_log.h                |   3 +
>  fs/xfs/xfs_log_cil.c            |   8 +-
>  fs/xfs/xfs_log_recover.c        | 160 ++++++++------
>  fs/xfs/xfs_mount.c              |   3 +-
>  fs/xfs/xfs_refcount_item.c      | 173 ++++++++-------
>  fs/xfs/xfs_refcount_item.h      |   3 +-
>  fs/xfs/xfs_rmap_item.c          | 161 +++++++-------
>  fs/xfs/xfs_rmap_item.h          |   3 +-
>  fs/xfs/xfs_stats.c              |   4 +
>  fs/xfs/xfs_stats.h              |   1 +
>  fs/xfs/xfs_super.c              |   8 +-
>  fs/xfs/xfs_trace.h              |   1 +
>  fs/xfs/xfs_trans.h              |  10 +
>  28 files changed, 946 insertions(+), 547 deletions(-)
> 
> -- 
> 2.35.1
>