diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index 1ce364bbb0037698ecf499132a819058de05ecdf..863bfb0eb49254fd9c07f21e27952fb6311e0e88 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c @@ -249,10 +249,18 @@ static void move_expired_inodes(struct list_head *delaying_queue, /* * Queue all expired dirty inodes for io, eldest first. + * Before + * newly dirtied b_dirty b_io b_more_io + * =============> gf edc BA + * After + * newly dirtied b_dirty b_io b_more_io + * =============> g fBAedc + * | + * +--> dequeue for IO */ static void queue_io(struct bdi_writeback *wb, unsigned long *older_than_this) { - list_splice_init(&wb->b_more_io, wb->b_io.prev); + list_splice_init(&wb->b_more_io, &wb->b_io); move_expired_inodes(&wb->b_dirty, &wb->b_io, older_than_this); }