[GIT PULL] xfs: new code for 5.19

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Linus,

Can you please pull the XFS updates for 5.19 from the tag listed
below? It merges cleanly with the TOT kernel I just pulled a couple
of minutes ago, though the diffstat I got on merge:

105 files changed, 4862 insertions(+), 2773 deletions(-)

is slightly different to the diffstat the pull request generated.

If I've made any mistakes or done stuff that is considered wrong or
out of date, let me know and I'll fix them up - it's been a while
since I built a tree for upstream merge.

This is a big update with lots of new code. The tag describes them
all, so I'll just touch on teh higlights. The two main new features
are Large Extent Counts and Logged Attribute Replay - these are two
new foundational features that we are building more complex future
features on top of.

For upcoming functionality, we need to be able to store hundreds of
millions of xattrs per inode. The Large Extent Count feature removes
the limits that prevent this scale of xattr storage, and while we
were modifying the on disk extent count format we also increased the
number of data extents we support per inode from 2^32 to 2^47.

We also need to be able to modify xattrs as part of larger atomic
transactions rather than as standalone transactions. The Logged
Attribute Replay feature introduces the infrastructure that allows
us to use intents to record the attribute modifications in the
journal before we start them, hence allowing other atomic
transactions to log attribute modification intents and then defer
the actual modification to later. If we then crash, log recovery
then guarantees that the attribute is replayed in the context of the
atomic transaction that logged the intent.

A significant chunk of the commits in this merge are for the base
attribute replay functionality along with fixes, improvements and
cleanups related to this new functioanlity.  Allison deserves a big
round of thanks for her ongoing work to get this functionality into
XFS.

There are also many other smaller changes and improvements, so
overall this is one of the bigger XFS merge requests in some time.

I will be following up next week with another smaller pull request -
we already have another round of fixes and improvements to the
logged attribute replay functionality just about ready to go.
They'll soak and test over the next week, and I'll send a pull
request for them near the end of the merge window.

Thanks!

-Dave.


The following changes since commit 9a5280b312e2e7898b6397b2ca3cfd03f67d7be1:

  xfs: reorder iunlink remove operation in xfs_ifree (2022-04-21 08:45:16 +1000)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git tags/xfs-5.19-for-linus

for you to fetch changes up to efd409a4329f6927795be5ae080cd3ec8c014f49:

  Merge branch 'xfs-5.19-quota-warn-remove' into xfs-5.19-for-next (2022-05-12 15:23:07 +1000)

----------------------------------------------------------------
xfs: Changes for 5.19-rc1

This update includes:
- support for printk message indexing.
- large extent counts to provide support for up to 2^47 data extents and 2^32
  attribute extents, allowing us to scale beyond 4 billion data extents
  to billions of xattrs per inode.
- conversion of various flags fields to be consistently declared as
  unsigned bit fields.
- improvements to realtime extent accounting and converts them to per-cpu
  counters to match all the other block and inode accounting.
- reworks core log formatting code to reduce iterations, have a shorter, cleaner
  fast path and generally be easier to understand and maintain.
- improvements to rmap btree searches that reduce overhead by up
  to 30% resulting in xfs_scrub runtime reductions of 15%.
- improvements to reflink that remove the size limitations in remapping operations
  and greatly reduce the size of transaction reservations.
- reworks the minimum log size calculations to allow us to change transaction
  reservations without changing the minimum supported log size.
- removal of quota warning support as it has never been used on Linux.
- intent whiteouts to allow us to cancel intents that are completed entirely
  in memory rather than having use CPU and disk bandwidth formatting and writing
  them into the journal when it is not necessary. This makes rmap, reflink and
  extent freeing slightly more efficient, but provides massive improvements
  for....
- Logged Attribute Replay feature support. This is a fundamental change to the
  way we modify attributes, laying the foundation for future integration of
  attribute modifications as part of other atomic transactional operations the
  filesystem performs.
- Lots of cleanups and fixes for the logged attribute replay functionality.

