Lines Matching refs:folio

31 static void dir_commit_chunk(struct folio *folio, loff_t pos, unsigned len)  in dir_commit_chunk()  argument
33 struct address_space *mapping = folio->mapping; in dir_commit_chunk()
36 block_write_end(NULL, mapping, pos, len, len, folio, NULL); in dir_commit_chunk()
41 folio_unlock(folio); in dir_commit_chunk()
62 struct folio **foliop) in dir_get_folio()
64 struct folio *folio = read_mapping_folio(dir->i_mapping, n, NULL); in dir_get_folio() local
66 if (IS_ERR(folio)) in dir_get_folio()
67 return ERR_CAST(folio); in dir_get_folio()
68 *foliop = folio; in dir_get_folio()
69 return kmap_local_folio(folio, 0); in dir_get_folio()
91 struct folio *folio; in sysv_readdir() local
93 kaddr = dir_get_folio(inode, n, &folio); in sysv_readdir()
107 folio_release_kmap(folio, kaddr); in sysv_readdir()
111 folio_release_kmap(folio, kaddr); in sysv_readdir()
139 struct sysv_dir_entry *sysv_find_entry(struct dentry *dentry, struct folio **foliop) in sysv_find_entry()
185 struct folio *folio = NULL; in sysv_add_link() local
195 kaddr = dir_get_folio(dir, n, &folio); in sysv_add_link()
208 folio_release_kmap(folio, kaddr); in sysv_add_link()
214 pos = folio_pos(folio) + offset_in_folio(folio, de); in sysv_add_link()
215 folio_lock(folio); in sysv_add_link()
216 err = sysv_prepare_chunk(folio, pos, SYSV_DIRSIZE); in sysv_add_link()
222 dir_commit_chunk(folio, pos, SYSV_DIRSIZE); in sysv_add_link()
227 folio_release_kmap(folio, kaddr); in sysv_add_link()
230 folio_unlock(folio); in sysv_add_link()
234 int sysv_delete_entry(struct sysv_dir_entry *de, struct folio *folio) in sysv_delete_entry() argument
236 struct inode *inode = folio->mapping->host; in sysv_delete_entry()
237 loff_t pos = folio_pos(folio) + offset_in_folio(folio, de); in sysv_delete_entry()
240 folio_lock(folio); in sysv_delete_entry()
241 err = sysv_prepare_chunk(folio, pos, SYSV_DIRSIZE); in sysv_delete_entry()
243 folio_unlock(folio); in sysv_delete_entry()
247 dir_commit_chunk(folio, pos, SYSV_DIRSIZE); in sysv_delete_entry()
255 struct folio *folio = filemap_grab_folio(inode->i_mapping, 0); in sysv_make_empty() local
260 if (IS_ERR(folio)) in sysv_make_empty()
261 return PTR_ERR(folio); in sysv_make_empty()
262 err = sysv_prepare_chunk(folio, 0, 2 * SYSV_DIRSIZE); in sysv_make_empty()
264 folio_unlock(folio); in sysv_make_empty()
267 kaddr = kmap_local_folio(folio, 0); in sysv_make_empty()
268 memset(kaddr, 0, folio_size(folio)); in sysv_make_empty()
278 dir_commit_chunk(folio, 0, 2 * SYSV_DIRSIZE); in sysv_make_empty()
281 folio_put(folio); in sysv_make_empty()
291 struct folio *folio = NULL; in sysv_empty_dir() local
298 kaddr = dir_get_folio(inode, i, &folio); in sysv_empty_dir()
303 kaddr += folio_size(folio) - SYSV_DIRSIZE; in sysv_empty_dir()
320 folio_release_kmap(folio, kaddr); in sysv_empty_dir()
325 folio_release_kmap(folio, kaddr); in sysv_empty_dir()
330 int sysv_set_link(struct sysv_dir_entry *de, struct folio *folio, in sysv_set_link() argument
333 struct inode *dir = folio->mapping->host; in sysv_set_link()
334 loff_t pos = folio_pos(folio) + offset_in_folio(folio, de); in sysv_set_link()
337 folio_lock(folio); in sysv_set_link()
338 err = sysv_prepare_chunk(folio, pos, SYSV_DIRSIZE); in sysv_set_link()
340 folio_unlock(folio); in sysv_set_link()
344 dir_commit_chunk(folio, pos, SYSV_DIRSIZE); in sysv_set_link()
357 struct sysv_dir_entry *sysv_dotdot(struct inode *dir, struct folio **foliop) in sysv_dotdot()
369 struct folio *folio; in sysv_inode_by_name() local
370 struct sysv_dir_entry *de = sysv_find_entry (dentry, &folio); in sysv_inode_by_name()
375 folio_release_kmap(folio, de); in sysv_inode_by_name()