On Mon, Sep 16, 2019 at 11:41:13AM -0700, Allison Collins wrote: > On 9/16/19 5:27 AM, Brian Foster wrote: > > On Thu, Sep 05, 2019 at 03:18:18PM -0700, Allison Collins wrote: > > > Hi all, > > > > > > This set is a subset of a larger series for parent pointers. > > > 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. Delayed > > > attributes may also provide the infastructure to later break up large > > > attributes into smaller transactions instead of one large bwrite. > > > > > > Changes since v2: > > > Mostly review updates collected since v2. Patch 17 is new and adds a > > > new feature bit that is enabled through mkfs.xfs -n delattr. Attr > > > renames have been simplified into separate remove and set opertaions > > > which removes the need for the INCOMPLETE state used in non delayed > > > operations > > > > > > I've also made the corresponding updates to the user space side, and > > > xfstests as well. > > > > > > Question, comment and feedback appreciated! > > > > > > Thanks all! > > > Allison > > > > > > Allison Collins (15): > > > xfs: Replace attribute parameters with struct xfs_name > > > > Hi Allison, > > > > The first patch in the series doesn't apply to current for-next or > > master. What is the baseline for this series? Perhaps a rebase is in > > order..? > > > > Brian > > The base line for the kernel space set is: > eb77b23 xfs: add a xfs_valid_startblock helper > Hmm, I still cannot apply: $ git log --oneline -1 eb77b23b565e (HEAD -> ac-delayed-attrs-v3, tag: xfs-5.4-merge-4) xfs: add a xfs_valid_startblock helper $ git am <mbox> Applying: xfs: Replace attribute parameters with struct xfs_name error: patch failed: fs/xfs/libxfs/xfs_attr.c:61 error: fs/xfs/libxfs/xfs_attr.c: patch does not apply error: patch failed: fs/xfs/libxfs/xfs_attr.h:144 error: fs/xfs/libxfs/xfs_attr.h: patch does not apply error: patch failed: fs/xfs/xfs_acl.c:135 error: fs/xfs/xfs_acl.c: patch does not apply error: patch failed: fs/xfs/xfs_ioctl.c:431 error: fs/xfs/xfs_ioctl.c: patch does not apply error: patch failed: fs/xfs/xfs_iops.c:49 error: fs/xfs/xfs_iops.c: patch does not apply error: patch failed: fs/xfs/xfs_xattr.c:20 error: fs/xfs/xfs_xattr.c: patch does not apply Patch failed at 0001 xfs: Replace attribute parameters with struct xfs_name hint: Use 'git am --show-current-patch' to see the failed patch When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Have you tried to pull the patches from the mailing list and apply to your baseline locally? I haven't seen issues merging other patches, so I don't _think_ my local tree is busted.. Brian > And the user space set is: > e74aec5 xfsprogs: Release v5.3.0-rc1 > > And xfstests: > cda9817 common/quota: enable project quota correctly on f2fs > > Yes, the for-next's may have advanced a bit since, so I'll need to update > it. Sometimes stuff moves so fast, by the time I've worked through all the > conflicts, there's a new for-next already! I kind of figured though that > people are still sort of settling on what they want the design to even look > like, especially WRT to the *_later routines which are sort of complicated. > So I haven't been too worried about it since rebasing is mostly just > mechanical adjustments, and it could be the next review may take the design > in a different direction anyway. > > For now though, please use those baselines if you want to apply the sets. I > will work on getting the bases updated. > > Thanks! > > Allison > > > > > > xfs: Embed struct xfs_name in xfs_da_args > > > xfs: Add xfs_dabuf defines > > > xfs: Factor out new helper functions xfs_attr_rmtval_set > > > xfs: Factor up trans handling in xfs_attr3_leaf_flipflags > > > xfs: Factor out xfs_attr_leaf_addname helper > > > xfs: Factor up commit from xfs_attr_try_sf_addname > > > xfs: Factor up trans roll from xfs_attr3_leaf_setflag > > > xfs: Add xfs_attr3_leaf helper functions > > > xfs: Factor out xfs_attr_rmtval_invalidate > > > xfs: Factor up trans roll in xfs_attr3_leaf_clearflag > > > xfs: Add delay context to xfs_da_args > > > xfs: Add delayed attribute routines > > > xfs: Add feature bit XFS_SB_FEAT_INCOMPAT_LOG_DELATTR > > > xfs: Enable delayed attributes > > > > > > Allison Henderson (4): > > > xfs: Add xfs_has_attr and subroutines > > > xfs: Set up infastructure for deferred attribute operations > > > xfs: Add xfs_attr_set_deferred and xfs_attr_remove_deferred > > > xfs_io: Add delayed attributes error tag > > > > > > fs/xfs/Makefile | 2 +- > > > fs/xfs/libxfs/xfs_attr.c | 1068 ++++++++++++++++++++++++++++++++++----- > > > fs/xfs/libxfs/xfs_attr.h | 53 +- > > > fs/xfs/libxfs/xfs_attr_leaf.c | 277 ++++++---- > > > fs/xfs/libxfs/xfs_attr_leaf.h | 7 + > > > fs/xfs/libxfs/xfs_attr_remote.c | 103 +++- > > > fs/xfs/libxfs/xfs_attr_remote.h | 4 +- > > > fs/xfs/libxfs/xfs_da_btree.c | 8 +- > > > fs/xfs/libxfs/xfs_da_btree.h | 27 +- > > > fs/xfs/libxfs/xfs_defer.c | 1 + > > > fs/xfs/libxfs/xfs_defer.h | 3 + > > > fs/xfs/libxfs/xfs_dir2.c | 22 +- > > > fs/xfs/libxfs/xfs_dir2_block.c | 6 +- > > > fs/xfs/libxfs/xfs_dir2_leaf.c | 6 +- > > > fs/xfs/libxfs/xfs_dir2_node.c | 8 +- > > > fs/xfs/libxfs/xfs_dir2_sf.c | 30 +- > > > fs/xfs/libxfs/xfs_errortag.h | 4 +- > > > fs/xfs/libxfs/xfs_format.h | 11 +- > > > fs/xfs/libxfs/xfs_fs.h | 1 + > > > fs/xfs/libxfs/xfs_log_format.h | 44 +- > > > fs/xfs/libxfs/xfs_sb.c | 2 + > > > fs/xfs/libxfs/xfs_types.h | 1 + > > > fs/xfs/scrub/attr.c | 12 +- > > > fs/xfs/scrub/common.c | 2 + > > > fs/xfs/xfs_acl.c | 29 +- > > > fs/xfs/xfs_attr_item.c | 764 ++++++++++++++++++++++++++++ > > > fs/xfs/xfs_attr_item.h | 88 ++++ > > > fs/xfs/xfs_attr_list.c | 1 + > > > fs/xfs/xfs_error.c | 3 + > > > fs/xfs/xfs_ioctl.c | 30 +- > > > fs/xfs/xfs_ioctl32.c | 2 + > > > fs/xfs/xfs_iops.c | 14 +- > > > fs/xfs/xfs_log.c | 4 + > > > fs/xfs/xfs_log_recover.c | 173 +++++++ > > > fs/xfs/xfs_ondisk.h | 2 + > > > fs/xfs/xfs_super.c | 4 + > > > fs/xfs/xfs_trace.h | 20 +- > > > fs/xfs/xfs_trans.h | 1 - > > > fs/xfs/xfs_xattr.c | 31 +- > > > 39 files changed, 2509 insertions(+), 359 deletions(-) > > > create mode 100644 fs/xfs/xfs_attr_item.c > > > create mode 100644 fs/xfs/xfs_attr_item.h > > > > > > -- > > > 2.7.4 > > >