forked from Minki/linux
writeback: fix queue_io() ordering
This was not a bug, since b_io is empty for kupdate writeback. The next patch will do requeue_io() for non-kupdate writeback, so let's fix it. Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> Cc: Dave Chinner <david@fromorbit.com> Cc: Martin Bligh <mbligh@google.com> Cc: Michael Rubin <mrubin@google.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Christoph Hellwig <hch@infradead.org> Cc: Jens Axboe <axboe@kernel.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
23539afc71
commit
4ea879b96d
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user