----------------------------------------------------------------
Allison Henderson (14):
      xfs: Fix double unlock in defer capture code
      xfs: Return from xfs_attr_set_iter if there are no more rmtblks to process
      xfs: Set up infrastructure for log attribute replay
      xfs: Implement attr logging and replay
      xfs: Skip flip flags for delayed attrs
      xfs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred
      xfs: Remove unused xfs_attr_*_args
      xfs: Add log attribute error tag
      xfs: Add larp debug option
      xfs: Merge xfs_delattr_context into xfs_attr_item
      xfs: Add helper function xfs_attr_leaf_addname
      xfs: Add helper function xfs_init_attr_trans
      xfs: add leaf split error tag
      xfs: add leaf to node error tag

Brian Foster (1):
      xfs: fix soft lockup via spinning in filestream ag selection loop

Catherine Hoang (3):
      xfs: remove quota warning limit from struct xfs_quota_limits
      xfs: remove warning counters from struct xfs_dquot_res
      xfs: don't set quota warning values

Chandan Babu R (19):
      xfs: Move extent count limits to xfs_format.h
      xfs: Define max extent length based on on-disk format definition
      xfs: Introduce xfs_iext_max_nextents() helper
      xfs: Use xfs_extnum_t instead of basic data types
      xfs: Introduce xfs_dfork_nextents() helper
      xfs: Use basic types to define xfs_log_dinode's di_nextents and di_anextents
      xfs: Promote xfs_extnum_t and xfs_aextnum_t to 64 and 32-bits respectively
      xfs: Introduce XFS_SB_FEAT_INCOMPAT_NREXT64 and associated per-fs feature bit
      xfs: Introduce XFS_FSOP_GEOM_FLAGS_NREXT64
      xfs: Introduce XFS_DIFLAG2_NREXT64 and associated helpers
      xfs: Use uint64_t to count maximum blocks that can be used by BMBT
      xfs: Introduce macros to represent new maximum extent counts for data/attr forks
      xfs: Replace numbered inode recovery error messages with descriptive ones
      xfs: Introduce per-inode 64-bit extent counters
      xfs: Directory's data fork extent counter can never overflow
      xfs: Conditionally upgrade existing inodes to use large extent counters
      xfs: Decouple XFS_IBULK flags from XFS_IWALK flags
      xfs: Enable bulkstat ioctl to support 64-bit per-inode extent counters
      xfs: Add XFS_SB_FEAT_INCOMPAT_NREXT64 to the list of supported flags

Christoph Hellwig (2):
      xfs: change the type of ic_datap
      xfs: remove xlog_verify_dest_ptr

Darrick J. Wong (16):
      xfs: pass explicit mount pointer to rtalloc query functions
      xfs: recalculate free rt extents after log recovery
      xfs: use a separate frextents counter for rt extent reservations
      xfs: capture buffer ops in the xfs_buf tracepoints
      xfs: simplify xfs_rmap_lookup_le call sites
      xfs: speed up rmap lookups by using non-overlapped lookups when possible
      xfs: speed up write operations by using non-overlapped lookups when possible
      xfs: count EFIs when deciding to ask for a continuation of a refcount update
      xfs: stop artificially limiting the length of bunmap calls
      xfs: remove a __xfs_bunmapi call from reflink
      xfs: create shadow transaction reservations for computing minimum log size
      xfs: report "max_resp" used for min log size computation
      xfs: reduce the absurdly large log operation count
      xfs: reduce transaction reservations with reflink
      xfs: rewrite xfs_reflink_end_cow to use intents
      xfs: rename xfs_*alloc*_log_count to _block_count

