aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/linux-2.6/xfs_super.c2
-rw-r--r--fs/xfs/linux-2.6/xfs_vfs.h3
-rw-r--r--fs/xfs/xfs_vfsops.c17
3 files changed, 11 insertions, 11 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c
index f3ad51602ebb..2a94859b9399 100644
--- a/fs/xfs/linux-2.6/xfs_super.c
+++ b/fs/xfs/linux-2.6/xfs_super.c
@@ -667,7 +667,7 @@ xfs_fs_sync_super(
667 * occur here so don't bother flushing the buftarg (i.e 667 * occur here so don't bother flushing the buftarg (i.e
668 * SYNC_QUIESCE) because it'll just get dirty again. 668 * SYNC_QUIESCE) because it'll just get dirty again.
669 */ 669 */
670 flags = SYNC_FSDATA | SYNC_DELWRI | SYNC_WAIT | SYNC_DIO_WAIT; 670 flags = SYNC_FSDATA | SYNC_DELWRI | SYNC_WAIT | SYNC_IOWAIT;
671 } else 671 } else
672 flags = SYNC_FSDATA | (wait ? SYNC_WAIT : 0); 672 flags = SYNC_FSDATA | (wait ? SYNC_WAIT : 0);
673 673
diff --git a/fs/xfs/linux-2.6/xfs_vfs.h b/fs/xfs/linux-2.6/xfs_vfs.h
index 558823a83065..e2c2ce98ab5b 100644
--- a/fs/xfs/linux-2.6/xfs_vfs.h
+++ b/fs/xfs/linux-2.6/xfs_vfs.h
@@ -91,8 +91,7 @@ typedef enum {
91#define SYNC_FSDATA 0x0020 /* flush fs data (e.g. superblocks) */ 91#define SYNC_FSDATA 0x0020 /* flush fs data (e.g. superblocks) */
92#define SYNC_REFCACHE 0x0040 /* prune some of the nfs ref cache */ 92#define SYNC_REFCACHE 0x0040 /* prune some of the nfs ref cache */
93#define SYNC_REMOUNT 0x0080 /* remount readonly, no dummy LRs */ 93#define SYNC_REMOUNT 0x0080 /* remount readonly, no dummy LRs */
94#define SYNC_QUIESCE 0x0100 /* quiesce fileystem for a snapshot */ 94#define SYNC_IOWAIT 0x0100 /* wait for all I/O to complete */
95#define SYNC_DIO_WAIT 0x0200 /* wait for direct I/O to complete */
96 95
97#define SHUTDOWN_META_IO_ERROR 0x0001 /* write attempt to metadata failed */ 96#define SHUTDOWN_META_IO_ERROR 0x0001 /* write attempt to metadata failed */
98#define SHUTDOWN_LOG_IO_ERROR 0x0002 /* write attempt to the log failed */ 97#define SHUTDOWN_LOG_IO_ERROR 0x0002 /* write attempt to the log failed */
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c
index c2a6eab7fa2d..29f72f613782 100644
--- a/fs/xfs/xfs_vfsops.c
+++ b/fs/xfs/xfs_vfsops.c
@@ -872,10 +872,10 @@ xfs_statvfs(
872 * this by simply making sure the log gets flushed 872 * this by simply making sure the log gets flushed
873 * if SYNC_BDFLUSH is set, and by actually writing it 873 * if SYNC_BDFLUSH is set, and by actually writing it
874 * out otherwise. 874 * out otherwise.
875 * SYNC_DIO_WAIT - The caller wants us to wait for all direct I/Os 875 * SYNC_IOWAIT - The caller wants us to wait for all data I/O to complete
876 * as well to ensure all data I/O completes before we 876 * before we return (including direct I/O). Forms the drain
877 * return. Forms the drain side of the write barrier needed 877 * side of the write barrier needed to safely quiesce the
878 * to safely quiesce the filesystem. 878 * filesystem.
879 * 879 *
880 */ 880 */
881/*ARGSUSED*/ 881/*ARGSUSED*/
@@ -1174,10 +1174,11 @@ xfs_sync_inodes(
1174 1174
1175 } 1175 }
1176 /* 1176 /*
1177 * When freezing, we need to wait ensure direct I/O is complete 1177 * When freezing, we need to wait ensure all I/O (including direct
1178 * as well to ensure all data modification is complete here 1178 * I/O) is complete to ensure no further data modification can take
1179 * place after this point
1179 */ 1180 */
1180 if (flags & SYNC_DIO_WAIT) 1181 if (flags & SYNC_IOWAIT)
1181 vn_iowait(vp); 1182 vn_iowait(vp);
1182 1183
1183 if (flags & SYNC_BDFLUSH) { 1184 if (flags & SYNC_BDFLUSH) {
@@ -1975,7 +1976,7 @@ xfs_freeze(
1975 /* flush inodes and push all remaining buffers out to disk */ 1976 /* flush inodes and push all remaining buffers out to disk */
1976 xfs_quiesce_fs(mp); 1977 xfs_quiesce_fs(mp);
1977 1978
1978 BUG_ON(atomic_read(&mp->m_active_trans) > 0); 1979 ASSERT_ALWAYS(atomic_read(&mp->m_active_trans) == 0);
1979 1980
1980 /* Push the superblock and write an unmount record */ 1981 /* Push the superblock and write an unmount record */
1981 xfs_log_unmount_write(mp); 1982 xfs_log_unmount_write(mp);