summary refs log tree commit diff
path: root/fs/xfs/xfs_log.h
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2022-07-07 18:56:08 +1000
committerDave Chinner <david@fromorbit.com>2022-07-07 18:56:08 +1000
commit4eb56069cb2835fafe569e27e746e6a4c9735186 (patch)
tree03a3e764b3ceca81df2fb0994618eb2b1aabf97d /fs/xfs/xfs_log.h
parent169248536a2b28e4228ba63772936c1ba979c9c0 (diff)
downloadlinux-4eb56069cb2835fafe569e27e746e6a4c9735186.tar.gz
xfs: move CIL ordering to the logvec chain
Adding a list_sort() call to the CIL push work while the xc_ctx_lock
is held exclusively has resulted in fairly long lock hold times and
that stops all front end transaction commits from making progress.

We can move the sorting out of the xc_ctx_lock if we can transfer
the ordering information to the log vectors as they are detached
from the log items and then we can sort the log vectors.  With these
changes, we can move the list_sort() call to just before we call
xlog_write() when we aren't holding any locks at all.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>

Diffstat (limited to 'fs/xfs/xfs_log.h')
-rw-r--r--fs/xfs/xfs_log.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/xfs/xfs_log.h b/fs/xfs/xfs_log.h
index e7bf3c780cb4..2728886c2963 100644
--- a/fs/xfs/xfs_log.h
+++ b/fs/xfs/xfs_log.h
@@ -10,6 +10,7 @@ struct xfs_cil_ctx;
 
 struct xfs_log_vec {
 	struct list_head	lv_list;	/* CIL lv chain ptrs */
+	uint32_t		lv_order_id;	/* chain ordering info */
 	int			lv_niovecs;	/* number of iovecs in lv */
 	struct xfs_log_iovec	*lv_iovecp;	/* iovec array */
 	struct xfs_log_item	*lv_item;	/* owner */