• Artem Bityutskiy's avatar
    writeback: do not lose wake-ups in bdi threads · 297252c8
    Artem Bityutskiy authored
    Currently, bdi threads ('bdi_writeback_thread()') can lose wake-ups. For
    example, if 'bdi_queue_work()' is executed after the bdi thread have had
    finished 'wb_do_writeback()' but before it called
    'schedule_timeout_interruptible()'.
    
    To fix this issue, we have to check whether we have works to process after we
    have changed the task state to 'TASK_INTERRUPTIBLE'.
    
    This patch also clean-ups handling of the cases when 'dirty_writeback_interval'
    is zero or non-zero.
    
    Additionally, this patch also removes unneeded 'list_empty_careful()' call.
    Signed-off-by: default avatarArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
    297252c8
fs-writeback.c 31.6 KB