From: Matthew Wilcox (Oracle) Date: Tue, 17 May 2022 22:03:27 +0000 (-0400) Subject: btrfs: Use a folio in wait_dev_supers() X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=964688b32d9ada55a7fce2e650d85ef24188f73f;p=users%2Fwilly%2Fpagecache.git btrfs: Use a folio in wait_dev_supers() Remove a use of PageError and optimise putting the page reference twice. Signed-off-by: Matthew Wilcox (Oracle) --- diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 4ba005c419836..dbac856565718 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -4178,7 +4178,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) { @@ -4193,27 +4193,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 */