Commit 0a577636 authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba

btrfs: convert can_finish_ordered_extent() to use a folio

Pass in a folio instead, and use a folio instead of a page.
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 7e755aa7
...@@ -332,7 +332,7 @@ static void finish_ordered_fn(struct btrfs_work *work) ...@@ -332,7 +332,7 @@ static void finish_ordered_fn(struct btrfs_work *work)
} }
static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered, static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
struct page *page, u64 file_offset, struct folio *folio, u64 file_offset,
u64 len, bool uptodate) u64 len, bool uptodate)
{ {
struct btrfs_inode *inode = ordered->inode; struct btrfs_inode *inode = ordered->inode;
...@@ -340,10 +340,10 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered, ...@@ -340,10 +340,10 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
lockdep_assert_held(&inode->ordered_tree_lock); lockdep_assert_held(&inode->ordered_tree_lock);
if (page) { if (folio) {
ASSERT(page->mapping); ASSERT(folio->mapping);
ASSERT(page_offset(page) <= file_offset); ASSERT(folio_pos(folio) <= file_offset);
ASSERT(file_offset + len <= page_offset(page) + PAGE_SIZE); ASSERT(file_offset + len <= folio_pos(folio) + folio_size(folio));
/* /*
* Ordered (Private2) bit indicates whether we still have * Ordered (Private2) bit indicates whether we still have
...@@ -351,10 +351,9 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered, ...@@ -351,10 +351,9 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
* *
* If there's no such bit, we need to skip to next range. * If there's no such bit, we need to skip to next range.
*/ */
if (!btrfs_folio_test_ordered(fs_info, page_folio(page), if (!btrfs_folio_test_ordered(fs_info, folio, file_offset, len))
file_offset, len))
return false; return false;
btrfs_folio_clear_ordered(fs_info, page_folio(page), file_offset, len); btrfs_folio_clear_ordered(fs_info, folio, file_offset, len);
} }
/* Now we're fine to update the accounting. */ /* Now we're fine to update the accounting. */
...@@ -408,7 +407,8 @@ void btrfs_finish_ordered_extent(struct btrfs_ordered_extent *ordered, ...@@ -408,7 +407,8 @@ void btrfs_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
trace_btrfs_finish_ordered_extent(inode, file_offset, len, uptodate); trace_btrfs_finish_ordered_extent(inode, file_offset, len, uptodate);
spin_lock_irqsave(&inode->ordered_tree_lock, flags); spin_lock_irqsave(&inode->ordered_tree_lock, flags);
ret = can_finish_ordered_extent(ordered, page, file_offset, len, uptodate); ret = can_finish_ordered_extent(ordered, page_folio(page), file_offset,
len, uptodate);
spin_unlock_irqrestore(&inode->ordered_tree_lock, flags); spin_unlock_irqrestore(&inode->ordered_tree_lock, flags);
/* /*
...@@ -524,7 +524,8 @@ void btrfs_mark_ordered_io_finished(struct btrfs_inode *inode, ...@@ -524,7 +524,8 @@ void btrfs_mark_ordered_io_finished(struct btrfs_inode *inode,
ASSERT(end + 1 - cur < U32_MAX); ASSERT(end + 1 - cur < U32_MAX);
len = end + 1 - cur; len = end + 1 - cur;
if (can_finish_ordered_extent(entry, page, cur, len, uptodate)) { if (can_finish_ordered_extent(entry, page_folio(page), cur, len,
uptodate)) {
spin_unlock_irqrestore(&inode->ordered_tree_lock, flags); spin_unlock_irqrestore(&inode->ordered_tree_lock, flags);
btrfs_queue_ordered_fn(entry); btrfs_queue_ordered_fn(entry);
spin_lock_irqsave(&inode->ordered_tree_lock, flags); spin_lock_irqsave(&inode->ordered_tree_lock, flags);
......
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