xfs: move the ioerror check out of xlog_state_clean_iclog
authorChristoph Hellwig <hch@lst.de>
Fri, 20 Mar 2020 15:49:21 +0000 (08:49 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 23 Mar 2020 15:27:59 +0000 (08:27 -0700)
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>
fs/xfs/xfs_log.c

index 6facbb9..7e39835 100644 (file)
@@ -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);