Lines Matching defs:folio
44 static bool afs_dir_release_folio(struct folio *folio, gfp_t gfp_flags);
45 static void afs_dir_invalidate_folio(struct folio *folio, size_t offset,
49 struct folio *folio)
114 struct folio *folio;
123 xas_for_each(&xas, folio, last) {
124 if (xas_retry(&xas, folio))
126 BUG_ON(xa_is_value(folio));
127 ASSERTCMP(folio_file_mapping(folio), ==, mapping);
129 folio_put(folio);
136 * check that a directory folio is valid
138 static bool afs_dir_check_folio(struct afs_vnode *dvnode, struct folio *folio,
145 /* Determine how many magic numbers there should be in this folio, but
148 pos = folio_pos(folio);
152 size = min_t(loff_t, folio_size(folio), i_size - pos);
154 block = kmap_local_folio(folio, offset);
166 * use string functions on it. The filenames in the folio
188 struct folio *folio;
201 xas_for_each(&xas, folio, last) {
202 if (xas_retry(&xas, folio))
205 BUG_ON(folio_file_mapping(folio) != mapping);
207 size = min_t(loff_t, folio_size(folio), req->actual_len - folio_pos(folio));
209 block = kmap_local_folio(folio, offset);
210 pr_warn("[%02lx] %32phN\n", folio_index(folio) + offset, block);
222 struct folio *folio;
232 xas_for_each(&xas, folio, last) {
233 if (xas_retry(&xas, folio))
236 BUG_ON(folio_file_mapping(folio) != mapping);
238 if (!afs_dir_check_folio(dvnode, folio, req->actual_len)) {
322 struct folio *folio;
324 folio = filemap_get_folio(mapping, i);
325 if (IS_ERR(folio)) {
328 folio = __filemap_get_folio(mapping,
331 if (IS_ERR(folio)) {
332 ret = PTR_ERR(folio);
335 folio_attach_private(folio, (void *)1);
336 folio_unlock(folio);
339 req->nr_pages += folio_nr_pages(folio);
340 i += folio_nr_pages(folio);
503 struct folio *folio;
526 /* Fetch the appropriate folio from the directory and re-add it
529 folio = __filemap_get_folio(dir->i_mapping, ctx->pos / PAGE_SIZE,
531 if (IS_ERR(folio)) {
536 offset = round_down(ctx->pos, sizeof(*dblock)) - folio_file_pos(folio);
537 size = min_t(loff_t, folio_size(folio),
538 req->actual_len - folio_file_pos(folio));
541 dblock = kmap_local_folio(folio, offset);
543 folio_file_pos(folio) + offset);
2010 * Release a directory folio and clean up its private state if it's not busy
2011 * - return true if the folio can now be released, false if not
2013 static bool afs_dir_release_folio(struct folio *folio, gfp_t gfp_flags)
2015 struct afs_vnode *dvnode = AFS_FS_I(folio_inode(folio));
2017 _enter("{{%llx:%llu}[%lu]}", dvnode->fid.vid, dvnode->fid.vnode, folio_index(folio));
2019 folio_detach_private(folio);
2028 * Invalidate part or all of a folio.
2030 static void afs_dir_invalidate_folio(struct folio *folio, size_t offset,
2033 struct afs_vnode *dvnode = AFS_FS_I(folio_inode(folio));
2035 _enter("{%lu},%zu,%zu", folio->index, offset, length);
2037 BUG_ON(!folio_test_locked(folio));
2043 /* we clean up only if the entire folio is being invalidated */
2044 if (offset == 0 && length == folio_size(folio))
2045 folio_detach_private(folio);