提交 91405151 编写于 作者: F Filipe Manana 提交者: Chris Mason

Btrfs: make sure we retry if we couldn't get the page

In inode.c:btrfs_page_exists_in_range(), if we can't get the page
we need to retry. However we weren't retrying because we weren't
setting page to NULL, which makes the while loop exit immediately
and will make us call page_cache_release after exiting the loop
which is incorrect because our page get didn't succeed. This could
also make us return true when we shouldn't.
Signed-off-by: NFilipe David Borba Manana <fdmanana@gmail.com>
Signed-off-by: NChris Mason <clm@fb.com>
上级 c81d5767
...@@ -6777,8 +6777,10 @@ bool btrfs_page_exists_in_range(struct inode *inode, loff_t start, loff_t end) ...@@ -6777,8 +6777,10 @@ bool btrfs_page_exists_in_range(struct inode *inode, loff_t start, loff_t end)
break; /* TODO: Is this relevant for this use case? */ break; /* TODO: Is this relevant for this use case? */
} }
if (!page_cache_get_speculative(page)) if (!page_cache_get_speculative(page)) {
page = NULL;
continue; continue;
}
/* /*
* Has the page moved? * Has the page moved?
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册