Commit 39bbc56a authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba

btrfs: convert fallback_to_cow() to take a folio

With this we can pass the folio directly into cow_file_range().
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 4cf7e056
...@@ -1763,8 +1763,9 @@ static noinline int run_delalloc_cow(struct btrfs_inode *inode, ...@@ -1763,8 +1763,9 @@ static noinline int run_delalloc_cow(struct btrfs_inode *inode,
return 1; return 1;
} }
static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page, static int fallback_to_cow(struct btrfs_inode *inode,
const u64 start, const u64 end) struct folio *locked_folio, const u64 start,
const u64 end)
{ {
const bool is_space_ino = btrfs_is_free_space_inode(inode); const bool is_space_ino = btrfs_is_free_space_inode(inode);
const bool is_reloc_ino = btrfs_is_data_reloc_root(inode->root); const bool is_reloc_ino = btrfs_is_data_reloc_root(inode->root);
...@@ -1833,8 +1834,8 @@ static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page, ...@@ -1833,8 +1834,8 @@ static int fallback_to_cow(struct btrfs_inode *inode, struct page *locked_page,
* is written out and unlocked directly and a normal NOCOW extent * is written out and unlocked directly and a normal NOCOW extent
* doesn't work. * doesn't work.
*/ */
ret = cow_file_range(inode, page_folio(locked_page), start, end, NULL, ret = cow_file_range(inode, locked_folio, start, end, NULL, false,
false, true); true);
ASSERT(ret != 1); ASSERT(ret != 1);
return ret; return ret;
} }
...@@ -2151,7 +2152,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode, ...@@ -2151,7 +2152,7 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
* NOCOW, following one which needs to be COW'ed * NOCOW, following one which needs to be COW'ed
*/ */
if (cow_start != (u64)-1) { if (cow_start != (u64)-1) {
ret = fallback_to_cow(inode, locked_page, ret = fallback_to_cow(inode, page_folio(locked_page),
cow_start, found_key.offset - 1); cow_start, found_key.offset - 1);
cow_start = (u64)-1; cow_start = (u64)-1;
if (ret) { if (ret) {
...@@ -2230,7 +2231,8 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode, ...@@ -2230,7 +2231,8 @@ static noinline int run_delalloc_nocow(struct btrfs_inode *inode,
if (cow_start != (u64)-1) { if (cow_start != (u64)-1) {
cur_offset = end; cur_offset = end;
ret = fallback_to_cow(inode, locked_page, cow_start, end); ret = fallback_to_cow(inode, page_folio(locked_page), cow_start,
end);
cow_start = (u64)-1; cow_start = (u64)-1;
if (ret) if (ret)
goto error; goto error;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment