|
@@ -68,7 +68,7 @@ int nr_pdflush_threads;
|
|
|
*/
|
|
|
int writeback_in_progress(struct backing_dev_info *bdi)
|
|
|
{
|
|
|
- return !list_empty(&bdi->work_list);
|
|
|
+ return test_bit(BDI_writeback_running, &bdi->state);
|
|
|
}
|
|
|
|
|
|
static void bdi_queue_work(struct backing_dev_info *bdi,
|
|
@@ -740,6 +740,7 @@ long wb_do_writeback(struct bdi_writeback *wb, int force_wait)
|
|
|
struct wb_writeback_work *work;
|
|
|
long wrote = 0;
|
|
|
|
|
|
+ set_bit(BDI_writeback_running, &wb->bdi->state);
|
|
|
while ((work = get_next_work_item(bdi)) != NULL) {
|
|
|
/*
|
|
|
* Override sync mode, in case we must wait for completion
|
|
@@ -766,6 +767,7 @@ long wb_do_writeback(struct bdi_writeback *wb, int force_wait)
|
|
|
* Check for periodic writeback, kupdated() style
|
|
|
*/
|
|
|
wrote += wb_check_old_data_flush(wb);
|
|
|
+ clear_bit(BDI_writeback_running, &wb->bdi->state);
|
|
|
|
|
|
return wrote;
|
|
|
}
|