Dave Chinner (73):
      xfs: factor out the CIL transaction header building
      xfs: only CIL pushes require a start record
      xfs: embed the xlog_op_header in the unmount record
      xfs: embed the xlog_op_header in the commit record
      xfs: log tickets don't need log client id
      xfs: move log iovec alignment to preparation function
      xfs: reserve space and initialise xlog_op_header in item formatting
      xfs: log ticket region debug is largely useless
      xfs: pass lv chain length into xlog_write()
      xfs: introduce xlog_write_full()
      xfs: introduce xlog_write_partial()
      xfs: xlog_write() no longer needs contwr state
      xfs: xlog_write() doesn't need optype anymore
      xfs: CIL context doesn't need to count iovecs
      xfs: convert attr type flags to unsigned.
      xfs: convert scrub type flags to unsigned.
      xfs: convert bmap extent type flags to unsigned.
      xfs: convert bmapi flags to unsigned.
      xfs: convert AGF log flags to unsigned.
      xfs: convert AGI log flags to unsigned.
      xfs: convert btree buffer log flags to unsigned.
      xfs: convert buffer log item flags to unsigned.
      xfs: convert da btree operations flags to unsigned.
      xfs: convert dquot flags to unsigned.
      xfs: convert log item tracepoint flags to unsigned.
      xfs: convert inode lock flags to unsigned.
      xfs: convert ptag flags to unsigned.
      xfs: convert quota options flags to unsigned.
      xfs: convert shutdown reasons to unsigned.
      xfs: convert log ticket and iclog flags to unsigned.
      Merge branch 'guilt/5.19-miscellaneous' into xfs-5.19-for-next
      Merge branch 'guilt/xfs-unsigned-flags-5.18' into xfs-5.19-for-next
      Merge branch 'guilt/xlog-write-rework' into xfs-5.19-for-next
      Merge tag 'large-extent-counters-v9' of https://github.com/chandanr/linux into xfs-5.19-for-next
      xfs: zero inode fork buffer at allocation
      xfs: fix potential log item leak
      xfs: hide log iovec alignment constraints
      xfs: don't commit the first deferred transaction without intents
      xfs: add log item flags to indicate intents
      xfs: tag transactions that contain intent done items
      xfs: factor and move some code in xfs_log_cil.c
      xfs: add log item method to return related intents
      xfs: whiteouts release intents that are not in the AIL
      xfs: intent item whiteouts
      xfs: detect self referencing btree sibling pointers
      xfs: validate inode fork size against fork format
      xfs: set XFS_FEAT_NLINK correctly
      xfs: validate v5 feature fields
      Merge branch 'guilt/xfs-5.19-misc-2' into xfs-5.19-for-next
      Merge branch 'guilt/xlog-intent-whiteouts' into xfs-5.19-for-next
      Merge tag 'rmap-speedups-5.19_2022-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-5.19-for-next
      Merge tag 'reflink-speedups-5.19_2022-04-28' of git://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-5.19-for-next
      Merge branch 'guilt/xfs-5.19-fuzz-fixes' into xfs-5.19-for-next
      xfs: avoid empty xattr transaction when attrs are inline
      xfs: initialise attrd item to zero
      xfs: make xattri_leaf_bp more useful
      xfs: rework deferred attribute operation setup
      xfs: separate out initial attr_set states
      xfs: kill XFS_DAC_LEAF_ADDNAME_INIT
      xfs: consolidate leaf/node states in xfs_attr_set_iter
      xfs: split remote attr setting out from replace path
      xfs: XFS_DAS_LEAF_REPLACE state only needed if !LARP
      xfs: remote xattr removal in xfs_attr_set_iter() is conditional
      xfs: clean up final attr removal in xfs_attr_set_iter
      xfs: xfs_attr_set_iter() does not need to return EAGAIN
      xfs: introduce attr remove initial states into xfs_attr_set_iter
      xfs: switch attr remove to xfs_attri_set_iter
      xfs: remove xfs_attri_remove_iter
      xfs: use XFS_DA_OP flags in deferred attr ops
      xfs: ATTR_REPLACE algorithm with LARP enabled needs rework
      xfs: detect empty attr leaf blocks in xfs_attr3_leaf_verify
      xfs: can't use kmem_zalloc() for attribute buffers
      Merge branch 'xfs-5.19-quota-warn-remove' into xfs-5.19-for-next

