| /linux/include/linux/ |
| H A D | hugetlb_cgroup.h | 61 __hugetlb_cgroup_from_folio(struct folio *folio, bool rsvd) in __hugetlb_cgroup_from_folio() argument 63 VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio); in __hugetlb_cgroup_from_folio() 65 return folio->_hugetlb_cgroup_rsvd; in __hugetlb_cgroup_from_folio() 67 return folio->_hugetlb_cgroup; in __hugetlb_cgroup_from_folio() 70 static inline struct hugetlb_cgroup *hugetlb_cgroup_from_folio(struct folio *folio) in hugetlb_cgroup_from_folio() argument 72 return __hugetlb_cgroup_from_folio(folio, false); in hugetlb_cgroup_from_folio() 76 hugetlb_cgroup_from_folio_rsvd(struct folio *folio) in hugetlb_cgroup_from_folio_rsvd() argument 78 return __hugetlb_cgroup_from_folio(folio, true); in hugetlb_cgroup_from_folio_rsvd() 81 static inline void __set_hugetlb_cgroup(struct folio *folio, in __set_hugetlb_cgroup() argument 84 VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio); in __set_hugetlb_cgroup() [all …]
|
| H A D | memremap.h | 83 void (*folio_free)(struct folio *folio); 108 void (*folio_split)(struct folio *head, struct folio *tail); 166 static inline bool folio_is_device_private(const struct folio *folio) in folio_is_device_private() argument 169 folio_is_zone_device(folio) && in folio_is_device_private() 170 folio->pgmap->type == MEMORY_DEVICE_PRIVATE; in folio_is_device_private() 179 static inline bool folio_is_pci_p2pdma(const struct folio *folio) in folio_is_pci_p2pdma() argument 182 folio_is_zone_device(folio) && in folio_is_pci_p2pdma() 183 folio->pgmap->type == MEMORY_DEVICE_PCI_P2PDMA; in folio_is_pci_p2pdma() 186 static inline void *folio_zone_device_data(const struct folio *folio) in folio_zone_device_data() argument 188 VM_WARN_ON_FOLIO(!folio_is_device_private(folio), folio); in folio_zone_device_data() [all …]
|
| H A D | migrate.h | 10 typedef struct folio *new_folio_t(struct folio *folio, unsigned long private); 11 typedef void free_folio_t(struct folio *folio, unsigned long private); 57 int migrate_folio(struct address_space *mapping, struct folio *dst, 58 struct folio *src, enum migrate_mode mode); 62 struct folio *alloc_migration_target(struct folio *src, unsigned long private); 64 bool isolate_folio_to_list(struct folio *folio, struct list_head *list); 67 struct folio *dst, struct folio *src); 70 void folio_migrate_flags(struct folio *newfolio, struct folio *folio); 72 struct folio *newfolio, struct folio *folio, int extra_count); 82 static inline struct folio *alloc_migration_target(struct folio *src, in alloc_migration_target() [all …]
|
| H A D | page-flags.h | 301 const struct page *: (const struct folio *)_compound_head(p), \ 302 struct page *: (struct folio *)_compound_head(p))) 313 #define folio_page(folio, n) (&(folio)->page + (n)) argument 340 static const unsigned long *const_folio_flags(const struct folio *folio, in const_folio_flags() argument 343 const struct page *page = &folio->page; in const_folio_flags() 350 static unsigned long *folio_flags(struct folio *folio, unsigned n) in folio_flags() argument 352 struct page *page = &folio->page; in folio_flags() 411 static __always_inline bool folio_test_##name(const struct folio *folio) \ 412 { return test_bit(PG_##name, const_folio_flags(folio, page)); } 415 static __always_inline void folio_set_##name(struct folio *folio) \ [all …]
|
| H A D | highmem.h | 132 static inline void *kmap_local_folio(const struct folio *folio, size_t offset); 320 struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma, in vma_alloc_zeroed_movable_folio() 323 struct folio *folio; in vma_alloc_zeroed_movable_folio() local 325 folio = vma_alloc_folio(GFP_HIGHUSER_MOVABLE, 0, vma, vaddr); in vma_alloc_zeroed_movable_folio() 326 if (folio && user_alloc_needs_zeroing()) in vma_alloc_zeroed_movable_folio() 327 clear_user_highpage(&folio->page, vaddr); in vma_alloc_zeroed_movable_folio() 329 return folio; in vma_alloc_zeroed_movable_folio() 500 static inline void memcpy_folio(struct folio *dst_folio, size_t dst_off, in memcpy_folio() 501 struct folio *src_folio, size_t src_off, size_t len) in memcpy_folio() 575 static inline void memcpy_from_folio(char *to, struct folio *folio, in memcpy_from_folio() argument [all …]
|
| H A D | hugetlb.h | 22 void free_huge_folio(struct folio *folio); 131 struct folio *, zap_flags_t); 135 struct folio *, zap_flags_t zap_flags); 148 struct folio **foliop); 154 bool folio_isolate_hugetlb(struct folio *folio, struct list_head *list); 155 int get_hwpoison_hugetlb_folio(struct folio *folio, bool *hugetlb, bool unpoison); 156 void folio_putback_hugetlb(struct folio *folio); 157 void move_hugetlb_state(struct folio *old_folio, struct folio *new_folio, int reason); 168 struct address_space *hugetlb_folio_mapping_lock_write(struct folio *folio); 296 struct folio *folio) in hugetlb_folio_mapping_lock_write() argument [all …]
|
| /linux/include/trace/events/ |
| H A D | pagemap.h | 19 #define trace_pagemap_flags(folio) ( \ argument 20 (folio_test_anon(folio) ? PAGEMAP_ANONYMOUS : PAGEMAP_FILE) | \ 21 (folio_mapped(folio) ? PAGEMAP_MAPPED : 0) | \ 22 (folio_test_swapcache(folio) ? PAGEMAP_SWAPCACHE : 0) | \ 23 (folio_test_swapbacked(folio) ? PAGEMAP_SWAPBACKED : 0) | \ 24 (folio_test_mappedtodisk(folio) ? PAGEMAP_MAPPEDDISK : 0) | \ 25 (folio_test_private(folio) ? PAGEMAP_BUFFERS : 0) \ 30 TP_PROTO(struct folio *folio), 32 TP_ARGS(folio), 35 __field(struct folio *, folio ) [all …]
|
| /linux/fs/ecryptfs/ |
| H A D | mmap.c | 33 struct folio *folio = NULL; in ecryptfs_writepages() local 36 while ((folio = writeback_iter(mapping, wbc, folio, &error))) { in ecryptfs_writepages() 37 error = ecryptfs_encrypt_page(folio); in ecryptfs_writepages() 41 folio->index); in ecryptfs_writepages() 42 folio_clear_uptodate(folio); in ecryptfs_writepages() 45 folio_unlock(folio); in ecryptfs_writepages() 91 ecryptfs_copy_up_encrypted_with_header(struct folio *folio, in ecryptfs_copy_up_encrypted_with_header() argument 100 loff_t view_extent_num = ((loff_t)folio->index in ecryptfs_copy_up_encrypted_with_header() 110 page_virt = kmap_local_folio(folio, 0); in ecryptfs_copy_up_encrypted_with_header() 117 page_virt, folio->mapping->host); in ecryptfs_copy_up_encrypted_with_header() [all …]
|
| /linux/fs/ |
| H A D | mpage.c | 51 folio_end_read(fi.folio, err == 0); in mpage_read_end_io() 63 mapping_set_error(fi.folio->mapping, err); in mpage_write_end_io() 64 folio_end_writeback(fi.folio); in mpage_write_end_io() 96 static void map_buffer_to_folio(struct folio *folio, struct buffer_head *bh, in map_buffer_to_folio() argument 99 struct inode *inode = folio->mapping->host; in map_buffer_to_folio() 103 head = folio_buffers(folio); in map_buffer_to_folio() 109 if (inode->i_blkbits == folio_shift(folio) && in map_buffer_to_folio() 111 folio_mark_uptodate(folio); in map_buffer_to_folio() 114 head = create_empty_buffers(folio, i_blocksize(inode), 0); in map_buffer_to_folio() 132 struct folio *folio; member [all …]
|
| /linux/fs/xfs/scrub/ |
| H A D | xfile.c | 126 struct folio *folio; in xfile_load() local 130 if (shmem_get_folio(inode, pos >> PAGE_SHIFT, 0, &folio, in xfile_load() 133 if (!folio) { in xfile_load() 143 folio_unlock(folio); in xfile_load() 144 folio_put(folio); in xfile_load() 148 offset = offset_in_folio(folio, pos); in xfile_load() 149 len = min_t(ssize_t, count, folio_size(folio) - offset); in xfile_load() 150 memcpy(buf, folio_address(folio) + offset, len); in xfile_load() 152 folio_unlock(folio); in xfile_load() 153 folio_put(folio); in xfile_load() [all …]
|
| /linux/fs/netfs/ |
| H A D | buffered_write.c | 19 static struct folio *netfs_grab_folio_for_write(struct address_space *mapping, in netfs_grab_folio_for_write() 102 struct folio *folio = NULL, *writethrough = NULL; in netfs_perform_write() local 162 folio = netfs_grab_folio_for_write(mapping, pos, part); in netfs_perform_write() 163 if (IS_ERR(folio)) { in netfs_perform_write() 164 ret = PTR_ERR(folio); in netfs_perform_write() 168 flen = folio_size(folio); in netfs_perform_write() 169 fpos = folio_pos(folio); in netfs_perform_write() 177 if (folio_get_private(folio) && in netfs_perform_write() 178 folio_wait_writeback_killable(folio)) { in netfs_perform_write() 188 finfo = netfs_folio_info(folio); in netfs_perform_write() [all …]
|
| H A D | read_pgpriv2.c | 19 static void netfs_pgpriv2_copy_folio(struct netfs_io_request *creq, struct folio *folio) in netfs_pgpriv2_copy_folio() argument 22 size_t fsize = folio_size(folio), flen = fsize; in netfs_pgpriv2_copy_folio() 23 loff_t fpos = folio_pos(folio), i_size; in netfs_pgpriv2_copy_folio() 37 folio_end_private_2(folio); in netfs_pgpriv2_copy_folio() 53 trace_netfs_folio(folio, netfs_folio_trace_store_copy); in netfs_pgpriv2_copy_folio() 56 if (rolling_buffer_append(&creq->buffer, folio, 0) < 0) { in netfs_pgpriv2_copy_folio() 98 struct netfs_io_request *rreq, struct folio *folio) in netfs_pgpriv2_begin_copy_to_cache() argument 105 creq = netfs_create_write_req(rreq->mapping, NULL, folio_pos(folio), in netfs_pgpriv2_begin_copy_to_cache() 132 void netfs_pgpriv2_copy_to_cache(struct netfs_io_request *rreq, struct folio *folio) in netfs_pgpriv2_copy_to_cache() argument 137 creq = netfs_pgpriv2_begin_copy_to_cache(rreq, folio); in netfs_pgpriv2_copy_to_cache() [all …]
|
| H A D | buffered_read.c | 376 static int netfs_create_singular_buffer(struct netfs_io_request *rreq, struct folio *folio, in netfs_create_singular_buffer() argument 384 added = rolling_buffer_append(&rreq->buffer, folio, rollbuf_flags); in netfs_create_singular_buffer() 394 static int netfs_read_gaps(struct file *file, struct folio *folio) in netfs_read_gaps() argument 397 struct address_space *mapping = folio->mapping; in netfs_read_gaps() 398 struct netfs_group *group = netfs_folio_group(folio); in netfs_read_gaps() 399 struct netfs_folio *finfo = netfs_folio_info(folio); in netfs_read_gaps() 401 struct folio *sink = NULL; in netfs_read_gaps() 406 size_t flen = folio_size(folio); in netfs_read_gaps() 411 _enter("%lx", folio->index); in netfs_read_gaps() 413 rreq = netfs_alloc_request(mapping, file, folio_pos(folio), flen, NETFS_READ_GAPS); in netfs_read_gaps() [all …]
|
| H A D | misc.c | 34 struct folio *folio; in netfs_alloc_folioq_buffer() local 54 folio = folio_alloc(gfp, order); in netfs_alloc_folioq_buffer() 55 if (!folio && order > 0) in netfs_alloc_folioq_buffer() 56 folio = folio_alloc(gfp, 0); in netfs_alloc_folioq_buffer() 57 if (!folio) in netfs_alloc_folioq_buffer() 60 folio->mapping = mapping; in netfs_alloc_folioq_buffer() 61 folio->index = *_cur_size / PAGE_SIZE; in netfs_alloc_folioq_buffer() 62 trace_netfs_folio(folio, netfs_folio_trace_alloc_buffer); in netfs_alloc_folioq_buffer() 63 slot = folioq_append_mark(tail, folio); in netfs_alloc_folioq_buffer() 87 struct folio *folio = folioq_folio(fq, slot); in netfs_free_folioq_buffer() local [all …]
|
| H A D | write_issue.c | 45 struct folio *folio) in netfs_kill_dirty_pages() argument 55 priv = folio_detach_private(folio); in netfs_kill_dirty_pages() 75 trace_netfs_folio(folio, why); in netfs_kill_dirty_pages() 77 folio_start_writeback(folio); in netfs_kill_dirty_pages() 78 folio_unlock(folio); in netfs_kill_dirty_pages() 79 folio_end_writeback(folio); in netfs_kill_dirty_pages() 84 } while ((folio = writeback_iter(mapping, wbc, folio, &error))); in netfs_kill_dirty_pages() 322 struct folio *folio) in netfs_write_folio() argument 330 size_t fsize = folio_size(folio), flen = fsize, foff = 0; in netfs_write_folio() 331 loff_t fpos = folio_pos(folio), i_size; in netfs_write_folio() [all …]
|
| /linux/arch/arm/mm/ |
| H A D | flush.c | 199 void __flush_dcache_folio(struct address_space *mapping, struct folio *folio) in __flush_dcache_folio() argument 206 if (!folio_test_highmem(folio)) { in __flush_dcache_folio() 207 __cpuc_flush_dcache_area(folio_address(folio), in __flush_dcache_folio() 208 folio_size(folio)); in __flush_dcache_folio() 212 for (i = 0; i < folio_nr_pages(folio); i++) { in __flush_dcache_folio() 213 void *addr = kmap_local_folio(folio, in __flush_dcache_folio() 219 for (i = 0; i < folio_nr_pages(folio); i++) { in __flush_dcache_folio() 220 void *addr = kmap_high_get(folio_page(folio, i)); in __flush_dcache_folio() 223 kunmap_high(folio_page(folio, i)); in __flush_dcache_folio() 235 flush_pfn_alias(folio_pfn(folio), folio_pos(folio)); in __flush_dcache_folio() [all …]
|
| /linux/fs/qnx6/ |
| H A D | dir.c | 29 struct folio **foliop) in qnx6_get_folio() 31 struct folio *folio = read_mapping_folio(dir->i_mapping, n, NULL); in qnx6_get_folio() local 33 if (IS_ERR(folio)) in qnx6_get_folio() 34 return folio; in qnx6_get_folio() 35 *foliop = folio; in qnx6_get_folio() 36 return kmap_local_folio(folio, 0); in qnx6_get_folio() 50 struct folio **foliop) in qnx6_longname() 57 struct folio *folio = read_mapping_folio(mapping, n, NULL); in qnx6_longname() local 59 if (IS_ERR(folio)) in qnx6_longname() 60 return ERR_CAST(folio); in qnx6_longname() [all …]
|
| /linux/virt/kvm/ |
| H A D | guest_memfd.c | 48 * @folio: The folio which contains this index. 53 static inline kvm_pfn_t folio_file_pfn(struct folio *folio, pgoff_t index) in folio_file_pfn() 55 return folio_pfn(folio) + (index & (folio_nr_pages(folio) - 1)); in folio_file_pfn() 64 pgoff_t index, struct folio *folio) in __kvm_gmem_prepare_folio() 67 kvm_pfn_t pfn = folio_file_pfn(folio, index); in __kvm_gmem_prepare_folio() 69 int rc = kvm_arch_gmem_prepare(kvm, gfn, pfn, folio_order(folio)); in __kvm_gmem_prepare_folio() 52 folio_file_pfn(struct folio * folio,pgoff_t index) folio_file_pfn() argument 63 __kvm_gmem_prepare_folio(struct kvm * kvm,struct kvm_memory_slot * slot,pgoff_t index,struct folio * folio) __kvm_gmem_prepare_folio() argument 86 kvm_gmem_prepare_folio(struct kvm * kvm,struct kvm_memory_slot * slot,gfn_t gfn,struct folio * folio) kvm_gmem_prepare_folio() argument 123 struct folio *folio; kvm_gmem_get_folio() local 269 struct folio *folio; kvm_gmem_allocate() local 394 struct folio *folio; kvm_gmem_fault_user_mapping() local 498 kvm_gmem_error_folio(struct address_space * mapping,struct folio * folio) kvm_gmem_error_folio() argument 526 kvm_gmem_free_folio(struct folio * folio) kvm_gmem_free_folio() argument 759 struct folio *folio; __kvm_gmem_get_pfn() local 793 struct folio *folio; kvm_gmem_get_pfn() local 829 struct folio *folio; __kvm_gmem_populate() local [all...] |
| /linux/mm/ |
| H A D | memfd_luo.c | 96 struct folio **folios; in memfd_luo_preserve_folios() 150 struct folio *folio = folios[i]; in memfd_luo_preserve_folios() local 152 err = kho_preserve_folio(folio); in memfd_luo_preserve_folios() 156 folio_lock(folio); in memfd_luo_preserve_folios() 177 folio_mark_dirty(folio); in memfd_luo_preserve_folios() 191 if (!folio_test_uptodate(folio)) { in memfd_luo_preserve_folios() 192 folio_zero_range(folio, 0, folio_size(folio)); in memfd_luo_preserve_folios() 193 flush_dcache_folio(folio); in memfd_luo_preserve_folios() 194 folio_mark_uptodate(folio); in memfd_luo_preserve_folios() 197 folio_unlock(folio); in memfd_luo_preserve_folios() [all …]
|
| H A D | hugetlb_vmemmap.c | 396 struct folio *folio, unsigned long flags) in __hugetlb_vmemmap_restore_folio() argument 401 VM_WARN_ON_ONCE_FOLIO(!folio_test_hugetlb(folio), folio); in __hugetlb_vmemmap_restore_folio() 402 VM_WARN_ON_ONCE_FOLIO(folio_ref_count(folio), folio); in __hugetlb_vmemmap_restore_folio() 404 if (!folio_test_hugetlb_vmemmap_optimized(folio)) in __hugetlb_vmemmap_restore_folio() 407 vmemmap_start = (unsigned long)&folio->page; in __hugetlb_vmemmap_restore_folio() 420 folio_clear_hugetlb_vmemmap_optimized(folio); in __hugetlb_vmemmap_restore_folio() 435 int hugetlb_vmemmap_restore_folio(const struct hstate *h, struct folio *folio) in hugetlb_vmemmap_restore_folio() argument 437 return __hugetlb_vmemmap_restore_folio(h, folio, 0); in hugetlb_vmemmap_restore_folio() 457 struct folio *folio, *t_folio; in hugetlb_vmemmap_restore_folios() local 462 list_for_each_entry_safe(folio, t_folio, folio_list, lru) { in hugetlb_vmemmap_restore_folios() [all …]
|
| /linux/arch/mips/include/asm/ |
| H A D | cacheflush.h | 39 #define folio_test_dcache_dirty(folio) \ argument 40 test_bit(PG_dcache_dirty, &(folio)->flags.f) 41 #define folio_set_dcache_dirty(folio) \ argument 42 set_bit(PG_dcache_dirty, &(folio)->flags.f) 43 #define folio_clear_dcache_dirty(folio) \ argument 44 clear_bit(PG_dcache_dirty, &(folio)->flags.f) 53 void __flush_dcache_folio_pages(struct folio *folio, struct page *page, unsigned int nr); 56 static inline void flush_dcache_folio(struct folio *folio) in flush_dcache_folio() argument 59 __flush_dcache_folio_pages(folio, folio_page(folio, 0), in flush_dcache_folio() 60 folio_nr_pages(folio)); in flush_dcache_folio() [all …]
|
| /linux/fs/ntfs/ |
| H A D | bitmap.c | 20 struct folio *folio; in ntfs_trim_fs() local 52 folio = ntfs_get_locked_folio(vol->lcnbmp_ino->i_mapping, in ntfs_trim_fs() 54 if (IS_ERR(folio)) { in ntfs_trim_fs() 55 ret = PTR_ERR(folio); in ntfs_trim_fs() 59 kaddr = kmap_local_folio(folio, 0); in ntfs_trim_fs() 90 folio_unlock(folio); in ntfs_trim_fs() 91 folio_put(folio); in ntfs_trim_fs() 126 struct folio *folio; in __ntfs_bitmap_set_bits_in_run() local 150 folio = read_mapping_folio(mapping, index, NULL); in __ntfs_bitmap_set_bits_in_run() 151 if (IS_ERR(folio)) { in __ntfs_bitmap_set_bits_in_run() [all …]
|
| /linux/arch/xtensa/mm/ |
| H A D | cache.c | 90 struct folio *folio = page_folio(page); in clear_user_highpage() local 96 set_bit(PG_arch_1, folio_flags(folio, 0)); in clear_user_highpage() 105 struct folio *folio = page_folio(dst); in copy_user_highpage() local 114 set_bit(PG_arch_1, folio_flags(folio, 0)); in copy_user_highpage() 126 void flush_dcache_folio(struct folio *folio) in flush_dcache_folio() argument 128 struct address_space *mapping = folio_flush_mapping(folio); in flush_dcache_folio() 137 if (!test_bit(PG_arch_1, &folio->flags.f)) in flush_dcache_folio() 138 set_bit(PG_arch_1, &folio->flags.f); in flush_dcache_folio() 142 unsigned long phys = folio_pfn(folio) * PAGE_SIZE; in flush_dcache_folio() 143 unsigned long temp = folio_pos(folio); in flush_dcache_folio() [all …]
|
| /linux/arch/csky/abiv1/ |
| H A D | cacheflush.c | 18 void flush_dcache_folio(struct folio *folio) in flush_dcache_folio() argument 22 if (is_zero_pfn(folio_pfn(folio))) in flush_dcache_folio() 25 mapping = folio_flush_mapping(folio); in flush_dcache_folio() 27 if (mapping && !folio_mapped(folio)) in flush_dcache_folio() 28 clear_bit(PG_dcache_clean, &folio->flags.f); in flush_dcache_folio() 33 set_bit(PG_dcache_clean, &folio->flags.f); in flush_dcache_folio() 48 struct folio *folio; in update_mmu_cache_range() local 58 folio = page_folio(pfn_to_page(pfn)); in update_mmu_cache_range() 59 if (!test_and_set_bit(PG_dcache_clean, &folio->flags.f)) in update_mmu_cache_range() 62 if (folio_flush_mapping(folio)) { in update_mmu_cache_range()
|
| /linux/arch/nios2/mm/ |
| H A D | cacheflush.c | 74 static void flush_aliases(struct address_space *mapping, struct folio *folio) in flush_aliases() argument 80 unsigned long nr = folio_nr_pages(folio); in flush_aliases() 82 pgoff = folio->index; in flush_aliases() 163 static void __flush_dcache_folio(struct folio *folio) in __flush_dcache_folio() argument 170 unsigned long start = (unsigned long)folio_address(folio); in __flush_dcache_folio() 172 __flush_dcache(start, start + folio_size(folio)); in __flush_dcache_folio() 175 void flush_dcache_folio(struct folio *folio) in flush_dcache_folio() argument 183 if (is_zero_pfn(folio_pfn(folio))) in flush_dcache_folio() 186 mapping = folio_flush_mapping(folio); in flush_dcache_folio() 190 clear_bit(PG_dcache_clean, &folio->flags.f); in flush_dcache_folio() [all …]
|