Re: [PATCH v21 01/13] xfs: Return from xfs_attr_set_iter if there are no more rmtblks to process

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

 





On 7/8/21 9:05 PM, Darrick J. Wong wrote:
On Wed, Jul 07, 2021 at 03:20:59PM -0700, Allison Henderson wrote:
During an attr rename operation, blocks are saved for later removal
as rmtblkno2. The rmtblkno is used in the case of needing to alloc
more blocks if not enough were available.  However, in the case
that neither rmtblkno or rmtblkno2 are set, we can return as soon
as xfs_attr_node_addname completes, rather than rolling the transaction
with an -EAGAIN return.  This extra loop does not hurt anything right
now, but it will be a problem later when we get into log items because
we end up with an empty log transaction.  So, add a simple check to
cut out the unneeded iteration.

Signed-off-by: Allison Henderson <allison.henderson@xxxxxxxxxx>
---
  fs/xfs/libxfs/xfs_attr.c | 7 +++++++
  1 file changed, 7 insertions(+)

diff --git a/fs/xfs/libxfs/xfs_attr.c b/fs/xfs/libxfs/xfs_attr.c
index 611dc67..5e81389 100644
--- a/fs/xfs/libxfs/xfs_attr.c
+++ b/fs/xfs/libxfs/xfs_attr.c
@@ -409,6 +409,13 @@ xfs_attr_set_iter(
  			if (error)
  				return error;
+ /*
+			 * If addname was successful, and we dont need to alloc
+			 * or remove anymore blks, we're done.
+			 */
+			if (!args->rmtblkno && !args->rmtblkno2)
+				return error;

Is there actually an error to return here, or could this be a 'return 0;' ?

--D
Error is zero here, I just try to make the code consistent looking. It can be a hard zero if folk prefer.

Allison


+
  			dac->dela_state = XFS_DAS_FOUND_NBLK;
  		}
  		return -EAGAIN;
--
2.7.4




[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