Eric Sandeen (1):
      xfs: revert "xfs: actually bump warning counts when we send warnings"

Jonathan Lassoff (2):
      xfs: Simplify XFS logging methods.
      xfs: Add XFS messages to printk index

Kaixu Xia (1):
      xfs: simplify local variable assignment in file write code

Matthew Wilcox (Oracle) (1):
      xfs: Use generic_file_open()

Yang Xu (1):
      xfs: improve __xfs_set_acl

 fs/xfs/Makefile                 |    1 +
 fs/xfs/libxfs/xfs_alloc.c       |   12 +-
 fs/xfs/libxfs/xfs_alloc.h       |    2 +-
 fs/xfs/libxfs/xfs_attr.c        | 1644 +++++++++++++++++++--------------------
 fs/xfs/libxfs/xfs_attr.h        |  198 ++++-
 fs/xfs/libxfs/xfs_attr_leaf.c   |   64 +-
 fs/xfs/libxfs/xfs_attr_remote.c |   37 +-
 fs/xfs/libxfs/xfs_attr_remote.h |    6 +-
 fs/xfs/libxfs/xfs_bmap.c        |  167 ++--
 fs/xfs/libxfs/xfs_bmap.h        |   58 +-
 fs/xfs/libxfs/xfs_bmap_btree.c  |    9 +-
 fs/xfs/libxfs/xfs_btree.c       |  150 +++-
 fs/xfs/libxfs/xfs_btree.h       |   26 +-
 fs/xfs/libxfs/xfs_da_btree.c    |    4 +
 fs/xfs/libxfs/xfs_da_btree.h    |   25 +-
 fs/xfs/libxfs/xfs_da_format.h   |    9 +-
 fs/xfs/libxfs/xfs_defer.c       |   54 +-
 fs/xfs/libxfs/xfs_defer.h       |    3 +
 fs/xfs/libxfs/xfs_dir2.c        |    8 +
 fs/xfs/libxfs/xfs_errortag.h    |    8 +-
 fs/xfs/libxfs/xfs_format.h      |  189 +++--
 fs/xfs/libxfs/xfs_fs.h          |   41 +-
 fs/xfs/libxfs/xfs_ialloc.c      |    8 +-
 fs/xfs/libxfs/xfs_ialloc.h      |    2 +-
 fs/xfs/libxfs/xfs_inode_buf.c   |  118 ++-
 fs/xfs/libxfs/xfs_inode_fork.c  |   51 +-
 fs/xfs/libxfs/xfs_inode_fork.h  |   76 +-
 fs/xfs/libxfs/xfs_log_format.h  |   79 +-
 fs/xfs/libxfs/xfs_log_recover.h |    2 +
 fs/xfs/libxfs/xfs_log_rlimit.c  |   75 +-
 fs/xfs/libxfs/xfs_quota_defs.h  |   50 +-
 fs/xfs/libxfs/xfs_refcount.c    |   14 +-
 fs/xfs/libxfs/xfs_refcount.h    |   13 +-
 fs/xfs/libxfs/xfs_rmap.c        |  161 ++--
 fs/xfs/libxfs/xfs_rmap.h        |    7 +-
 fs/xfs/libxfs/xfs_rtbitmap.c    |    9 +-
 fs/xfs/libxfs/xfs_sb.c          |   80 +-
 fs/xfs/libxfs/xfs_shared.h      |   24 +-
 fs/xfs/libxfs/xfs_trans_resv.c  |  225 ++++--
 fs/xfs/libxfs/xfs_trans_resv.h  |   16 +-
 fs/xfs/libxfs/xfs_types.h       |   11 +-
 fs/xfs/scrub/bmap.c             |   26 +-
 fs/xfs/scrub/common.c           |    2 +
 fs/xfs/scrub/inode.c            |   20 +-
 fs/xfs/scrub/rtbitmap.c         |    9 +-
 fs/xfs/xfs_acl.c                |    4 +-
 fs/xfs/xfs_acl.h                |    8 +-
 fs/xfs/xfs_attr_item.c          |  824 ++++++++++++++++++++
 fs/xfs/xfs_attr_item.h          |   46 ++
 fs/xfs/xfs_attr_list.c          |    1 +
 fs/xfs/xfs_bmap_item.c          |   27 +-
 fs/xfs/xfs_bmap_util.c          |   27 +-
 fs/xfs/xfs_buf_item.h           |   24 +-
 fs/xfs/xfs_dquot.c              |   18 +-
 fs/xfs/xfs_dquot.h              |    8 -
 fs/xfs/xfs_error.c              |    9 +
 fs/xfs/xfs_error.h              |   20 +-
 fs/xfs/xfs_extfree_item.c       |   23 +-
 fs/xfs/xfs_file.c               |   24 +-
 fs/xfs/xfs_filestream.c         |    7 +-
 fs/xfs/xfs_fsmap.c              |    6 +-
 fs/xfs/xfs_fsops.c              |    7 +-
 fs/xfs/xfs_globals.c            |    1 +
 fs/xfs/xfs_icache.c             |    9 +-
 fs/xfs/xfs_icreate_item.c       |    1 +
 fs/xfs/xfs_inode.c              |   80 +-
 fs/xfs/xfs_inode.h              |   29 +-
 fs/xfs/xfs_inode_item.c         |   48 +-
 fs/xfs/xfs_inode_item_recover.c |  145 +++-
 fs/xfs/xfs_ioctl.c              |    7 +-
 fs/xfs/xfs_ioctl32.c            |    2 +
 fs/xfs/xfs_iomap.c              |   33 +-
 fs/xfs/xfs_iops.c               |    4 +-
 fs/xfs/xfs_itable.c             |   15 +-
 fs/xfs/xfs_itable.h             |    5 +-
 fs/xfs/xfs_iwalk.h              |    2 +-
 fs/xfs/xfs_log.c                |  807 +++++++++----------
 fs/xfs/xfs_log.h                |   90 ++-
 fs/xfs/xfs_log_cil.c            |  391 ++++++----
 fs/xfs/xfs_log_priv.h           |   89 +--
 fs/xfs/xfs_log_recover.c        |    2 +
 fs/xfs/xfs_message.c            |   58 +-
 fs/xfs/xfs_message.h            |   55 +-
 fs/xfs/xfs_mount.c              |   91 ++-
 fs/xfs/xfs_mount.h              |   32 +-
 fs/xfs/xfs_ondisk.h             |    2 +
 fs/xfs/xfs_qm.c                 |    9 -
 fs/xfs/xfs_qm.h                 |    5 -
 fs/xfs/xfs_qm_syscalls.c        |   26 +-
 fs/xfs/xfs_quotaops.c           |    8 +-
 fs/xfs/xfs_refcount_item.c      |   25 +-
 fs/xfs/xfs_reflink.c            |  100 ++-
 fs/xfs/xfs_rmap_item.c          |   25 +-
 fs/xfs/xfs_rtalloc.c            |   41 +
 fs/xfs/xfs_rtalloc.h            |    9 +-
 fs/xfs/xfs_super.c              |   18 +-
 fs/xfs/xfs_symlink.c            |    5 -
 fs/xfs/xfs_sysctl.h             |    1 +
 fs/xfs/xfs_sysfs.c              |   24 +
 fs/xfs/xfs_trace.h              |  100 ++-
 fs/xfs/xfs_trans.c              |   52 +-
 fs/xfs/xfs_trans.h              |   38 +-
 fs/xfs/xfs_trans_dquot.c        |    4 +-
 fs/xfs/xfs_xattr.c              |    2 +-
 104 files changed, 4690 insertions(+), 2676 deletions(-)
 create mode 100644 fs/xfs/xfs_attr_item.c
 create mode 100644 fs/xfs/xfs_attr_item.h
-- 
Dave Chinner
david@xxxxxxxxxxxxx



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux