[PATCH 0/9] xfs: Delayed Attributes

Allison Henderson
2019-04-12T22:52:48Z

Hi all,

This set is a subset of a larger series for parent pointers (v9).
Delayed attributes allow attribute operations (set and remove) to be
logged and committed in the same way that other delayed operations do.
This will help break up more complex operations when we later introduce
parent pointers which can be used in a number of optimizations. Since
delayed attributes can be implemented as a stand alone feature, I've
decided to subdivide the set to help make it more manageable.

Changes since parent pointers v9:
This is mostly to update the set onto more recent code. Some time
during v8, concerns were raised about the transaction becoming too
large, and we discussed breaking up the set operation by periodically
returning EAGAIN to cycle out the transaction during the finish routine.
This is done in patches 7 and 8, but I dont recall them getting feedback
as people were quite busy at the time.

Questions, comments, feedback appreciated!

Thanks all!
Allion

Allison Henderson (9):
xfs: Remove all strlen in all xfs_attr_* functions for attr names.
xfs: Hold inode locks in xfs_ialloc
xfs: Add trans toggle to attr routines
xfs: Set up infastructure for deferred attribute operations
xfs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred
xfs: Add xfs_has_attr and subroutines
xfs: Add attr context to log item
xfs: Roll delayed attr operations by returning EAGAIN
xfs: Remove roll_trans boolean

fs/xfs/Makefile | 2 +
fs/xfs/libxfs/xfs_attr.c | 316 ++++++++++++++-------
fs/xfs/libxfs/xfs_attr.h | 61 ++++-
fs/xfs/libxfs/xfs_attr_leaf.c | 48 +++-
fs/xfs/libxfs/xfs_attr_leaf.h | 3 +-
fs/xfs/libxfs/xfs_attr_remote.c | 20 --
fs/xfs/libxfs/xfs_defer.c | 1 +
fs/xfs/libxfs/xfs_defer.h | 3 +
fs/xfs/libxfs/xfs_log_format.h | 44 ++-
fs/xfs/libxfs/xfs_types.h | 1 +
fs/xfs/scrub/common.c | 2 +
fs/xfs/xfs_acl.c | 14 +-
fs/xfs/xfs_attr_item.c | 587 ++++++++++++++++++++++++++++++++++++++++
fs/xfs/xfs_attr_item.h | 103 +++++++
fs/xfs/xfs_inode.c | 6 +-
fs/xfs/xfs_ioctl.c | 15 +-
fs/xfs/xfs_ioctl32.c | 2 +
fs/xfs/xfs_iops.c | 7 +-
fs/xfs/xfs_log_recover.c | 172 ++++++++++++
fs/xfs/xfs_ondisk.h | 2 +
fs/xfs/xfs_qm.c | 1 +
fs/xfs/xfs_symlink.c | 3 +
fs/xfs/xfs_trans.h | 12 +
fs/xfs/xfs_trans_attr.c | 250 +++++++++++++++++
fs/xfs/xfs_xattr.c | 11 +-
25 files changed, 1535 insertions(+), 151 deletions(-)
create mode 100644 fs/xfs/xfs_attr_item.c
create mode 100644 fs/xfs/xfs_attr_item.h
create mode 100644 fs/xfs/xfs_trans_attr.c

--
2.7.4