[PATCHSET v30.3 01/16] xfs: improve log incompat feature handling

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

 



Hi all,

This patchset improves the performance of log incompat feature bit
handling by making a few changes to how the filesystem handles them.
First, we now only clear the bits during a clean unmount to reduce calls
to the (expensive) upgrade function to once per bit per mount.  Second,
we now only allow incompat feature upgrades for sysadmins or if the
sysadmin explicitly allows it via mount option.  Currently the only log
incompat user is logged xattrs, which requires CONFIG_XFS_DEBUG=y, so
there should be no user visible impact to this change.

If you're going to start using this code, I strongly recommend pulling
from my git trees, which are linked below.

This has been running on the djcloud for months with no problems.  Enjoy!
Comments and questions are, as always, welcome.

--D

kernel git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfs-linux.git/log/?h=log-incompat-permissions-6.10
---
Commits in this patchset:
 * xfs: pass xfs_buf lookup flags to xfs_*read_agi
 * xfs: fix an AGI lock acquisition ordering problem in xrep_dinode_findmode
 * xfs: fix potential AGI <-> ILOCK ABBA deadlock in xrep_dinode_findmode_walk_directory
 * xfs: fix error bailout in xrep_abt_build_new_trees
 * xfs: only clear log incompat flags at clean unmount
---
 .../filesystems/xfs/xfs-online-fsck-design.rst     |    3 -
 fs/xfs/libxfs/xfs_ag.c                             |    8 ++-
 fs/xfs/libxfs/xfs_ialloc.c                         |   16 ++++--
 fs/xfs/libxfs/xfs_ialloc.h                         |    5 +-
 fs/xfs/libxfs/xfs_ialloc_btree.c                   |    4 +-
 fs/xfs/scrub/alloc_repair.c                        |    2 -
 fs/xfs/scrub/common.c                              |    4 +-
 fs/xfs/scrub/fscounters.c                          |    2 -
 fs/xfs/scrub/inode_repair.c                        |   50 ++++++++++++++++++++
 fs/xfs/scrub/iscan.c                               |   36 ++++++++++++++
 fs/xfs/scrub/iscan.h                               |   15 ++++++
 fs/xfs/scrub/repair.c                              |    6 +-
 fs/xfs/scrub/trace.h                               |   10 +++-
 fs/xfs/xfs_inode.c                                 |    8 ++-
 fs/xfs/xfs_iwalk.c                                 |    4 +-
 fs/xfs/xfs_log.c                                   |   28 -----------
 fs/xfs/xfs_log.h                                   |    2 -
 fs/xfs/xfs_log_priv.h                              |    3 -
 fs/xfs/xfs_log_recover.c                           |   19 +-------
 fs/xfs/xfs_mount.c                                 |    8 +++
 fs/xfs/xfs_mount.h                                 |    6 ++
 fs/xfs/xfs_xattr.c                                 |   42 ++---------------
 22 files changed, 160 insertions(+), 121 deletions(-)





[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