fs: aio: use a folio in aio_setup_ring()
Use a folio throughout aio_setup_ring() to remove calls to compound_head(), also use folio_end_read() to simultaneously mark the folio uptodate and unlock it. Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> Link: https://lore.kernel.org/r/20240321131640.948634-2-wangkefeng.wang@huawei.com Reviewed-by: Matthew Wilcox (Oracle) <willy@infradead.org> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
85a6a1aff0
commit
75a07b557a
22
fs/aio.c
22
fs/aio.c
@ -527,17 +527,19 @@ static int aio_setup_ring(struct kioctx *ctx, unsigned int nr_events)
|
||||
}
|
||||
|
||||
for (i = 0; i < nr_pages; i++) {
|
||||
struct page *page;
|
||||
page = find_or_create_page(file->f_mapping,
|
||||
i, GFP_USER | __GFP_ZERO);
|
||||
if (!page)
|
||||
break;
|
||||
pr_debug("pid(%d) page[%d]->count=%d\n",
|
||||
current->pid, i, page_count(page));
|
||||
SetPageUptodate(page);
|
||||
unlock_page(page);
|
||||
struct folio *folio;
|
||||
|
||||
ctx->ring_pages[i] = page;
|
||||
folio = __filemap_get_folio(file->f_mapping, i,
|
||||
FGP_LOCK | FGP_ACCESSED | FGP_CREAT,
|
||||
GFP_USER | __GFP_ZERO);
|
||||
if (IS_ERR(folio))
|
||||
break;
|
||||
|
||||
pr_debug("pid(%d) [%d] folio->count=%d\n", current->pid, i,
|
||||
folio_ref_count(folio));
|
||||
folio_end_read(folio, true);
|
||||
|
||||
ctx->ring_pages[i] = &folio->page;
|
||||
}
|
||||
ctx->nr_pages = i;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user