xfs: pass lv chain length into xlog_write()
authorDave Chinner <dchinner@redhat.com>
Thu, 21 Apr 2022 00:35:19 +0000 (10:35 +1000)
committerDave Chinner <david@fromorbit.com>
Thu, 21 Apr 2022 00:35:19 +0000 (10:35 +1000)
commitd80fc2914f9125a723d9af7038b1592fa8d1ea96
tree72bb8596ab7cbe80add90831a9c8dfac6d9a6099
parentc5141320c42b08b99b7c4b250ac9675d7c7ed3a7
xfs: pass lv chain length into xlog_write()

The caller of xlog_write() usually has a close accounting of the
aggregated vector length contained in the log vector chain passed to
xlog_write(). There is no need to iterate the chain to calculate he
length of the data in xlog_write_calculate_len() if the caller is
already iterating that chain to build it.

Passing in the vector length avoids doing an extra chain iteration,
which can be a significant amount of work given that large CIL
commits can have hundreds of thousands of vectors attached to the
chain.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chandan Babu R <chandan.babu@oracle.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_log.c
fs/xfs/xfs_log_cil.c
fs/xfs/xfs_log_priv.h