Btrfs: Fix releasepage to properly keep dirty and writeback pages
Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
8d5bf1cb35
commit
98509cfc5a
|
@ -346,7 +346,7 @@ int btree_readpage_end_io_hook(struct page *page, u64 start, u64 end,
|
|||
eb = alloc_extent_buffer(tree, start, len, page, GFP_NOFS);
|
||||
|
||||
found_start = btrfs_header_bytenr(eb);
|
||||
if (found_start != start) {
|
||||
if (0 && found_start != start) {
|
||||
printk("bad tree block start %llu %llu\n",
|
||||
(unsigned long long)found_start,
|
||||
(unsigned long long)eb->start);
|
||||
|
@ -592,6 +592,9 @@ static int btree_releasepage(struct page *page, gfp_t gfp_flags)
|
|||
struct extent_map_tree *map;
|
||||
int ret;
|
||||
|
||||
if (PageWriteback(page) || PageDirty(page))
|
||||
return 0;
|
||||
|
||||
tree = &BTRFS_I(page->mapping->host)->io_tree;
|
||||
map = &BTRFS_I(page->mapping->host)->extent_tree;
|
||||
|
||||
|
|
|
@ -3060,6 +3060,8 @@ static int __btrfs_releasepage(struct page *page, gfp_t gfp_flags)
|
|||
|
||||
static int btrfs_releasepage(struct page *page, gfp_t gfp_flags)
|
||||
{
|
||||
if (PageWriteback(page) || PageDirty(page))
|
||||
return 0;
|
||||
return __btrfs_releasepage(page, gfp_flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue