aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_log.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_log.c')
-rw-r--r--fs/xfs/xfs_log.c152
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