linux-stable-rt/fs/xfs
Christoph Hellwig 73f6aa4d44 Fix barrier fail detection in XFS
Currently we disable barriers as soon as we get a buffer in xlog_iodone
that has the XBF_ORDERED flag cleared.  But this can be the case not only
for buffers where the barrier failed, but also the first buffer of a
split log write in case of a log wraparound.  Due to the disabled
barriers we can easily get directory corruption on unclean shutdowns.
So instead of using this check add a new buffer flag for failed barrier
writes.

This is a regression vs 2.6.26 caused by patch to use the right macro
to check for the ORDERED flag, as we previously got true returned for
every buffer.

Thanks to Toei Rei for reporting the bug.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Eric Sandeen <sandeen@sandeen.net>
Reviewed-by: David Chinner <david@fromorbit.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-10-10 11:08:07 -07:00
..
linux-2.6 Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
quota [XFS] Use KM_NOFS for debug trace buffers 2008-08-13 16:51:57 +10:00
support
Kconfig
Makefile
xfs.h
xfs_acl.c
xfs_acl.h
xfs_ag.h
xfs_alloc.c
xfs_alloc.h
xfs_alloc_btree.c
xfs_alloc_btree.h
xfs_arch.h
xfs_attr.c
xfs_attr.h
xfs_attr_leaf.c
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_bit.c
xfs_bit.h
xfs_bmap.c [XFS] Make xfs_bmap_*_count_leaves void. 2008-08-13 16:52:25 +10:00
xfs_bmap.h
xfs_bmap_btree.c
xfs_bmap_btree.h
xfs_btree.c [XFS] Use the same btree_cur union member for alloc and inobt trees. 2008-08-13 16:25:27 +10:00
xfs_btree.h [XFS] Use the same btree_cur union member for alloc and inobt trees. 2008-08-13 16:25:27 +10:00
xfs_buf_item.c [XFS] Fix use-after-free with buffers 2008-09-17 16:52:13 +10:00
xfs_buf_item.h
xfs_clnt.h
xfs_da_btree.c
xfs_da_btree.h
xfs_dfrag.c [XFS] Prevent lockdep false positives when locking two inodes. 2008-09-17 16:51:21 +10:00
xfs_dfrag.h
xfs_dinode.h
xfs_dir2.c
xfs_dir2.h
xfs_dir2_block.c
xfs_dir2_block.h
xfs_dir2_data.c
xfs_dir2_data.h
xfs_dir2_leaf.c
xfs_dir2_leaf.h
xfs_dir2_node.c
xfs_dir2_node.h
xfs_dir2_sf.c
xfs_dir2_sf.h
xfs_dir2_trace.c
xfs_dir2_trace.h
xfs_dmapi.h removed unused #include <linux/version.h>'s 2008-08-23 12:14:12 -07:00
xfs_dmops.c
xfs_error.c
xfs_error.h
xfs_extfree_item.c
xfs_extfree_item.h
xfs_filestream.c [XFS] Use KM_NOFS for debug trace buffers 2008-08-13 16:51:57 +10:00
xfs_filestream.h
xfs_fs.h
xfs_fsops.c
xfs_fsops.h
xfs_ialloc.c
xfs_ialloc.h
xfs_ialloc_btree.c [XFS] Use the same btree_cur union member for alloc and inobt trees. 2008-08-13 16:25:27 +10:00
xfs_ialloc_btree.h
xfs_iget.c [XFS] replace inode flush semaphore with a completion 2008-08-13 16:41:16 +10:00
xfs_imap.h
xfs_inode.c [XFS] Remove xfs_iext_irec_compact_full() 2008-09-26 12:17:57 +10:00
xfs_inode.h [XFS] update timestamp in xfs_ialloc manually 2008-08-13 16:44:15 +10:00
xfs_inode_item.c [XFS] replace inode flush semaphore with a completion 2008-08-13 16:41:16 +10:00
xfs_inode_item.h
xfs_inum.h
xfs_iomap.c
xfs_iomap.h
xfs_itable.c
xfs_itable.h
xfs_log.c Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_log.h [XFS] cleanup xfs_mountfs 2008-08-13 16:49:32 +10:00
xfs_log_priv.h [XFS] Move memory allocations for log tracing out of the critical path 2008-09-17 16:45:37 +10:00
xfs_log_recover.c [XFS] cleanup xfs_mountfs 2008-08-13 16:49:32 +10:00
xfs_log_recover.h
xfs_mount.c [XFS] use KM_MAYFAIL in xfs_mountfs 2008-08-13 16:51:29 +10:00
xfs_mount.h [XFS] xfs_unmountfs should return void 2008-08-13 16:49:57 +10:00
xfs_mru_cache.c
xfs_mru_cache.h
xfs_qmops.c
xfs_quota.h
xfs_refcache.h
xfs_rename.c
xfs_rtalloc.c
xfs_rtalloc.h
xfs_rw.c [XFS] replace the XFS buf iodone semaphore with a completion 2008-08-13 16:36:11 +10:00
xfs_rw.h
xfs_sb.h
xfs_trans.c
xfs_trans.h
xfs_trans_ail.c
xfs_trans_buf.c
xfs_trans_extfree.c
xfs_trans_inode.c
xfs_trans_item.c
xfs_trans_priv.h
xfs_trans_space.h
xfs_types.h
xfs_utils.c
xfs_utils.h
xfs_vfsops.c
xfs_vfsops.h
xfs_vnodeops.c [XFS] Don't do I/O beyond eof when unreserving space 2008-09-17 16:52:50 +10:00
xfs_vnodeops.h