From: Bart Samwel XFS sets flag XFS_B_ASYNC on a pagebuf when wait == 0, but it forgets that this flag is persistent, and it doesn't remove it when wait != 0. --- 25-akpm/fs/xfs/xfs_vfsops.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN fs/xfs/xfs_vfsops.c~xfs-sync-fix fs/xfs/xfs_vfsops.c --- 25/fs/xfs/xfs_vfsops.c~xfs-sync-fix 2004-03-28 14:01:38.720887576 -0800 +++ 25-akpm/fs/xfs/xfs_vfsops.c 2004-03-28 14:01:38.723887120 -0800 @@ -1486,6 +1486,8 @@ xfs_syncsub( xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE); if (!(flags & SYNC_WAIT)) XFS_BUF_BFLAGS(bp) |= XFS_B_ASYNC; + else + XFS_BUF_BFLAGS(bp) &= ~XFS_B_ASYNC; error = xfs_bwrite(mp, bp); } if (error) { _