summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2020-03-20 16:49:21 +0100
committerDarrick J. Wong <darrick.wong@oracle.com>2020-03-23 16:27:59 +0100
commit5781464bd1ee59a14f2657e878eb6cd90809a7ba (patch)
tree3ffbde7ceb403c8a55d228c1e45a55c97b25b84b /fs
parentxfs: refactor xlog_state_clean_iclog (diff)
downloadlinux-5781464bd1ee59a14f2657e878eb6cd90809a7ba.tar.xz
linux-5781464bd1ee59a14f2657e878eb6cd90809a7ba.zip
xfs: move the ioerror check out of xlog_state_clean_iclog
Use the shutdown flag in the log to bypass xlog_state_clean_iclog entirely in case of a shut down log. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/xfs/xfs_log.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index 6facbb91b8a8..7e39835d9852 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -2632,8 +2632,7 @@ xlog_state_clean_iclog(
{
int iclogs_changed = 0;
- if (dirty_iclog->ic_state != XLOG_STATE_IOERROR)
- dirty_iclog->ic_state = XLOG_STATE_DIRTY;
+ dirty_iclog->ic_state = XLOG_STATE_DIRTY;
xlog_state_activate_iclogs(log, &iclogs_changed);
wake_up_all(&dirty_iclog->ic_force_wait);
@@ -2838,8 +2837,10 @@ xlog_state_do_callback(
*/
cycled_icloglock = true;
xlog_state_do_iclog_callbacks(log, iclog);
-
- xlog_state_clean_iclog(log, iclog);
+ if (XLOG_FORCED_SHUTDOWN(log))
+ wake_up_all(&iclog->ic_force_wait);
+ else
+ xlog_state_clean_iclog(log, iclog);
iclog = iclog->ic_next;
} while (first_iclog != iclog);