• Dave Chinner's avatar
    xfs: introduce a xfssyncd workqueue · c6d09b66
    Dave Chinner authored
    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: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarAlex Elder <aelder@sgi.com>
    c6d09b66
xfs_sync.c 27.5 KB