xfs: ensure log covering transactions are synchronous
authorDave Chinner <dchinner@redhat.com>
Tue, 4 Jan 2011 04:49:29 +0000 (04:49 +0000)
committerAlex Elder <aelder@sgi.com>
Wed, 12 Jan 2011 02:28:17 +0000 (20:28 -0600)
commitc58efdb442bb49dea1d148f207560c41918c1bf4
treed6e117ae65ff7ff921600ef936a7bbb4e3130010
parenteda77982729b7170bdc9e8855f0682edf322d277
xfs: ensure log covering transactions are synchronous

To ensure the log is covered and the filesystem idles correctly, we
need to ensure that dummy transactions hit the disk and do not stay
pinned in memory.  If the superblock is pinned in memory, it can't
be flushed so the log covering cannot make progress. The result is
dependent on timing - more oftent han not we continue to issues a
log covering transaction every 36s rather than idling after ~90s.

Fix this by making the log covering transaction synchronous. To
avoid additional log force from xfssyncd, make the log covering
transaction take the place of the existing log force in the xfssyncd
background sync process.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
fs/xfs/linux-2.6/xfs_super.c
fs/xfs/linux-2.6/xfs_sync.c
fs/xfs/xfs_fsops.c
fs/xfs/xfs_fsops.h