| /linux/mm/ |
| H A D | memfd_luo.c | 96 struct folio **folios; in memfd_luo_preserve_folios() local 117 folios = kvmalloc_objs(*folios, max_folios); in memfd_luo_preserve_folios() 118 if (!folios) in memfd_luo_preserve_folios() 133 nr_pinned = memfd_pin_folios(file, 0, size - 1, folios, max_folios, in memfd_luo_preserve_folios() 150 struct folio *folio = folios[i]; in memfd_luo_preserve_folios() 208 kvfree(folios); in memfd_luo_preserve_folios() 221 kho_unpreserve_folio(folios[i]); in memfd_luo_preserve_folios() 224 unpin_folios(folios, nr_folios); in memfd_luo_preserve_folios() 226 kvfree(folios); in memfd_luo_preserve_folios() 303 err = memfd_luo_preserve_folios(args->file, &ser->folios, in memfd_luo_preserve() [all …]
|
| H A D | folio.c | 168 struct folio *folio = fbatch->folios[i]; in folio_batch_move_lru() 188 fbatch->folios[i] = NULL; in folio_batch_move_lru() 342 struct folio *batch_folio = fbatch->folios[i]; in __lru_cache_activate_folio() 981 void folios_put_refs(struct folio_batch *folios, unsigned int *refs) in folios_put_refs() argument 987 for (i = 0, j = 0; i < folios->nr; i++) { in folios_put_refs() 988 struct folio *folio = folios->folios[i]; in folios_put_refs() 1024 folios->folios[j] = folio; in folios_put_refs() 1030 folio_batch_reinit(folios); in folios_put_refs() 1034 folios->nr = j; in folios_put_refs() 1035 mem_cgroup_uncharge_folios(folios); in folios_put_refs() [all …]
|
| H A D | swap_state.c | 578 struct folio_batch folios; in free_pages_and_swap_cache() local 581 folio_batch_init(&folios); in free_pages_and_swap_cache() 586 refs[folios.nr] = 1; in free_pages_and_swap_cache() 589 refs[folios.nr] = encoded_nr_pages(pages[++i]); in free_pages_and_swap_cache() 591 if (folio_batch_add(&folios, folio) == 0) in free_pages_and_swap_cache() 592 folios_put_refs(&folios, refs); in free_pages_and_swap_cache() 594 if (folios.nr) in free_pages_and_swap_cache() 595 folios_put_refs(&folios, refs); in free_pages_and_swap_cache()
|
| H A D | gup.c | 449 void unpin_folios(struct folio **folios, unsigned long nfolios) in unpin_folios() argument 464 if (folios[i] != folios[j]) in unpin_folios() 467 if (folios[i]) in unpin_folios() 468 gup_put_folio(folios[i], j - i, FOLL_PIN); in unpin_folios() 2210 struct folio **folios; member 2220 return pofs->folios[i]; in pofs_get_folio() 2232 unpin_folios(pofs->folios, pofs->nr_entries); in pofs_unpin() 2416 struct folio **folios) in check_and_migrate_movable_folios() argument 2419 .folios = folios, in check_and_migrate_movable_folios() 2450 struct folio **folios) in check_and_migrate_movable_folios() argument [all …]
|
| H A D | migrate.c | 2030 LIST_HEAD(folios); in migrate_pages_sync() 2036 reason, &folios, split_folios, &astats, in migrate_pages_sync() 2045 list_splice_tail(&folios, ret_folios); in migrate_pages_sync() 2059 list_splice_tail_init(&folios, from); in migrate_pages_sync() 2061 list_move(from->next, &folios); in migrate_pages_sync() 2062 rc = migrate_pages_batch(&folios, get_new_folio, put_new_folio, in migrate_pages_sync() 2065 list_splice_tail_init(&folios, ret_folios); in migrate_pages_sync() 2107 LIST_HEAD(folios); in migrate_pages() 2135 list_cut_before(&folios, from, &folio2->lru); in migrate_pages() 2137 list_splice_init(from, &folios); in migrate_pages() [all …]
|
| H A D | filemap.c | 282 XA_STATE(xas, &mapping->i_pages, fbatch->folios[0]->index); in page_cache_delete_batch() 302 if (folio != fbatch->folios[i]) { in page_cache_delete_batch() 304 fbatch->folios[i]->index, folio); in page_cache_delete_batch() 331 struct folio *folio = fbatch->folios[i]; in delete_from_page_cache_batch() 343 filemap_free_folio(mapping, fbatch->folios[i]); in delete_from_page_cache_batch() 530 struct folio *folio = fbatch.folios[i]; in __filemap_fdatawait_range() 2150 folio = fbatch->folios[idx]; in find_get_entries() 2320 folio = fbatch->folios[nr - 1]; in filemap_get_folios_contig() 2726 folio = fbatch->folios[folio_batch_count(fbatch) - 1]; in filemap_get_pages() 2852 fbatch.folios[0])) in filemap_read() [all …]
|
| /linux/fs/btrfs/ |
| H A D | accessors.c | 59 char *kaddr = folio_address(eb->folios[idx]) + oif; \ 73 kaddr = folio_address(eb->folios[idx + 1]); \ 77 folio_address(eb->folios[idx + 1]), \ 89 char *kaddr = folio_address(eb->folios[idx]) + oif; \ 105 kaddr = folio_address(eb->folios[idx + 1]); \ 109 kaddr = folio_address(eb->folios[idx + 1]); \
|
| H A D | defrag.c | 1135 struct folio **folios, int nr_pages, in defrag_one_locked_target() argument 1152 for (int i = 0; i < nr_pages && folios[i]; i++) { in defrag_one_locked_target() 1153 struct folio *folio = folios[i]; in defrag_one_locked_target() 1172 struct folio AUTO_KFREE(*folios); in defrag_one_range() 1184 folios = kzalloc_objs(struct folio *, nr_pages, GFP_NOFS); in defrag_one_range() 1185 if (!folios) in defrag_one_range() 1204 folios[i] = defrag_prepare_one_folio(inode, cur >> PAGE_SHIFT); in defrag_one_range() 1205 if (IS_ERR(folios[i])) { in defrag_one_range() 1206 ret = PTR_ERR(folios[i]); in defrag_one_range() 1207 folios[i] = NULL; in defrag_one_range() [all …]
|
| H A D | extent_io.c | 283 struct folio *folio = fbatch.folios[i]; in __process_folios_contig() 343 struct folio *folio = fbatch.folios[i]; in lock_delalloc_folios() 720 eb->folios[i] = page_folio(page_array[i]); in alloc_eb_folio_array() 2410 btrfs_meta_folio_clear_writeback(eb->folios[i], eb); in end_bbio_meta_write() 2462 struct folio *folio = eb->folios[i]; in write_one_eb() 2785 struct folio *folio = fbatch.folios[i]; in extent_write_cache_pages() 3231 struct folio *folio = eb->folios[i]; in btrfs_release_extent_buffer_folios() 3369 ASSERT(eb->folios[i]); in cleanup_extent_buffer_folios() 3370 detach_extent_buffer_folio(eb, eb->folios[i]); in cleanup_extent_buffer_folios() 3371 folio_put(eb->folios[i]); in cleanup_extent_buffer_folios() [all …]
|
| H A D | extent_io.h | 115 struct folio *folios[INLINE_EXTENT_BUFFER_PAGES]; member 181 return offset_in_folio(eb->folios[0], offset + eb->start); in get_eb_offset_in_folio() 345 if (!eb->folios[0]) in num_extent_folios() 347 if (folio_order(eb->folios[0])) in num_extent_folios()
|
| H A D | Kconfig | 112 - huge folios for data - folios can be as large as 2MiB now
|
| /linux/drivers/dma-buf/ |
| H A D | udmabuf.c | 305 loff_t start, loff_t size, struct folio **folios) in udmabuf_pin_folios() argument 316 nr_folios = memfd_pin_folios(memfd, start, end, folios, pgcnt, &pgoff); in udmabuf_pin_folios() 323 size_t fsize = folio_size(folios[cur_folio]); in udmabuf_pin_folios() 325 ubuf->pinned_folios[nr_pinned++] = folios[cur_folio]; in udmabuf_pin_folios() 328 ubuf->pages[upgcnt] = folio_page(folios[cur_folio], in udmabuf_pin_folios() 355 struct folio **folios = NULL; in udmabuf_create() local 390 folios = kvmalloc_objs(*folios, max_nr_folios); in udmabuf_create() 391 if (!folios) { in udmabuf_create() 414 list[i].size, folios); in udmabuf_create() 438 kvfree(folios); in udmabuf_create() [all …]
|
| /linux/tools/mm/ |
| H A D | thpmaps | 252 folios = indexes[index_next:index_end][heads[index_next:index_end]] 256 nr = (int(folios[0]) if len(folios) else index_end) - index_next 261 if len(folios): 264 nr = index_end - int(folios[-1]) 265 folios = folios[:-1] 270 if len(folios): 271 folio_nrs = np.append(np.diff(folios), np.uint64(index_end - folios[-1])) 273 for index, order in zip(folios, folio_orders):
|
| /linux/fs/ramfs/ |
| H A D | file-nommu.c | 238 ret = (unsigned long) folio_address(fbatch.folios[0]); in ramfs_nommu_get_unmapped_area() 239 pfn = folio_pfn(fbatch.folios[0]); in ramfs_nommu_get_unmapped_area() 243 if (pfn + nr_pages != folio_pfn(fbatch.folios[loop])) { in ramfs_nommu_get_unmapped_area() 247 nr_pages += folio_nr_pages(fbatch.folios[loop]); in ramfs_nommu_get_unmapped_area()
|
| /linux/fs/orangefs/ |
| H A D | inode.c | 74 struct folio **folios; member 91 start = offset_in_folio(ow->folios[0], ow->off); in orangefs_writepages_work() 93 folio_start_writeback(ow->folios[i]); in orangefs_writepages_work() 94 bvec_set_folio(&ow->bv[i], ow->folios[i], in orangefs_writepages_work() 95 folio_size(ow->folios[i]) - start, start); in orangefs_writepages_work() 115 wrp = folio_detach_private(ow->folios[i]); in orangefs_writepages_work() 117 folio_end_writeback(ow->folios[i]); in orangefs_writepages_work() 118 folio_unlock(ow->folios[i]); in orangefs_writepages_work() 144 ow->folios[ow->nfolios++] = folio; in orangefs_writepages_callback() 156 ow->folios[ow->nfolios++] = folio; in orangefs_writepages_callback() [all …]
|
| /linux/Documentation/ABI/testing/ |
| H A D | sysfs-fs-erofs | 29 compressed folios: 31 - 1 : invalidate cached compressed folios 33 - 3 : drop in-memory pclusters and cached compressed folios
|
| /linux/fs/fuse/ |
| H A D | file.c | 618 folio_mark_dirty_lock(ap->folios[i]); in fuse_release_user_pages() 620 unpin_folio(ap->folios[i]); in fuse_release_user_pages() 726 ia->ap.folios = fuse_folios_alloc(nfolios, GFP_KERNEL, in fuse_io_alloc() 728 if (!ia->ap.folios) { in fuse_io_alloc() 738 kfree(ia->ap.folios); in fuse_io_free() 840 loff_t pos = folio_pos(ap->folios[0]) + num_read; in fuse_short_read() 859 .ap.folios = &folio, in fuse_do_readfolio() 952 ap->folios[ap->num_folios] = folio; in fuse_handle_readahead() 1035 mapping = ap->folios[0]->mapping; in fuse_readpages_end() 1047 iomap_finish_folio_read(ap->folios[i], ap->descs[i].offset, in fuse_readpages_end() [all …]
|
| H A D | readdir.c | 353 ap->folios = fuse_folios_alloc(nr_pages, GFP_KERNEL, &ap->descs); in fuse_readdir_alloc_buf() 354 if (!ap->folios) in fuse_readdir_alloc_buf() 358 ap->folios[i] = page_folio(pages[i]); in fuse_readdir_alloc_buf() 425 kfree(ap->folios); in fuse_readdir_uncached()
|
| /linux/Documentation/mm/ |
| H A D | unevictable-lru.rst | 13 folios. 28 folios and to hide these folios from vmscan. This mechanism is based on a patch 72 The Unevictable LRU infrastructure maintains unevictable folios as if they were 75 (1) We get to "treat unevictable folios just like we treat other folios in the 80 (2) We want to be able to migrate unevictable folios between nodes for memory 82 can only migrate folios that it can successfully isolate from the LRU 83 lists (or "Movable" folios: outside of consideration here). If we were to 84 maintain folios elsewhere than on an LRU-like list, where they can be 88 anonymous, swap-backed folios. This differentiation is only important 89 while the folios are, in fact, evictable. [all …]
|
| H A D | multigen_lru.rst | 92 truncated generation number is an index to ``lrugen->folios[]``. The 96 ``lrugen->folios[]``; otherwise it stores zero. 100 generations, tiers do not have dedicated ``lrugen->folios[]``. In 131 increments ``min_seq`` when ``lrugen->folios[]`` indexed by 226 since each node and memcg combination has an LRU of folios (see 232 the active/inactive LRU (of folios): 255 The multi-gen LRU (of folios) can be disassembled into the following
|
| H A D | page_migration.rst | 66 1. Remove folios from the LRU. 68 Lists of folios to be migrated are generated by scanning over 69 folios and moving them into lists. This is done by 87 migrate_pages() does several passes over its list of folios. A folio is moved
|
| /linux/fs/ntfs/ |
| H A D | wof.c | 423 struct folio *folios[NTFS_WOF_MAX_PAGES]; member 435 struct folio *folio = dest->folios[i]; in ntfs_wof_release_dest() 484 if (dest->nr_folios == ARRAY_SIZE(dest->folios)) { in ntfs_wof_collect_dest() 491 dest->folios[dest->nr_folios++] = folio; in ntfs_wof_collect_dest() 503 if (folio_contains(dest->folios[i], page_index)) { in ntfs_wof_collect_dest() 504 folio = dest->folios[i]; in ntfs_wof_collect_dest()
|
| /linux/fs/netfs/ |
| H A D | rolling_buffer.c | 145 nr = __readahead_batch(ractl, (struct page **)fq->vec.folios, in rolling_buffer_bulk_load_from_ra() 169 folio_unlock(fq->vec.folios[slot]); in rolling_buffer_bulk_load_from_ra()
|
| /linux/Documentation/core-api/ |
| H A D | pin_user_pages.rst | 58 For large folios, the GUP_PIN_COUNTING_BIAS scheme is not used. Instead, 62 This approach for large folios avoids the counting upper limit problems 68 This also means that huge pages and large folios do not suffer 202 The whole point of marking folios as "DMA-pinned" or "gup-pinned" is to be able 275 fields, and to better report on large folios in general. Specifically, 276 for large folios, the exact pincount is reported.
|
| /linux/Documentation/filesystems/iomap/ |
| H A D | porting.rst | 31 2. Large folios are only supported via iomap; there are no plans to 39 allocating, instantiating, locking, and unlocking of folios. 108 interface with iomap and folios.
|