linux/fs/xfs/linux-2.6
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
..
kmem.c [XFS] kmem_free and kmem_realloc to use const void * 2008-07-28 16:58:43 +10:00
kmem.h [XFS] kmem_free and kmem_realloc to use const void * 2008-07-28 16:58:43 +10:00
mrlock.h [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
mutex.h
sv.h
time.h
xfs_aops.c [XFS] Prevent direct I/O from mapping extents beyond eof 2008-09-17 16:50:14 +10:00
xfs_aops.h [XFS] move v_iocount from bhv_vnode to xfs_inode 2007-10-16 11:38:56 +10:00
xfs_buf.c Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_buf.h Fix barrier fail detection in XFS 2008-10-10 11:08:07 -07:00
xfs_cred.h [XFS] Replace __inline with inline 2008-04-18 11:51:15 +10:00
xfs_dmapi_priv.h
xfs_export.c [XFS] convert xfs to use ERR_CAST 2008-08-13 16:09:25 +10:00
xfs_export.h xfs: new export ops 2007-10-22 08:13:20 -07:00
xfs_file.c [PATCH] fix ->llseek() for a bunch of directories 2008-08-25 01:18:09 -04:00
xfs_fs_subr.c [XFS] Avoid directly referencing the VFS inode. 2008-08-13 15:45:15 +10:00
xfs_fs_subr.h [XFS] decontaminate vnode operations from behavior details 2007-10-15 16:54:29 +10:00
xfs_globals.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_globals.h [XFS] Remove xfs_physmem 2007-10-15 16:40:14 +10:00
xfs_ioctl32.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_ioctl32.h
xfs_ioctl.c [XFS] Kill shouty XFS_ITOV() macro 2008-08-13 16:00:45 +10:00
xfs_iops.c [PATCH] change d_add_ci argument ordering 2008-08-25 01:18:05 -04:00
xfs_iops.h [XFS] stop using file_update_time 2008-08-13 16:48:12 +10:00
xfs_linux.h CRED: Introduce credential access wrappers 2008-08-14 09:35:23 +10:00
xfs_lrw.c [XFS] stop using file_update_time 2008-08-13 16:48:12 +10:00
xfs_lrw.h [XFS] remove sendfile leftovers 2008-04-29 16:08:14 +10:00
xfs_stats.c [XFS] streamline init/exit path 2008-07-28 16:59:25 +10:00
xfs_stats.h [XFS] fix compilation without CONFIG_PROC_FS 2008-07-28 16:59:31 +10:00
xfs_super.c [XFS] Fix regression introduced by remount fixup 2008-09-17 16:49:33 +10:00
xfs_super.h [XFS] sanitize xfs_initialize_vnode 2008-08-13 16:23:13 +10:00
xfs_sysctl.c [XFS] streamline init/exit path 2008-07-28 16:59:25 +10:00
xfs_sysctl.h [XFS] streamline init/exit path 2008-07-28 16:59:25 +10:00
xfs_version.h
xfs_vfs.h [XFS] Remove periodic logging of in-core superblock counters. 2008-04-18 12:03:12 +10:00
xfs_vnode.c [XFS] clean up stale references to semaphores 2008-08-13 16:34:31 +10:00
xfs_vnode.h [XFS] kill bhv_vnode_t 2008-08-13 16:22:40 +10:00
xfs_xattr.c [XFS] Remove vn_revalidate calls in xfs. 2008-07-28 16:59:39 +10:00