From: Chris Mason Date: Mon, 10 Nov 2008 12:31:30 +0000 (-0500) Subject: Btrfs: Make sure pages are dirty before doing delalloc for them X-Git-Tag: firefly_0821_release~15789^2~11^2~55^2~32 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=f2b1c41cf94d7f839fe9ede5f3ead92698a93fb3;p=firefly-linux-kernel-4.4.55.git Btrfs: Make sure pages are dirty before doing delalloc for them This adds a PageDirty check to the writeback path that locks pages for delalloc. If a page wasn't dirty at this point, it is in the process of being truncated away. Signed-off-by: Chris Mason --- diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index ad75a9cc3604..69ea09659d47 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -1205,7 +1205,8 @@ static noinline int lock_delalloc_pages(struct inode *inode, */ if (pages[i] != locked_page) { lock_page(pages[i]); - if (pages[i]->mapping != inode->i_mapping) { + if (!PageDirty(pages[i]) || + pages[i]->mapping != inode->i_mapping) { ret = -EAGAIN; unlock_page(pages[i]); page_cache_release(pages[i]);