]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: Add remote block helper functions
authorAllison Collins <allison.henderson@oracle.com>
Tue, 15 Sep 2020 19:59:37 +0000 (15:59 -0400)
committerEric Sandeen <sandeen@sandeen.net>
Tue, 15 Sep 2020 19:59:37 +0000 (15:59 -0400)
Source kernel commit: 410c19885db5f7c4fca55b437e199e18252142b6

This patch adds two new helper functions xfs_attr_store_rmt_blk and
xfs_attr_restore_rmt_blk. These two helpers assist to remove redundant
code associated with storing and retrieving remote blocks during the
attr set operations.

Signed-off-by: Allison Collins <allison.henderson@oracle.com>
Reviewed-by: Chandan Rajendra <chandanrlinux@gmail.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Acked-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_attr.c

index 211c37a553db1d4ff94363dda90e375a18cfc01e..bdc8d90a6b4ff6ff2dfd1372b2a2ce9471310d7b 100644 (file)
@@ -564,6 +564,30 @@ xfs_attr_shortform_addname(xfs_da_args_t *args)
  * External routines when attribute list is one block
  *========================================================================*/
 
+/* Store info about a remote block */
+STATIC void
+xfs_attr_save_rmt_blk(
+       struct xfs_da_args      *args)
+{
+       args->blkno2 = args->blkno;
+       args->index2 = args->index;
+       args->rmtblkno2 = args->rmtblkno;
+       args->rmtblkcnt2 = args->rmtblkcnt;
+       args->rmtvaluelen2 = args->rmtvaluelen;
+}
+
+/* Set stored info about a remote block */
+STATIC void
+xfs_attr_restore_rmt_blk(
+       struct xfs_da_args      *args)
+{
+       args->blkno = args->blkno2;
+       args->index = args->index2;
+       args->rmtblkno = args->rmtblkno2;
+       args->rmtblkcnt = args->rmtblkcnt2;
+       args->rmtvaluelen = args->rmtvaluelen2;
+}
+
 /*
  * Tries to add an attribute to an inode in leaf form
  *
@@ -598,11 +622,7 @@ xfs_attr_leaf_try_add(
 
                /* save the attribute state for later removal*/
                args->op_flags |= XFS_DA_OP_RENAME;     /* an atomic rename */
-               args->blkno2 = args->blkno;             /* set 2nd entry info*/
-               args->index2 = args->index;
-               args->rmtblkno2 = args->rmtblkno;
-               args->rmtblkcnt2 = args->rmtblkcnt;
-               args->rmtvaluelen2 = args->rmtvaluelen;
+               xfs_attr_save_rmt_blk(args);
 
                /*
                 * clear the remote attr state now that it is saved so that the
@@ -701,11 +721,8 @@ xfs_attr_leaf_addname(
                 * Dismantle the "old" attribute/value pair by removing
                 * a "remote" value (if it exists).
                 */
-               args->index = args->index2;
-               args->blkno = args->blkno2;
-               args->rmtblkno = args->rmtblkno2;
-               args->rmtblkcnt = args->rmtblkcnt2;
-               args->rmtvaluelen = args->rmtvaluelen2;
+               xfs_attr_restore_rmt_blk(args);
+
                if (args->rmtblkno) {
                        error = xfs_attr_rmtval_invalidate(args);
                        if (error)
@@ -919,11 +936,7 @@ restart:
 
                /* save the attribute state for later removal*/
                args->op_flags |= XFS_DA_OP_RENAME;     /* atomic rename op */
-               args->blkno2 = args->blkno;             /* set 2nd entry info*/
-               args->index2 = args->index;
-               args->rmtblkno2 = args->rmtblkno;
-               args->rmtblkcnt2 = args->rmtblkcnt;
-               args->rmtvaluelen2 = args->rmtvaluelen;
+               xfs_attr_save_rmt_blk(args);
 
                /*
                 * clear the remote attr state now that it is saved so that the
@@ -1035,11 +1048,8 @@ restart:
                 * Dismantle the "old" attribute/value pair by removing
                 * a "remote" value (if it exists).
                 */
-               args->index = args->index2;
-               args->blkno = args->blkno2;
-               args->rmtblkno = args->rmtblkno2;
-               args->rmtblkcnt = args->rmtblkcnt2;
-               args->rmtvaluelen = args->rmtvaluelen2;
+               xfs_attr_restore_rmt_blk(args);
+
                if (args->rmtblkno) {
                        error = xfs_attr_rmtval_invalidate(args);
                        if (error)