diff options
Diffstat (limited to 'fs/xfs/linux-2.6')
-rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 6 | ||||
-rw-r--r-- | fs/xfs/linux-2.6/xfs_vfs.h | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index d5f0340ddcd9..5fe9af38aa20 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
@@ -590,8 +590,10 @@ linvfs_sync_super( | |||
590 | int error; | 590 | int error; |
591 | int flags = SYNC_FSDATA; | 591 | int flags = SYNC_FSDATA; |
592 | 592 | ||
593 | if (wait) | 593 | if (unlikely(sb->s_frozen == SB_FREEZE_WRITE)) |
594 | flags |= SYNC_WAIT; | 594 | flags = SYNC_QUIESCE; |
595 | else | ||
596 | flags = SYNC_FSDATA | (wait ? SYNC_WAIT : 0); | ||
595 | 597 | ||
596 | VFS_SYNC(vfsp, flags, NULL, error); | 598 | VFS_SYNC(vfsp, flags, NULL, error); |
597 | sb->s_dirt = 0; | 599 | sb->s_dirt = 0; |
diff --git a/fs/xfs/linux-2.6/xfs_vfs.h b/fs/xfs/linux-2.6/xfs_vfs.h index 76493991578f..7ee1f714e9ba 100644 --- a/fs/xfs/linux-2.6/xfs_vfs.h +++ b/fs/xfs/linux-2.6/xfs_vfs.h | |||
@@ -107,6 +107,7 @@ typedef enum { | |||
107 | #define SYNC_FSDATA 0x0020 /* flush fs data (e.g. superblocks) */ | 107 | #define SYNC_FSDATA 0x0020 /* flush fs data (e.g. superblocks) */ |
108 | #define SYNC_REFCACHE 0x0040 /* prune some of the nfs ref cache */ | 108 | #define SYNC_REFCACHE 0x0040 /* prune some of the nfs ref cache */ |
109 | #define SYNC_REMOUNT 0x0080 /* remount readonly, no dummy LRs */ | 109 | #define SYNC_REMOUNT 0x0080 /* remount readonly, no dummy LRs */ |
110 | #define SYNC_QUIESCE 0x0100 /* quiesce fileystem for a snapshot */ | ||
110 | 111 | ||
111 | typedef int (*vfs_mount_t)(bhv_desc_t *, | 112 | typedef int (*vfs_mount_t)(bhv_desc_t *, |
112 | struct xfs_mount_args *, struct cred *); | 113 | struct xfs_mount_args *, struct cred *); |