diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2023-01-10 12:56:58 +1100 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2023-01-10 12:56:58 +1100 |
commit | 223d0b12489523ca279c913d49a1122b835034ec (patch) | |
tree | 96e925b745cd451c209d28ad2ad8553aa0ae182e | |
parent | 55ab60a5cefaaa1c2cc04bcffd5927f29de46cdb (diff) | |
parent | 03b33c09ea22fa89dd204ad0a2058e512c691b9f (diff) | |
download | linux-223d0b12489523ca279c913d49a1122b835034ec.tar.gz linux-223d0b12489523ca279c913d49a1122b835034ec.tar.xz |
Merge branch 'for-next' of git://git.infradead.org/users/willy/pagecache.git
# Conflicts:
# fs/buffer.c
# fs/hugetlbfs/inode.c
# include/linux/migrate.h
# mm/migrate.c
# mm/migrate_device.c
# mm/zsmalloc.c
-rw-r--r-- | fs/btrfs/disk-io.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index a7d5a3967ba0..f330dfa066c0 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4191,7 +4191,7 @@ static int wait_dev_supers(struct btrfs_device *device, int max_mirrors) max_mirrors = BTRFS_SUPER_MIRROR_MAX; for (i = 0; i < max_mirrors; i++) { - struct page *page; + struct folio *folio; ret = btrfs_sb_log_location(device, i, READ, &bytenr); if (ret == -ENOENT) { @@ -4206,27 +4206,24 @@ static int wait_dev_supers(struct btrfs_device *device, int max_mirrors) device->commit_total_bytes) break; - page = find_get_page(device->bdev->bd_inode->i_mapping, + folio = filemap_get_folio(device->bdev->bd_inode->i_mapping, bytenr >> PAGE_SHIFT); - if (!page) { + if (!folio) { errors++; if (i == 0) primary_failed = true; continue; } - /* Page is submitted locked and unlocked once the IO completes */ - wait_on_page_locked(page); - if (PageError(page)) { + /* Folio is unlocked once the IO completes */ + folio_wait_locked(folio); + if (!folio_test_uptodate(folio)) { errors++; if (i == 0) primary_failed = true; } - /* Drop our reference */ - put_page(page); - - /* Drop the reference from the writing run */ - put_page(page); + /* Drop our reference and the one from the writing run */ + folio_put_refs(folio, 2); } /* log error, force error return */ |