aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_log_cil.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2011-01-26 21:23:28 -0500
committerAlex Elder <aelder@sgi.com>2011-01-28 10:05:36 -0500
commitc6f990d1ff8e4e53b12f4175eb7d7ea710c3ca73 (patch)
tree109e8d588a9a04ef52b97e751450fe0fffa88a23 /fs/xfs/xfs_log_cil.c
parent5315837daee7ed76c31ef643915f7d76ef8c1aa3 (diff)
xfs: handle CIl transaction commit failures correctly
Failure to commit a transaction into the CIL is not handled correctly. This currently can only happen when racing with a shutdown and requires an explicit shutdown check, so it rare and can be avoided. Remove the shutdown check and make the CIL commit a void function to indicate it will always succeed, thereby removing the incorrectly handled failure case. Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_log_cil.c')
-rw-r--r--fs/xfs/xfs_log_cil.c8
1 files changed, 1 insertions, 7 deletions
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c
index c7eac5acbfea..9ca59be08977 100644
--- a/fs/xfs/xfs_log_cil.c
+++ b/fs/xfs/xfs_log_cil.c
@@ -625,7 +625,7 @@ out_abort:
625 * background commit, returns without it held once background commits are 625 * background commit, returns without it held once background commits are
626 * allowed again. 626 * allowed again.
627 */ 627 */
628int 628void
629xfs_log_commit_cil( 629xfs_log_commit_cil(
630 struct xfs_mount *mp, 630 struct xfs_mount *mp,
631 struct xfs_trans *tp, 631 struct xfs_trans *tp,
@@ -640,11 +640,6 @@ xfs_log_commit_cil(
640 if (flags & XFS_TRANS_RELEASE_LOG_RES) 640 if (flags & XFS_TRANS_RELEASE_LOG_RES)
641 log_flags = XFS_LOG_REL_PERM_RESERV; 641 log_flags = XFS_LOG_REL_PERM_RESERV;
642 642
643 if (XLOG_FORCED_SHUTDOWN(log)) {
644 xlog_cil_free_logvec(log_vector);
645 return XFS_ERROR(EIO);
646 }
647
648 /* 643 /*
649 * do all the hard work of formatting items (including memory 644 * do all the hard work of formatting items (including memory
650 * allocation) outside the CIL context lock. This prevents stalling CIL 645 * allocation) outside the CIL context lock. This prevents stalling CIL
@@ -704,7 +699,6 @@ xfs_log_commit_cil(
704 */ 699 */
705 if (push) 700 if (push)
706 xlog_cil_push(log, 0); 701 xlog_cil_push(log, 0);
707 return 0;
708} 702}
709 703
710/* 704/*