From: NeilBrown Date: Sat, 26 Jun 2010 04:24:47 +0000 (+1000) Subject: Make sure we io_wait when we clear B_Writeback X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=e75fabdf079f3305a3b1450fc38d52572a8ff9d1;p=LaFS.git Make sure we io_wait when we clear B_Writeback There was one path where we didn't. Signed-off-by: NeilBrown --- diff --git a/io.c b/io.c index 0bbeb21..b6837f5 100644 --- a/io.c +++ b/io.c @@ -237,12 +237,11 @@ void lafs_writeback_done(struct block *b) * If it is last on page, release page as well. */ - if (test_bit(B_Index, &b->flags)) + if (test_bit(B_Index, &b->flags)) { clear_bit(B_Writeback, &b->flags); - else + lafs_io_wake(b); + } else lafs_iocheck_writeback(dblk(b), 1); - - lafs_io_wake(b); } void lafs_iocheck_block(struct datablock *db, int unlock) @@ -308,6 +307,8 @@ void lafs_iocheck_writeback(struct datablock *db, int unlock) if (havewrite) end_page_writeback(page); + if (unlock) + lafs_io_wake(&db->b); } int __must_check