We see dirty inodes there occasionally, so better be safe and write them out. Signed-off-by: Jens Axboe <jens.axboe@xxxxxxxxxx> --- fs/fs-writeback.c | 2 +- include/linux/writeback.h | 1 + mm/backing-dev.c | 8 ++++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 8e0902e..e4f96b9 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -432,7 +432,7 @@ static void wb_writeback(struct bdi_writeback *wb) * This will be inlined in bdi_writeback_task() once we get rid of any * dirty inodes on the default_backing_dev_info */ -static void wb_do_writeback(struct bdi_writeback *wb) +void wb_do_writeback(struct bdi_writeback *wb) { /* * We get here in two cases: diff --git a/include/linux/writeback.h b/include/linux/writeback.h index baf04a9..e414702 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -69,6 +69,7 @@ void writeback_inodes(struct writeback_control *wbc); int inode_wait(void *); void sync_inodes_sb(struct super_block *, int wait); void sync_inodes(int wait); +void wb_do_writeback(struct bdi_writeback *wb); /* writeback.h requires fs.h; it, too, is not included from here. */ static inline void wait_on_inode(struct inode *inode) diff --git a/mm/backing-dev.c b/mm/backing-dev.c index 57e44e3..977c171 100644 --- a/mm/backing-dev.c +++ b/mm/backing-dev.c @@ -396,8 +396,8 @@ static int bdi_forker_task(void *ptr) * Temporary measure, we want to make sure we don't see * dirty data on the default backing_dev_info */ - if (wb_has_dirty_io(me)) - bdi_flush_io(me->bdi); + if (wb_has_dirty_io(me) || !list_empty(&me->bdi->work_list)) + wb_do_writeback(me); prepare_to_wait(&me->wait, &wait, TASK_INTERRUPTIBLE); @@ -424,6 +424,10 @@ static int bdi_forker_task(void *ptr) continue; } + /* + * This is our real job - check for pending entries in + * bdi_pending_list, and create the tasks that got added + */ bdi = list_entry(bdi_pending_list.next, struct backing_dev_info, bdi_list); list_del_init(&bdi->bdi_list); -- 1.6.3.rc0.1.gf800 -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html