forked from luck/tmp_suning_uos_patched
[XFS] xfssyncd: don't call xfs_sync
Start de-multiplexing xfs_sync() by making xfs_sync_worker() call the specific sync functions it needs. This is only a small, unique subset of the entire xfs_sync() code so is easier to follow. SGI-PV: 988140 SGI-Modid: xfs-linux-melb:xfs-kern:32307a 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:
parent
dfd837a9eb
commit
aacaa880bf
@ -526,6 +526,11 @@ xfs_flush_device(
|
|||||||
xfs_log_force(ip->i_mount, (xfs_lsn_t)0, XFS_LOG_FORCE|XFS_LOG_SYNC);
|
xfs_log_force(ip->i_mount, (xfs_lsn_t)0, XFS_LOG_FORCE|XFS_LOG_SYNC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Every sync period we need to unpin all items, reclaim inodes, sync
|
||||||
|
* quota and write out the superblock. We might need to cover the log
|
||||||
|
* to indicate it is idle.
|
||||||
|
*/
|
||||||
STATIC void
|
STATIC void
|
||||||
xfs_sync_worker(
|
xfs_sync_worker(
|
||||||
struct xfs_mount *mp,
|
struct xfs_mount *mp,
|
||||||
@ -533,8 +538,15 @@ xfs_sync_worker(
|
|||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
if (!(mp->m_flags & XFS_MOUNT_RDONLY))
|
if (!(mp->m_flags & XFS_MOUNT_RDONLY)) {
|
||||||
error = xfs_sync(mp, SYNC_FSDATA | SYNC_BDFLUSH | SYNC_ATTR);
|
xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE);
|
||||||
|
xfs_finish_reclaim_all(mp, 1, XFS_IFLUSH_DELWRI_ELSE_ASYNC);
|
||||||
|
/* dgc: errors ignored here */
|
||||||
|
error = XFS_QM_DQSYNC(mp, SYNC_BDFLUSH);
|
||||||
|
error = xfs_sync_fsdata(mp, SYNC_BDFLUSH);
|
||||||
|
if (xfs_log_need_covered(mp))
|
||||||
|
error = xfs_commit_dummy_trans(mp, XFS_LOG_FORCE);
|
||||||
|
}
|
||||||
mp->m_sync_seq++;
|
mp->m_sync_seq++;
|
||||||
wake_up(&mp->m_wait_single_sync_task);
|
wake_up(&mp->m_wait_single_sync_task);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user