summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2023-01-10 12:56:58 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2023-01-10 12:56:58 +1100
commit223d0b12489523ca279c913d49a1122b835034ec (patch)
tree96e925b745cd451c209d28ad2ad8553aa0ae182e
parent55ab60a5cefaaa1c2cc04bcffd5927f29de46cdb (diff)
parent03b33c09ea22fa89dd204ad0a2058e512c691b9f (diff)
downloadlinux-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.c19
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 */