Btrfs: loop waiting on writeback

lock_extent_buffer_for_io needs to loop around and make sure the
writeback bits are not set.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
Chris Mason
2012-03-21 12:09:56 -04:00
parent cfed81a04e
commit a098d8e8ee

View File

@@ -3010,12 +3010,12 @@ static int lock_extent_buffer_for_io(struct extent_buffer *eb,
flush_write_bio(epd); flush_write_bio(epd);
flush = 1; flush = 1;
} }
wait_on_extent_buffer_writeback(eb); while (1) {
btrfs_tree_lock(eb); wait_on_extent_buffer_writeback(eb);
if (test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags)) { btrfs_tree_lock(eb);
printk(KERN_ERR "Um, ok?\n"); if (!test_bit(EXTENT_BUFFER_WRITEBACK, &eb->bflags))
break;
btrfs_tree_unlock(eb); btrfs_tree_unlock(eb);
return 0;
} }
} }