[XFS] kill xfs_syncsub
Now that the only caller is xfs_sync(), merge the two together as it makes no sense to keep them separate. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32306a Signed-off-by: David Chinner <david@fromorbit.com> Signed-off-by: Lachlan McIlroy <lachlan@sgi.com> Signed-off-by: Christoph Hellwig <hch@infradead.org>
This commit is contained in:
committed by
Lachlan McIlroy
parent
2030b5aba8
commit
dfd837a9eb
@@ -47,79 +47,6 @@
|
|||||||
#include <linux/kthread.h>
|
#include <linux/kthread.h>
|
||||||
#include <linux/freezer.h>
|
#include <linux/freezer.h>
|
||||||
|
|
||||||
/*
|
|
||||||
* xfs_sync flushes any pending I/O to file system vfsp.
|
|
||||||
*
|
|
||||||
* This routine is called by vfs_sync() to make sure that things make it
|
|
||||||
* out to disk eventually, on sync() system calls to flush out everything,
|
|
||||||
* and when the file system is unmounted. For the vfs_sync() case, all
|
|
||||||
* we really need to do is sync out the log to make all of our meta-data
|
|
||||||
* updates permanent (except for timestamps). For calls from pflushd(),
|
|
||||||
* dirty pages are kept moving by calling pdflush() on the inodes
|
|
||||||
* containing them. We also flush the inodes that we can lock without
|
|
||||||
* sleeping and the superblock if we can lock it without sleeping from
|
|
||||||
* vfs_sync() so that items at the tail of the log are always moving out.
|
|
||||||
*
|
|
||||||
* Flags:
|
|
||||||
* SYNC_BDFLUSH - We're being called from vfs_sync() so we don't want
|
|
||||||
* to sleep if we can help it. All we really need
|
|
||||||
* to do is ensure that the log is synced at least
|
|
||||||
* periodically. We also push the inodes and
|
|
||||||
* superblock if we can lock them without sleeping
|
|
||||||
* and they are not pinned.
|
|
||||||
* SYNC_ATTR - We need to flush the inodes. If SYNC_BDFLUSH is not
|
|
||||||
* set, then we really want to lock each inode and flush
|
|
||||||
* it.
|
|
||||||
* SYNC_WAIT - All the flushes that take place in this call should
|
|
||||||
* be synchronous.
|
|
||||||
* SYNC_DELWRI - This tells us to push dirty pages associated with
|
|
||||||
* inodes. SYNC_WAIT and SYNC_BDFLUSH are used to
|
|
||||||
* determine if they should be flushed sync, async, or
|
|
||||||
* delwri.
|
|
||||||
* SYNC_CLOSE - This flag is passed when the system is being
|
|
||||||
* unmounted. We should sync and invalidate everything.
|
|
||||||
* SYNC_FSDATA - This indicates that the caller would like to make
|
|
||||||
* sure the superblock is safe on disk. We can ensure
|
|
||||||
* this by simply making sure the log gets flushed
|
|
||||||
* if SYNC_BDFLUSH is set, and by actually writing it
|
|
||||||
* out otherwise.
|
|
||||||
* SYNC_IOWAIT - The caller wants us to wait for all data I/O to complete
|
|
||||||
* before we return (including direct I/O). Forms the drain
|
|
||||||
* side of the write barrier needed to safely quiesce the
|
|
||||||
* filesystem.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
xfs_sync(
|
|
||||||
xfs_mount_t *mp,
|
|
||||||
int flags)
|
|
||||||
{
|
|
||||||
int error;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Get the Quota Manager to flush the dquots.
|
|
||||||
*
|
|
||||||
* If XFS quota support is not enabled or this filesystem
|
|
||||||
* instance does not use quotas XFS_QM_DQSYNC will always
|
|
||||||
* return zero.
|
|
||||||
*/
|
|
||||||
error = XFS_QM_DQSYNC(mp, flags);
|
|
||||||
if (error) {
|
|
||||||
/*
|
|
||||||
* If we got an IO error, we will be shutting down.
|
|
||||||
* So, there's nothing more for us to do here.
|
|
||||||
*/
|
|
||||||
ASSERT(error != EIO || XFS_FORCED_SHUTDOWN(mp));
|
|
||||||
if (XFS_FORCED_SHUTDOWN(mp))
|
|
||||||
return XFS_ERROR(error);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (flags & SYNC_IOWAIT)
|
|
||||||
xfs_filestream_flush(mp);
|
|
||||||
|
|
||||||
return xfs_syncsub(mp, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sync all the inodes in the given AG according to the
|
* Sync all the inodes in the given AG according to the
|
||||||
* direction given by the flags.
|
* direction given by the flags.
|
||||||
@@ -396,21 +323,77 @@ xfs_sync_fsdata(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* xfs sync routine for internal use
|
* xfs_sync flushes any pending I/O to file system vfsp.
|
||||||
*
|
*
|
||||||
* This routine supports all of the flags defined for the generic vfs_sync
|
* This routine is called by vfs_sync() to make sure that things make it
|
||||||
* interface as explained above under xfs_sync.
|
* out to disk eventually, on sync() system calls to flush out everything,
|
||||||
|
* and when the file system is unmounted. For the vfs_sync() case, all
|
||||||
|
* we really need to do is sync out the log to make all of our meta-data
|
||||||
|
* updates permanent (except for timestamps). For calls from pflushd(),
|
||||||
|
* dirty pages are kept moving by calling pdflush() on the inodes
|
||||||
|
* containing them. We also flush the inodes that we can lock without
|
||||||
|
* sleeping and the superblock if we can lock it without sleeping from
|
||||||
|
* vfs_sync() so that items at the tail of the log are always moving out.
|
||||||
|
*
|
||||||
|
* Flags:
|
||||||
|
* SYNC_BDFLUSH - We're being called from vfs_sync() so we don't want
|
||||||
|
* to sleep if we can help it. All we really need
|
||||||
|
* to do is ensure that the log is synced at least
|
||||||
|
* periodically. We also push the inodes and
|
||||||
|
* superblock if we can lock them without sleeping
|
||||||
|
* and they are not pinned.
|
||||||
|
* SYNC_ATTR - We need to flush the inodes. If SYNC_BDFLUSH is not
|
||||||
|
* set, then we really want to lock each inode and flush
|
||||||
|
* it.
|
||||||
|
* SYNC_WAIT - All the flushes that take place in this call should
|
||||||
|
* be synchronous.
|
||||||
|
* SYNC_DELWRI - This tells us to push dirty pages associated with
|
||||||
|
* inodes. SYNC_WAIT and SYNC_BDFLUSH are used to
|
||||||
|
* determine if they should be flushed sync, async, or
|
||||||
|
* delwri.
|
||||||
|
* SYNC_CLOSE - This flag is passed when the system is being
|
||||||
|
* unmounted. We should sync and invalidate everything.
|
||||||
|
* SYNC_FSDATA - This indicates that the caller would like to make
|
||||||
|
* sure the superblock is safe on disk. We can ensure
|
||||||
|
* this by simply making sure the log gets flushed
|
||||||
|
* if SYNC_BDFLUSH is set, and by actually writing it
|
||||||
|
* out otherwise.
|
||||||
|
* SYNC_IOWAIT - The caller wants us to wait for all data I/O to complete
|
||||||
|
* before we return (including direct I/O). Forms the drain
|
||||||
|
* side of the write barrier needed to safely quiesce the
|
||||||
|
* filesystem.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
STATIC int
|
int
|
||||||
xfs_syncsub(
|
xfs_sync(
|
||||||
xfs_mount_t *mp,
|
xfs_mount_t *mp,
|
||||||
int flags)
|
int flags)
|
||||||
{
|
{
|
||||||
int error = 0;
|
int error;
|
||||||
int last_error = 0;
|
int last_error = 0;
|
||||||
uint log_flags = XFS_LOG_FORCE;
|
uint log_flags = XFS_LOG_FORCE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Get the Quota Manager to flush the dquots.
|
||||||
|
*
|
||||||
|
* If XFS quota support is not enabled or this filesystem
|
||||||
|
* instance does not use quotas XFS_QM_DQSYNC will always
|
||||||
|
* return zero.
|
||||||
|
*/
|
||||||
|
error = XFS_QM_DQSYNC(mp, flags);
|
||||||
|
if (error) {
|
||||||
|
/*
|
||||||
|
* If we got an IO error, we will be shutting down.
|
||||||
|
* So, there's nothing more for us to do here.
|
||||||
|
*/
|
||||||
|
ASSERT(error != EIO || XFS_FORCED_SHUTDOWN(mp));
|
||||||
|
if (XFS_FORCED_SHUTDOWN(mp))
|
||||||
|
return XFS_ERROR(error);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (flags & SYNC_IOWAIT)
|
||||||
|
xfs_filestream_flush(mp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sync out the log. This ensures that the log is periodically
|
* Sync out the log. This ensures that the log is periodically
|
||||||
* flushed even if there is not enough activity to fill it up.
|
* flushed even if there is not enough activity to fill it up.
|
||||||
|
Reference in New Issue
Block a user