aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_buf_item.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-10-28 13:31:42 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-10-28 13:31:42 -0400
commit5619a693965b291315685bdfe01a0246ebd7e41e (patch)
tree80a9869814d601a3d5fb439d6c6e4d6c7d6865e4 /fs/xfs/xfs_buf_item.c
parent37be944a0270402f9cda291a930b0286f6dc92f5 (diff)
parent9e4c109ac822395e0aae650e4e3c9e4903f6602f (diff)
Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs
* 'for-linus' of git://oss.sgi.com/xfs/xfs: (69 commits) xfs: add AIL pushing tracepoints xfs: put in missed fix for merge problem xfs: do not flush data workqueues in xfs_flush_buftarg xfs: remove XFS_bflush xfs: remove xfs_buf_target_name xfs: use xfs_ioerror_alert in xfs_buf_iodone_callbacks xfs: clean up xfs_ioerror_alert xfs: clean up buffer allocation xfs: remove buffers from the delwri list in xfs_buf_stale xfs: remove XFS_BUF_STALE and XFS_BUF_SUPER_STALE xfs: remove XFS_BUF_SET_VTYPE and XFS_BUF_SET_VTYPE_REF xfs: remove XFS_BUF_FINISH_IOWAIT xfs: remove xfs_get_buftarg_list xfs: fix buffer flushing during unmount xfs: optimize fsync on directories xfs: reduce the number of log forces from tail pushing xfs: Don't allocate new buffers on every call to _xfs_buf_find xfs: simplify xfs_trans_ijoin* again xfs: unlock the inode before log force in xfs_change_file_space xfs: unlock the inode before log force in xfs_fs_nfs_commit_metadata ...
Diffstat (limited to 'fs/xfs/xfs_buf_item.c')
-rw-r--r--fs/xfs/xfs_buf_item.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c
index ef43fce519a1..1a3513881bce 100644
--- a/fs/xfs/xfs_buf_item.c
+++ b/fs/xfs/xfs_buf_item.c
@@ -967,7 +967,8 @@ xfs_buf_iodone_callbacks(
967 * I/O errors, there's no point in giving this a retry. 967 * I/O errors, there's no point in giving this a retry.
968 */ 968 */
969 if (XFS_FORCED_SHUTDOWN(mp)) { 969 if (XFS_FORCED_SHUTDOWN(mp)) {
970 XFS_BUF_SUPER_STALE(bp); 970 xfs_buf_stale(bp);
971 XFS_BUF_DONE(bp);
971 trace_xfs_buf_item_iodone(bp, _RET_IP_); 972 trace_xfs_buf_item_iodone(bp, _RET_IP_);
972 goto do_callbacks; 973 goto do_callbacks;
973 } 974 }
@@ -975,9 +976,7 @@ xfs_buf_iodone_callbacks(
975 if (bp->b_target != lasttarg || 976 if (bp->b_target != lasttarg ||
976 time_after(jiffies, (lasttime + 5*HZ))) { 977 time_after(jiffies, (lasttime + 5*HZ))) {
977 lasttime = jiffies; 978 lasttime = jiffies;
978 xfs_alert(mp, "Device %s: metadata write error block 0x%llx", 979 xfs_buf_ioerror_alert(bp, __func__);
979 xfs_buf_target_name(bp->b_target),
980 (__uint64_t)XFS_BUF_ADDR(bp));
981 } 980 }
982 lasttarg = bp->b_target; 981 lasttarg = bp->b_target;
983 982
@@ -993,7 +992,7 @@ xfs_buf_iodone_callbacks(
993 xfs_buf_ioerror(bp, 0); /* errno of 0 unsets the flag */ 992 xfs_buf_ioerror(bp, 0); /* errno of 0 unsets the flag */
994 993
995 if (!XFS_BUF_ISSTALE(bp)) { 994 if (!XFS_BUF_ISSTALE(bp)) {
996 XFS_BUF_DELAYWRITE(bp); 995 xfs_buf_delwri_queue(bp);
997 XFS_BUF_DONE(bp); 996 XFS_BUF_DONE(bp);
998 } 997 }
999 ASSERT(bp->b_iodone != NULL); 998 ASSERT(bp->b_iodone != NULL);
@@ -1006,9 +1005,8 @@ xfs_buf_iodone_callbacks(
1006 * If the write of the buffer was synchronous, we want to make 1005 * If the write of the buffer was synchronous, we want to make
1007 * sure to return the error to the caller of xfs_bwrite(). 1006 * sure to return the error to the caller of xfs_bwrite().
1008 */ 1007 */
1009 XFS_BUF_STALE(bp); 1008 xfs_buf_stale(bp);
1010 XFS_BUF_DONE(bp); 1009 XFS_BUF_DONE(bp);
1011 XFS_BUF_UNDELAYWRITE(bp);
1012 1010
1013 trace_xfs_buf_error_relse(bp, _RET_IP_); 1011 trace_xfs_buf_error_relse(bp, _RET_IP_);
1014 1012