diff options
Diffstat (limited to 'fs/xfs/xfs_log.c')
-rw-r--r-- | fs/xfs/xfs_log.c | 152 |
1 files changed, 76 insertions, 76 deletions
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c index 9c9a1c9bcc7f..b49ccf5c1d75 100644 --- a/fs/xfs/xfs_log.c +++ b/fs/xfs/xfs_log.c | |||
@@ -1212,7 +1212,7 @@ xlog_iodone(xfs_buf_t *bp) | |||
1212 | } | 1212 | } |
1213 | 1213 | ||
1214 | /* log I/O is always issued ASYNC */ | 1214 | /* log I/O is always issued ASYNC */ |
1215 | ASSERT(XFS_BUF_ISASYNC(bp)); | 1215 | ASSERT(bp->b_flags & XBF_ASYNC); |
1216 | xlog_state_done_syncing(iclog, aborted); | 1216 | xlog_state_done_syncing(iclog, aborted); |
1217 | 1217 | ||
1218 | /* | 1218 | /* |
@@ -1864,9 +1864,8 @@ xlog_sync( | |||
1864 | 1864 | ||
1865 | bp->b_io_length = BTOBB(count); | 1865 | bp->b_io_length = BTOBB(count); |
1866 | bp->b_fspriv = iclog; | 1866 | bp->b_fspriv = iclog; |
1867 | XFS_BUF_ZEROFLAGS(bp); | 1867 | bp->b_flags &= ~(XBF_FUA | XBF_FLUSH); |
1868 | XFS_BUF_ASYNC(bp); | 1868 | bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE); |
1869 | bp->b_flags |= XBF_SYNCIO; | ||
1870 | 1869 | ||
1871 | if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { | 1870 | if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) { |
1872 | bp->b_flags |= XBF_FUA; | 1871 | bp->b_flags |= XBF_FUA; |
@@ -1893,12 +1892,11 @@ xlog_sync( | |||
1893 | 1892 | ||
1894 | /* account for log which doesn't start at block #0 */ | 1893 | /* account for log which doesn't start at block #0 */ |
1895 | XFS_BUF_SET_ADDR(bp, XFS_BUF_ADDR(bp) + log->l_logBBstart); | 1894 | XFS_BUF_SET_ADDR(bp, XFS_BUF_ADDR(bp) + log->l_logBBstart); |
1895 | |||
1896 | /* | 1896 | /* |
1897 | * Don't call xfs_bwrite here. We do log-syncs even when the filesystem | 1897 | * Don't call xfs_bwrite here. We do log-syncs even when the filesystem |
1898 | * is shutting down. | 1898 | * is shutting down. |
1899 | */ | 1899 | */ |
1900 | XFS_BUF_WRITE(bp); | ||
1901 | |||
1902 | error = xlog_bdstrat(bp); | 1900 | error = xlog_bdstrat(bp); |
1903 | if (error) { | 1901 | if (error) { |
1904 | xfs_buf_ioerror_alert(bp, "xlog_sync"); | 1902 | xfs_buf_ioerror_alert(bp, "xlog_sync"); |
@@ -1910,9 +1908,8 @@ xlog_sync( | |||
1910 | xfs_buf_associate_memory(bp, | 1908 | xfs_buf_associate_memory(bp, |
1911 | (char *)&iclog->ic_header + count, split); | 1909 | (char *)&iclog->ic_header + count, split); |
1912 | bp->b_fspriv = iclog; | 1910 | bp->b_fspriv = iclog; |
1913 | XFS_BUF_ZEROFLAGS(bp); | 1911 | bp->b_flags &= ~(XBF_FUA | XBF_FLUSH); |
1914 | XFS_BUF_ASYNC(bp); | 1912 | bp->b_flags |= (XBF_ASYNC | XBF_SYNCIO | XBF_WRITE); |
1915 | bp->b_flags |= XBF_SYNCIO; | ||
1916 | if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) | 1913 | if (log->l_mp->m_flags & XFS_MOUNT_BARRIER) |
1917 | bp->b_flags |= XBF_FUA; | 1914 | bp->b_flags |= XBF_FUA; |
1918 | 1915 | ||
@@ -1921,7 +1918,6 @@ xlog_sync( | |||
1921 | 1918 | ||
1922 | /* account for internal log which doesn't start at block #0 */ | 1919 | /* account for internal log which doesn't start at block #0 */ |
1923 | XFS_BUF_SET_ADDR(bp, XFS_BUF_ADDR(bp) + log->l_logBBstart); | 1920 | XFS_BUF_SET_ADDR(bp, XFS_BUF_ADDR(bp) + log->l_logBBstart); |
1924 | XFS_BUF_WRITE(bp); | ||
1925 | error = xlog_bdstrat(bp); | 1921 | error = xlog_bdstrat(bp); |
1926 | if (error) { | 1922 | if (error) { |
1927 | xfs_buf_ioerror_alert(bp, "xlog_sync (split)"); | 1923 | xfs_buf_ioerror_alert(bp, "xlog_sync (split)"); |
@@ -2012,77 +2008,81 @@ xlog_print_tic_res( | |||
2012 | uint ophdr_spc = ticket->t_res_num_ophdrs * (uint)sizeof(xlog_op_header_t); | 2008 | uint ophdr_spc = ticket->t_res_num_ophdrs * (uint)sizeof(xlog_op_header_t); |
2013 | 2009 | ||
2014 | /* match with XLOG_REG_TYPE_* in xfs_log.h */ | 2010 | /* match with XLOG_REG_TYPE_* in xfs_log.h */ |
2015 | static char *res_type_str[XLOG_REG_TYPE_MAX] = { | 2011 | #define REG_TYPE_STR(type, str) [XLOG_REG_TYPE_##type] = str |
2016 | "bformat", | 2012 | static char *res_type_str[XLOG_REG_TYPE_MAX + 1] = { |
2017 | "bchunk", | 2013 | REG_TYPE_STR(BFORMAT, "bformat"), |
2018 | "efi_format", | 2014 | REG_TYPE_STR(BCHUNK, "bchunk"), |
2019 | "efd_format", | 2015 | REG_TYPE_STR(EFI_FORMAT, "efi_format"), |
2020 | "iformat", | 2016 | REG_TYPE_STR(EFD_FORMAT, "efd_format"), |
2021 | "icore", | 2017 | REG_TYPE_STR(IFORMAT, "iformat"), |
2022 | "iext", | 2018 | REG_TYPE_STR(ICORE, "icore"), |
2023 | "ibroot", | 2019 | REG_TYPE_STR(IEXT, "iext"), |
2024 | "ilocal", | 2020 | REG_TYPE_STR(IBROOT, "ibroot"), |
2025 | "iattr_ext", | 2021 | REG_TYPE_STR(ILOCAL, "ilocal"), |
2026 | "iattr_broot", | 2022 | REG_TYPE_STR(IATTR_EXT, "iattr_ext"), |
2027 | "iattr_local", | 2023 | REG_TYPE_STR(IATTR_BROOT, "iattr_broot"), |
2028 | "qformat", | 2024 | REG_TYPE_STR(IATTR_LOCAL, "iattr_local"), |
2029 | "dquot", | 2025 | REG_TYPE_STR(QFORMAT, "qformat"), |
2030 | "quotaoff", | 2026 | REG_TYPE_STR(DQUOT, "dquot"), |
2031 | "LR header", | 2027 | REG_TYPE_STR(QUOTAOFF, "quotaoff"), |
2032 | "unmount", | 2028 | REG_TYPE_STR(LRHEADER, "LR header"), |
2033 | "commit", | 2029 | REG_TYPE_STR(UNMOUNT, "unmount"), |
2034 | "trans header" | 2030 | REG_TYPE_STR(COMMIT, "commit"), |
2031 | REG_TYPE_STR(TRANSHDR, "trans header"), | ||
2032 | REG_TYPE_STR(ICREATE, "inode create") | ||
2035 | }; | 2033 | }; |
2034 | #undef REG_TYPE_STR | ||
2035 | #define TRANS_TYPE_STR(type) [XFS_TRANS_##type] = #type | ||
2036 | static char *trans_type_str[XFS_TRANS_TYPE_MAX] = { | 2036 | static char *trans_type_str[XFS_TRANS_TYPE_MAX] = { |
2037 | "SETATTR_NOT_SIZE", | 2037 | TRANS_TYPE_STR(SETATTR_NOT_SIZE), |
2038 | "SETATTR_SIZE", | 2038 | TRANS_TYPE_STR(SETATTR_SIZE), |
2039 | "INACTIVE", | 2039 | TRANS_TYPE_STR(INACTIVE), |
2040 | "CREATE", | 2040 | TRANS_TYPE_STR(CREATE), |
2041 | "CREATE_TRUNC", | 2041 | TRANS_TYPE_STR(CREATE_TRUNC), |
2042 | "TRUNCATE_FILE", | 2042 | TRANS_TYPE_STR(TRUNCATE_FILE), |
2043 | "REMOVE", | 2043 | TRANS_TYPE_STR(REMOVE), |
2044 | "LINK", | 2044 | TRANS_TYPE_STR(LINK), |
2045 | "RENAME", | 2045 | TRANS_TYPE_STR(RENAME), |
2046 | "MKDIR", | 2046 | TRANS_TYPE_STR(MKDIR), |
2047 | "RMDIR", | 2047 | TRANS_TYPE_STR(RMDIR), |
2048 | "SYMLINK", | 2048 | TRANS_TYPE_STR(SYMLINK), |
2049 | "SET_DMATTRS", | 2049 | TRANS_TYPE_STR(SET_DMATTRS), |
2050 | "GROWFS", | 2050 | TRANS_TYPE_STR(GROWFS), |
2051 | "STRAT_WRITE", | 2051 | TRANS_TYPE_STR(STRAT_WRITE), |
2052 | "DIOSTRAT", | 2052 | TRANS_TYPE_STR(DIOSTRAT), |
2053 | "WRITE_SYNC", | 2053 | TRANS_TYPE_STR(WRITEID), |
2054 | "WRITEID", | 2054 | TRANS_TYPE_STR(ADDAFORK), |
2055 | "ADDAFORK", | 2055 | TRANS_TYPE_STR(ATTRINVAL), |
2056 | "ATTRINVAL", | 2056 | TRANS_TYPE_STR(ATRUNCATE), |
2057 | "ATRUNCATE", | 2057 | TRANS_TYPE_STR(ATTR_SET), |
2058 | "ATTR_SET", | 2058 | TRANS_TYPE_STR(ATTR_RM), |
2059 | "ATTR_RM", | 2059 | TRANS_TYPE_STR(ATTR_FLAG), |
2060 | "ATTR_FLAG", | 2060 | TRANS_TYPE_STR(CLEAR_AGI_BUCKET), |
2061 | "CLEAR_AGI_BUCKET", | 2061 | TRANS_TYPE_STR(SB_CHANGE), |
2062 | "QM_SBCHANGE", | 2062 | TRANS_TYPE_STR(DUMMY1), |
2063 | "DUMMY1", | 2063 | TRANS_TYPE_STR(DUMMY2), |
2064 | "DUMMY2", | 2064 | TRANS_TYPE_STR(QM_QUOTAOFF), |
2065 | "QM_QUOTAOFF", | 2065 | TRANS_TYPE_STR(QM_DQALLOC), |
2066 | "QM_DQALLOC", | 2066 | TRANS_TYPE_STR(QM_SETQLIM), |
2067 | "QM_SETQLIM", | 2067 | TRANS_TYPE_STR(QM_DQCLUSTER), |
2068 | "QM_DQCLUSTER", | 2068 | TRANS_TYPE_STR(QM_QINOCREATE), |
2069 | "QM_QINOCREATE", | 2069 | TRANS_TYPE_STR(QM_QUOTAOFF_END), |
2070 | "QM_QUOTAOFF_END", | 2070 | TRANS_TYPE_STR(FSYNC_TS), |
2071 | "FSYNC_TS", | 2071 | TRANS_TYPE_STR(GROWFSRT_ALLOC), |
2072 | "GROWFSRT_ALLOC", | 2072 | TRANS_TYPE_STR(GROWFSRT_ZERO), |
2073 | "GROWFSRT_ZERO", | 2073 | TRANS_TYPE_STR(GROWFSRT_FREE), |
2074 | "GROWFSRT_FREE", | 2074 | TRANS_TYPE_STR(SWAPEXT), |
2075 | "SWAPEXT", | 2075 | TRANS_TYPE_STR(CHECKPOINT), |
2076 | "CHECKPOINT", | 2076 | TRANS_TYPE_STR(ICREATE), |
2077 | "ICREATE", | 2077 | TRANS_TYPE_STR(CREATE_TMPFILE) |
2078 | "CREATE_TMPFILE" | ||
2079 | }; | 2078 | }; |
2079 | #undef TRANS_TYPE_STR | ||
2080 | 2080 | ||
2081 | xfs_warn(mp, "xlog_write: reservation summary:"); | 2081 | xfs_warn(mp, "xlog_write: reservation summary:"); |
2082 | xfs_warn(mp, " trans type = %s (%u)", | 2082 | xfs_warn(mp, " trans type = %s (%u)", |
2083 | ((ticket->t_trans_type <= 0 || | 2083 | ((ticket->t_trans_type <= 0 || |
2084 | ticket->t_trans_type > XFS_TRANS_TYPE_MAX) ? | 2084 | ticket->t_trans_type > XFS_TRANS_TYPE_MAX) ? |
2085 | "bad-trans-type" : trans_type_str[ticket->t_trans_type-1]), | 2085 | "bad-trans-type" : trans_type_str[ticket->t_trans_type]), |
2086 | ticket->t_trans_type); | 2086 | ticket->t_trans_type); |
2087 | xfs_warn(mp, " unit res = %d bytes", | 2087 | xfs_warn(mp, " unit res = %d bytes", |
2088 | ticket->t_unit_res); | 2088 | ticket->t_unit_res); |
@@ -2101,7 +2101,7 @@ xlog_print_tic_res( | |||
2101 | uint r_type = ticket->t_res_arr[i].r_type; | 2101 | uint r_type = ticket->t_res_arr[i].r_type; |
2102 | xfs_warn(mp, "region[%u]: %s - %u bytes", i, | 2102 | xfs_warn(mp, "region[%u]: %s - %u bytes", i, |
2103 | ((r_type <= 0 || r_type > XLOG_REG_TYPE_MAX) ? | 2103 | ((r_type <= 0 || r_type > XLOG_REG_TYPE_MAX) ? |
2104 | "bad-rtype" : res_type_str[r_type-1]), | 2104 | "bad-rtype" : res_type_str[r_type]), |
2105 | ticket->t_res_arr[i].r_len); | 2105 | ticket->t_res_arr[i].r_len); |
2106 | } | 2106 | } |
2107 | 2107 | ||
@@ -3979,7 +3979,7 @@ xfs_log_force_umount( | |||
3979 | log->l_flags & XLOG_ACTIVE_RECOVERY) { | 3979 | log->l_flags & XLOG_ACTIVE_RECOVERY) { |
3980 | mp->m_flags |= XFS_MOUNT_FS_SHUTDOWN; | 3980 | mp->m_flags |= XFS_MOUNT_FS_SHUTDOWN; |
3981 | if (mp->m_sb_bp) | 3981 | if (mp->m_sb_bp) |
3982 | XFS_BUF_DONE(mp->m_sb_bp); | 3982 | mp->m_sb_bp->b_flags |= XBF_DONE; |
3983 | return 0; | 3983 | return 0; |
3984 | } | 3984 | } |
3985 | 3985 | ||
@@ -4009,7 +4009,7 @@ xfs_log_force_umount( | |||
4009 | spin_lock(&log->l_icloglock); | 4009 | spin_lock(&log->l_icloglock); |
4010 | mp->m_flags |= XFS_MOUNT_FS_SHUTDOWN; | 4010 | mp->m_flags |= XFS_MOUNT_FS_SHUTDOWN; |
4011 | if (mp->m_sb_bp) | 4011 | if (mp->m_sb_bp) |
4012 | XFS_BUF_DONE(mp->m_sb_bp); | 4012 | mp->m_sb_bp->b_flags |= XBF_DONE; |
4013 | 4013 | ||
4014 | /* | 4014 | /* |
4015 | * Mark the log and the iclogs with IO error flags to prevent any | 4015 | * Mark the log and the iclogs with IO error flags to prevent any |