diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 26ace6c12e3a90eb7e004af4f971ea23aec4a577..a68fdae831af47b10d53a00ff48b553c1dab7f65 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c @@ -2688,19 +2688,13 @@ xlog_state_do_iclog_callbacks( struct xlog *log, struct xlog_in_core *iclog) { - spin_lock(&iclog->ic_callback_lock); - - while (!list_empty(&iclog->ic_callbacks)) { - LIST_HEAD(tmp); - list_splice_init(&iclog->ic_callbacks, &tmp); - - spin_unlock(&iclog->ic_callback_lock); - xlog_cil_process_committed(&tmp); - spin_lock(&iclog->ic_callback_lock); - } + LIST_HEAD(tmp); + spin_lock(&iclog->ic_callback_lock); + list_splice_init(&iclog->ic_callbacks, &tmp); spin_unlock(&iclog->ic_callback_lock); + xlog_cil_process_committed(&tmp); } STATIC void