btrfs: remove BTRFS_I calls in btrfs_writepage_fixup_worker
All of its children functions use btrfs_inode. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
e5b7231e20
commit
65d87f7918
@ -2281,7 +2281,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
|
||||
struct extent_state *cached_state = NULL;
|
||||
struct extent_changeset *data_reserved = NULL;
|
||||
struct page *page;
|
||||
struct inode *inode;
|
||||
struct btrfs_inode *inode;
|
||||
u64 page_start;
|
||||
u64 page_end;
|
||||
int ret = 0;
|
||||
@ -2289,7 +2289,7 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
|
||||
|
||||
fixup = container_of(work, struct btrfs_writepage_fixup, work);
|
||||
page = fixup->page;
|
||||
inode = fixup->inode;
|
||||
inode = BTRFS_I(fixup->inode);
|
||||
page_start = page_offset(page);
|
||||
page_end = page_offset(page) + PAGE_SIZE - 1;
|
||||
|
||||
@ -2297,8 +2297,8 @@ static void btrfs_writepage_fixup_worker(struct btrfs_work *work)
|
||||
* This is similar to page_mkwrite, we need to reserve the space before
|
||||
* we take the page lock.
|
||||
*/
|
||||
ret = btrfs_delalloc_reserve_space(BTRFS_I(inode), &data_reserved,
|
||||
page_start, PAGE_SIZE);
|
||||
ret = btrfs_delalloc_reserve_space(inode, &data_reserved, page_start,
|
||||
PAGE_SIZE);
|
||||
again:
|
||||
lock_page(page);
|
||||
|
||||
@ -2326,10 +2326,8 @@ again:
|
||||
* when the page was already properly dealt with.
|
||||
*/
|
||||
if (!ret) {
|
||||
btrfs_delalloc_release_extents(BTRFS_I(inode),
|
||||
PAGE_SIZE);
|
||||
btrfs_delalloc_release_space(BTRFS_I(inode),
|
||||
data_reserved,
|
||||
btrfs_delalloc_release_extents(inode, PAGE_SIZE);
|
||||
btrfs_delalloc_release_space(inode, data_reserved,
|
||||
page_start, PAGE_SIZE,
|
||||
true);
|
||||
}
|
||||
@ -2344,25 +2342,23 @@ again:
|
||||
if (ret)
|
||||
goto out_page;
|
||||
|
||||
lock_extent_bits(&BTRFS_I(inode)->io_tree, page_start, page_end,
|
||||
&cached_state);
|
||||
lock_extent_bits(&inode->io_tree, page_start, page_end, &cached_state);
|
||||
|
||||
/* already ordered? We're done */
|
||||
if (PagePrivate2(page))
|
||||
goto out_reserved;
|
||||
|
||||
ordered = btrfs_lookup_ordered_range(BTRFS_I(inode), page_start,
|
||||
PAGE_SIZE);
|
||||
ordered = btrfs_lookup_ordered_range(inode, page_start, PAGE_SIZE);
|
||||
if (ordered) {
|
||||
unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start,
|
||||
page_end, &cached_state);
|
||||
unlock_extent_cached(&inode->io_tree, page_start, page_end,
|
||||
&cached_state);
|
||||
unlock_page(page);
|
||||
btrfs_start_ordered_extent(inode, ordered, 1);
|
||||
btrfs_start_ordered_extent(&inode->vfs_inode, ordered, 1);
|
||||
btrfs_put_ordered_extent(ordered);
|
||||
goto again;
|
||||
}
|
||||
|
||||
ret = btrfs_set_extent_delalloc(BTRFS_I(inode), page_start, page_end, 0,
|
||||
ret = btrfs_set_extent_delalloc(inode, page_start, page_end, 0,
|
||||
&cached_state);
|
||||
if (ret)
|
||||
goto out_reserved;
|
||||
@ -2377,11 +2373,11 @@ again:
|
||||
BUG_ON(!PageDirty(page));
|
||||
free_delalloc_space = false;
|
||||
out_reserved:
|
||||
btrfs_delalloc_release_extents(BTRFS_I(inode), PAGE_SIZE);
|
||||
btrfs_delalloc_release_extents(inode, PAGE_SIZE);
|
||||
if (free_delalloc_space)
|
||||
btrfs_delalloc_release_space(BTRFS_I(inode), data_reserved,
|
||||
page_start, PAGE_SIZE, true);
|
||||
unlock_extent_cached(&BTRFS_I(inode)->io_tree, page_start, page_end,
|
||||
btrfs_delalloc_release_space(inode, data_reserved, page_start,
|
||||
PAGE_SIZE, true);
|
||||
unlock_extent_cached(&inode->io_tree, page_start, page_end,
|
||||
&cached_state);
|
||||
out_page:
|
||||
if (ret) {
|
||||
@ -2404,7 +2400,7 @@ out_page:
|
||||
* that could need flushing space. Recursing back to fixup worker would
|
||||
* deadlock.
|
||||
*/
|
||||
btrfs_add_delayed_iput(inode);
|
||||
btrfs_add_delayed_iput(&inode->vfs_inode);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user