mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-04-29 12:28:27 +02:00
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: Josef Bacik <josef@toxicpanda.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
committed by
David Sterba
parent
7e755aa731
commit
0a577636a9
+11
-10
@@ -332,7 +332,7 @@ static void finish_ordered_fn(struct btrfs_work *work)
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
struct btrfs_inode *inode = ordered->inode;
|
||||
@@ -340,10 +340,10 @@ static bool can_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
|
||||
|
||||
lockdep_assert_held(&inode->ordered_tree_lock);
|
||||
|
||||
if (page) {
|
||||
ASSERT(page->mapping);
|
||||
ASSERT(page_offset(page) <= file_offset);
|
||||
ASSERT(file_offset + len <= page_offset(page) + PAGE_SIZE);
|
||||
if (folio) {
|
||||
ASSERT(folio->mapping);
|
||||
ASSERT(folio_pos(folio) <= file_offset);
|
||||
ASSERT(file_offset + len <= folio_pos(folio) + folio_size(folio));
|
||||
|
||||
/*
|
||||
* Ordered (Private2) bit indicates whether we still have
|
||||
@@ -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 (!btrfs_folio_test_ordered(fs_info, page_folio(page),
|
||||
file_offset, len))
|
||||
if (!btrfs_folio_test_ordered(fs_info, folio, file_offset, len))
|
||||
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. */
|
||||
@@ -408,7 +407,8 @@ void btrfs_finish_ordered_extent(struct btrfs_ordered_extent *ordered,
|
||||
trace_btrfs_finish_ordered_extent(inode, file_offset, len, uptodate);
|
||||
|
||||
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);
|
||||
|
||||
/*
|
||||
@@ -524,7 +524,8 @@ void btrfs_mark_ordered_io_finished(struct btrfs_inode *inode,
|
||||
ASSERT(end + 1 - cur < U32_MAX);
|
||||
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);
|
||||
btrfs_queue_ordered_fn(entry);
|
||||
spin_lock_irqsave(&inode->ordered_tree_lock, flags);
|
||||
|
||||
Reference in New Issue
Block a user