Message ID | 20200403221229.4995-15-allison.henderson@oracle.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | xfs: Delay Ready Attributes | expand |
On Fri, Apr 03, 2020 at 03:12:23PM -0700, Allison Collins wrote: > This patch helps to simplify xfs_attr_node_removename by modularizing > the code around the transactions into helper functions. This will make > the function easier to follow when we introduce delayed attributes. > > Signed-off-by: Allison Collins <allison.henderson@oracle.com> > Reviewed-by: Amir Goldstein <amir73il@gmail.com> > Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com> > --- > fs/xfs/libxfs/xfs_attr.c | 45 +++++++++++++++++++++++++++++++-------------- > 1 file changed, 31 insertions(+), 14 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c > index ba26ffe..8d7a5db 100644 > --- a/fs/xfs/libxfs/xfs_attr.c > +++ b/fs/xfs/libxfs/xfs_attr.c > @@ -1153,6 +1153,36 @@ xfs_attr_node_shrink( > } > > /* > + * Mark an attribute entry INCOMPLETE and save pointers to the relevant buffers > + * for later deletion of the entry. > + */ > +STATIC int > +xfs_attr_leaf_mark_incomplete( > + struct xfs_da_args *args, > + struct xfs_da_state *state) > +{ > + int error; int error; > + > + /* > + * Fill in disk block numbers in the state structure > + * so that we can get the buffers back after we commit > + * several transactions in the following calls. > + */ > + error = xfs_attr_fillstate(state); > + if (error) > + return error; > + > + /* > + * Mark the attribute as INCOMPLETE > + */ > + error = xfs_attr3_leaf_setflag(args); > + if (error) > + return error; > + > + return 0; return xfs_attr3_leaf_setflag(args); Otherwise looks good: Reviewed-by: Brian Foster <bfoster@redhat.com> > +} > + > +/* > * Remove a name from a B-tree attribute list. > * > * This will involve walking down the Btree, and may involve joining > @@ -1183,20 +1213,7 @@ xfs_attr_node_removename( > ASSERT(blk->bp != NULL); > ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC); > if (args->rmtblkno > 0) { > - /* > - * Fill in disk block numbers in the state structure > - * so that we can get the buffers back after we commit > - * several transactions in the following calls. > - */ > - error = xfs_attr_fillstate(state); > - if (error) > - goto out; > - > - /* > - * Mark the attribute as INCOMPLETE, then bunmapi() the > - * remote value. > - */ > - error = xfs_attr3_leaf_setflag(args); > + error = xfs_attr_leaf_mark_incomplete(args, state); > if (error) > goto out; > > -- > 2.7.4 >
On 4/7/20 8:23 AM, Brian Foster wrote: > On Fri, Apr 03, 2020 at 03:12:23PM -0700, Allison Collins wrote: >> This patch helps to simplify xfs_attr_node_removename by modularizing >> the code around the transactions into helper functions. This will make >> the function easier to follow when we introduce delayed attributes. >> >> Signed-off-by: Allison Collins <allison.henderson@oracle.com> >> Reviewed-by: Amir Goldstein <amir73il@gmail.com> >> Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com> >> --- >> fs/xfs/libxfs/xfs_attr.c | 45 +++++++++++++++++++++++++++++++-------------- >> 1 file changed, 31 insertions(+), 14 deletions(-) >> >> diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c >> index ba26ffe..8d7a5db 100644 >> --- a/fs/xfs/libxfs/xfs_attr.c >> +++ b/fs/xfs/libxfs/xfs_attr.c >> @@ -1153,6 +1153,36 @@ xfs_attr_node_shrink( >> } >> >> /* >> + * Mark an attribute entry INCOMPLETE and save pointers to the relevant buffers >> + * for later deletion of the entry. >> + */ >> +STATIC int >> +xfs_attr_leaf_mark_incomplete( >> + struct xfs_da_args *args, >> + struct xfs_da_state *state) >> +{ >> + int error; > > int error; > >> + >> + /* >> + * Fill in disk block numbers in the state structure >> + * so that we can get the buffers back after we commit >> + * several transactions in the following calls. >> + */ >> + error = xfs_attr_fillstate(state); >> + if (error) >> + return error; >> + >> + /* >> + * Mark the attribute as INCOMPLETE >> + */ >> + error = xfs_attr3_leaf_setflag(args); >> + if (error) >> + return error; >> + >> + return 0; > > return xfs_attr3_leaf_setflag(args); > > Otherwise looks good: > > Reviewed-by: Brian Foster <bfoster@redhat.com> Alrighty, will update. Thank you! Allison > >> +} >> + >> +/* >> * Remove a name from a B-tree attribute list. >> * >> * This will involve walking down the Btree, and may involve joining >> @@ -1183,20 +1213,7 @@ xfs_attr_node_removename( >> ASSERT(blk->bp != NULL); >> ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC); >> if (args->rmtblkno > 0) { >> - /* >> - * Fill in disk block numbers in the state structure >> - * so that we can get the buffers back after we commit >> - * several transactions in the following calls. >> - */ >> - error = xfs_attr_fillstate(state); >> - if (error) >> - goto out; >> - >> - /* >> - * Mark the attribute as INCOMPLETE, then bunmapi() the >> - * remote value. >> - */ >> - error = xfs_attr3_leaf_setflag(args); >> + error = xfs_attr_leaf_mark_incomplete(args, state); >> if (error) >> goto out; >> >> -- >> 2.7.4 >> >
diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c index ba26ffe..8d7a5db 100644 --- a/fs/xfs/libxfs/xfs_attr.c +++ b/fs/xfs/libxfs/xfs_attr.c @@ -1153,6 +1153,36 @@ xfs_attr_node_shrink( } /* + * Mark an attribute entry INCOMPLETE and save pointers to the relevant buffers + * for later deletion of the entry. + */ +STATIC int +xfs_attr_leaf_mark_incomplete( + struct xfs_da_args *args, + struct xfs_da_state *state) +{ + int error; + + /* + * Fill in disk block numbers in the state structure + * so that we can get the buffers back after we commit + * several transactions in the following calls. + */ + error = xfs_attr_fillstate(state); + if (error) + return error; + + /* + * Mark the attribute as INCOMPLETE + */ + error = xfs_attr3_leaf_setflag(args); + if (error) + return error; + + return 0; +} + +/* * Remove a name from a B-tree attribute list. * * This will involve walking down the Btree, and may involve joining @@ -1183,20 +1213,7 @@ xfs_attr_node_removename( ASSERT(blk->bp != NULL); ASSERT(blk->magic == XFS_ATTR_LEAF_MAGIC); if (args->rmtblkno > 0) { - /* - * Fill in disk block numbers in the state structure - * so that we can get the buffers back after we commit - * several transactions in the following calls. - */ - error = xfs_attr_fillstate(state); - if (error) - goto out; - - /* - * Mark the attribute as INCOMPLETE, then bunmapi() the - * remote value. - */ - error = xfs_attr3_leaf_setflag(args); + error = xfs_attr_leaf_mark_incomplete(args, state); if (error) goto out;