Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c90b07e8 authored by Dave Chinner's avatar Dave Chinner Committed by Alex Elder
Browse files

xfs: fix xfs_quiesce_data



We need to do a synchronous xfs_sync_fsdata to make sure the superblock
actually is on disk when we return.

Also remove SYNC_BDFLUSH flag to xfs_sync_inodes because that particular
flag is never checked.

Move xfs_filestream_flush call later to only release inodes after they
have been written out.

Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarAlex Elder <aelder@sgi.com>
Signed-off-by: default avatarAlex Elder <aelder@sgi.com>
parent f9581b14
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -419,14 +419,16 @@ xfs_quiesce_data(
	/* push non-blocking */
	xfs_sync_data(mp, 0);
	xfs_qm_sync(mp, SYNC_TRYLOCK);
	xfs_filestream_flush(mp);

	/* push and block */
	/* push and block till complete */
	xfs_sync_data(mp, SYNC_WAIT);
	xfs_qm_sync(mp, SYNC_WAIT);

	/* drop inode references pinned by filestreams */
	xfs_filestream_flush(mp);

	/* write superblock and hoover up shutdown errors */
	error = xfs_sync_fsdata(mp, 0);
	error = xfs_sync_fsdata(mp, SYNC_WAIT);

	/* flush data-only devices */
	if (mp->m_rtdev_targp)