xfs: introduce a xfssyncd workqueue
authorDave Chinner <dchinner@redhat.com>
Fri, 8 Apr 2011 02:45:07 +0000 (12:45 +1000)
committerDave Chinner <david@fromorbit.com>
Fri, 8 Apr 2011 02:45:07 +0000 (12:45 +1000)
commitc6d09b666de11eb272326a6eb6cd3246da571014
tree74951ec04191b47a1fb75f9e79de6c00837a7c17
parente828776a8abe6b9bae7ed9638710bff7642c568a
xfs: introduce a xfssyncd workqueue

All of the work xfssyncd does is background functionality. There is
no need for a thread per filesystem to do this work - it can al be
managed by a global workqueue now they manage concurrency
effectively.

Introduce a new gglobal xfssyncd workqueue, and convert the periodic
work to use this new functionality. To do this, use a delayed work
construct to schedule the next running of the periodic sync work
for the filesystem. When the sync work is complete, queue a new
delayed work for the next running of the sync work.

For laptop mode, we wait on completion for the sync works, so ensure
that the sync work queuing interface can flush and wait for work to
complete to enable the work queue infrastructure to replace the
current sequence number and wakeup that is used.

Because the sync work does non-trivial amounts of work, mark the
new work queue as CPU intensive.

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