xlog_cil_push() is the reader and writer of xc_cil, and should be protected against xlog_cil_insert_items(). Signed-off-by: Pingfan Liu <kernelfans@xxxxxxxxx> Cc: "Darrick J. Wong" <darrick.wong@xxxxxxxxxx> To: linux-xfs@xxxxxxxxxxxxxxx Cc: linux-fsdevel@xxxxxxxxxxxxxxx --- fs/xfs/xfs_log_cil.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c index ef652abd..004af09 100644 --- a/fs/xfs/xfs_log_cil.c +++ b/fs/xfs/xfs_log_cil.c @@ -723,6 +723,7 @@ xlog_cil_push( */ lv = NULL; num_iovecs = 0; + spin_lock(&cil->xc_cil_lock); while (!list_empty(&cil->xc_cil)) { struct xfs_log_item *item; @@ -737,6 +738,7 @@ xlog_cil_push( item->li_lv = NULL; num_iovecs += lv->lv_niovecs; } + spin_unlock(&cil->xc_cil_lock); /* * initialise the new context and attach it to the CIL. Then attach -- 2.7.5