diff options
Diffstat (limited to 'fs/xfs/xfs_mount.c')
-rw-r--r-- | fs/xfs/xfs_mount.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 2ec967d93e5..82e1646e624 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -64,6 +64,7 @@ | |||
64 | STATIC void xfs_mount_log_sbunit(xfs_mount_t *, __int64_t); | 64 | STATIC void xfs_mount_log_sbunit(xfs_mount_t *, __int64_t); |
65 | STATIC int xfs_uuid_mount(xfs_mount_t *); | 65 | STATIC int xfs_uuid_mount(xfs_mount_t *); |
66 | STATIC void xfs_uuid_unmount(xfs_mount_t *mp); | 66 | STATIC void xfs_uuid_unmount(xfs_mount_t *mp); |
67 | STATIC void xfs_unmountfs_wait(xfs_mount_t *); | ||
67 | 68 | ||
68 | static struct { | 69 | static struct { |
69 | short offset; | 70 | short offset; |
@@ -555,7 +556,7 @@ xfs_readsb(xfs_mount_t *mp) | |||
555 | * fields from the superblock associated with the given | 556 | * fields from the superblock associated with the given |
556 | * mount structure | 557 | * mount structure |
557 | */ | 558 | */ |
558 | void | 559 | STATIC void |
559 | xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) | 560 | xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) |
560 | { | 561 | { |
561 | int i; | 562 | int i; |
@@ -1081,7 +1082,7 @@ xfs_unmountfs(xfs_mount_t *mp, struct cred *cr) | |||
1081 | int64_t fsid; | 1082 | int64_t fsid; |
1082 | #endif | 1083 | #endif |
1083 | 1084 | ||
1084 | xfs_iflush_all(mp, XFS_FLUSH_ALL); | 1085 | xfs_iflush_all(mp); |
1085 | 1086 | ||
1086 | XFS_QM_DQPURGEALL(mp, | 1087 | XFS_QM_DQPURGEALL(mp, |
1087 | XFS_QMOPT_UQUOTA | XFS_QMOPT_GQUOTA | XFS_QMOPT_UMOUNTING); | 1088 | XFS_QMOPT_UQUOTA | XFS_QMOPT_GQUOTA | XFS_QMOPT_UMOUNTING); |
@@ -1111,15 +1112,6 @@ xfs_unmountfs(xfs_mount_t *mp, struct cred *cr) | |||
1111 | */ | 1112 | */ |
1112 | ASSERT(mp->m_inodes == NULL); | 1113 | ASSERT(mp->m_inodes == NULL); |
1113 | 1114 | ||
1114 | /* | ||
1115 | * We may have bufs that are in the process of getting written still. | ||
1116 | * We must wait for the I/O completion of those. The sync flag here | ||
1117 | * does a two pass iteration thru the bufcache. | ||
1118 | */ | ||
1119 | if (XFS_FORCED_SHUTDOWN(mp)) { | ||
1120 | xfs_incore_relse(mp->m_ddev_targp, 0, 1); /* synchronous */ | ||
1121 | } | ||
1122 | |||
1123 | xfs_unmountfs_close(mp, cr); | 1115 | xfs_unmountfs_close(mp, cr); |
1124 | if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0) | 1116 | if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0) |
1125 | xfs_uuid_unmount(mp); | 1117 | xfs_uuid_unmount(mp); |
@@ -1146,7 +1138,7 @@ xfs_unmountfs_close(xfs_mount_t *mp, struct cred *cr) | |||
1146 | xfs_free_buftarg(mp->m_ddev_targp, 0); | 1138 | xfs_free_buftarg(mp->m_ddev_targp, 0); |
1147 | } | 1139 | } |
1148 | 1140 | ||
1149 | void | 1141 | STATIC void |
1150 | xfs_unmountfs_wait(xfs_mount_t *mp) | 1142 | xfs_unmountfs_wait(xfs_mount_t *mp) |
1151 | { | 1143 | { |
1152 | if (mp->m_logdev_targp != mp->m_ddev_targp) | 1144 | if (mp->m_logdev_targp != mp->m_ddev_targp) |