diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-28 13:31:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-28 13:31:42 -0400 |
commit | 5619a693965b291315685bdfe01a0246ebd7e41e (patch) | |
tree | 80a9869814d601a3d5fb439d6c6e4d6c7d6865e4 /fs/xfs/xfs_buf_item.c | |
parent | 37be944a0270402f9cda291a930b0286f6dc92f5 (diff) | |
parent | 9e4c109ac822395e0aae650e4e3c9e4903f6602f (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.c | 12 |
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 | ||