Lines Matching refs:mapping
253 static int shmem_radix_tree_replace(struct address_space *mapping, in shmem_radix_tree_replace() argument
261 pslot = radix_tree_lookup_slot(&mapping->page_tree, index); in shmem_radix_tree_replace()
264 item = radix_tree_deref_slot_protected(pslot, &mapping->tree_lock); in shmem_radix_tree_replace()
278 static bool shmem_confirm_swap(struct address_space *mapping, in shmem_confirm_swap() argument
284 item = radix_tree_lookup(&mapping->page_tree, index); in shmem_confirm_swap()
293 struct address_space *mapping, in shmem_add_to_page_cache() argument
302 page->mapping = mapping; in shmem_add_to_page_cache()
305 spin_lock_irq(&mapping->tree_lock); in shmem_add_to_page_cache()
307 error = radix_tree_insert(&mapping->page_tree, index, page); in shmem_add_to_page_cache()
309 error = shmem_radix_tree_replace(mapping, index, expected, in shmem_add_to_page_cache()
312 mapping->nrpages++; in shmem_add_to_page_cache()
315 spin_unlock_irq(&mapping->tree_lock); in shmem_add_to_page_cache()
317 page->mapping = NULL; in shmem_add_to_page_cache()
318 spin_unlock_irq(&mapping->tree_lock); in shmem_add_to_page_cache()
329 struct address_space *mapping = page->mapping; in shmem_delete_from_page_cache() local
332 spin_lock_irq(&mapping->tree_lock); in shmem_delete_from_page_cache()
333 error = shmem_radix_tree_replace(mapping, page->index, page, radswap); in shmem_delete_from_page_cache()
334 page->mapping = NULL; in shmem_delete_from_page_cache()
335 mapping->nrpages--; in shmem_delete_from_page_cache()
338 spin_unlock_irq(&mapping->tree_lock); in shmem_delete_from_page_cache()
346 static int shmem_free_swap(struct address_space *mapping, in shmem_free_swap() argument
351 spin_lock_irq(&mapping->tree_lock); in shmem_free_swap()
352 old = radix_tree_delete_item(&mapping->page_tree, index, radswap); in shmem_free_swap()
353 spin_unlock_irq(&mapping->tree_lock); in shmem_free_swap()
363 void shmem_unlock_mapping(struct address_space *mapping) in shmem_unlock_mapping() argument
373 while (!mapping_unevictable(mapping)) { in shmem_unlock_mapping()
378 pvec.nr = find_get_entries(mapping, index, in shmem_unlock_mapping()
397 struct address_space *mapping = inode->i_mapping; in shmem_undo_range() local
415 pvec.nr = find_get_entries(mapping, index, in shmem_undo_range()
430 nr_swaps_freed += !shmem_free_swap(mapping, in shmem_undo_range()
438 if (page->mapping == mapping) { in shmem_undo_range()
440 truncate_inode_page(mapping, page); in shmem_undo_range()
483 pvec.nr = find_get_entries(mapping, index, in shmem_undo_range()
504 if (shmem_free_swap(mapping, index, page)) { in shmem_undo_range()
515 if (page->mapping == mapping) { in shmem_undo_range()
517 truncate_inode_page(mapping, page); in shmem_undo_range()
615 struct address_space *mapping = info->vfs_inode.i_mapping; in shmem_unuse_inode() local
622 index = radix_tree_locate_item(&mapping->page_tree, radswap); in shmem_unuse_inode()
635 gfp = mapping_gfp_mask(mapping); in shmem_unuse_inode()
668 error = shmem_add_to_page_cache(*pagep, mapping, index, in shmem_unuse_inode()
747 struct address_space *mapping; in shmem_writepage() local
753 mapping = page->mapping; in shmem_writepage()
755 inode = mapping->host; in shmem_writepage()
1035 struct address_space *mapping = inode->i_mapping; in shmem_getpage_gfp() local
1049 page = find_lock_entry(mapping, index); in shmem_getpage_gfp()
1101 !shmem_confirm_swap(mapping, index, swap)) { in shmem_getpage_gfp()
1119 error = shmem_add_to_page_cache(page, mapping, index, in shmem_getpage_gfp()
1185 error = shmem_add_to_page_cache(page, mapping, index, in shmem_getpage_gfp()
1254 !shmem_confirm_swap(mapping, index, swap)) in shmem_getpage_gfp()
1456 bool shmem_mapping(struct address_space *mapping) in shmem_mapping() argument
1458 if (!mapping->host) in shmem_mapping()
1461 return mapping->host->i_sb->s_op == &shmem_ops; in shmem_mapping()
1475 shmem_write_begin(struct file *file, struct address_space *mapping, in shmem_write_begin() argument
1479 struct inode *inode = mapping->host; in shmem_write_begin()
1495 shmem_write_end(struct file *file, struct address_space *mapping, in shmem_write_end() argument
1499 struct inode *inode = mapping->host; in shmem_write_end()
1523 struct address_space *mapping = inode->i_mapping; in shmem_file_read_iter() local
1589 if (mapping_writably_mapped(mapping)) in shmem_file_read_iter()
1630 struct address_space *mapping = in->f_mapping; in shmem_file_splice_read() local
1631 struct inode *inode = mapping->host; in shmem_file_splice_read()
1664 spd.nr_pages = find_get_pages_contig(mapping, index, in shmem_file_splice_read()
1691 if (!PageUptodate(page) || page->mapping != mapping) { in shmem_file_splice_read()
1743 static pgoff_t shmem_seek_hole_data(struct address_space *mapping, in shmem_seek_hole_data() argument
1755 pvec.nr = find_get_entries(mapping, index, in shmem_seek_hole_data()
1792 struct address_space *mapping = file->f_mapping; in shmem_file_llseek() local
1793 struct inode *inode = mapping->host; in shmem_file_llseek()
1810 new_offset = shmem_seek_hole_data(mapping, start, end, whence); in shmem_file_llseek()
1835 static void shmem_tag_pins(struct address_space *mapping) in shmem_tag_pins() argument
1847 radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) { in shmem_tag_pins()
1853 spin_lock_irq(&mapping->tree_lock); in shmem_tag_pins()
1854 radix_tree_tag_set(&mapping->page_tree, iter.index, in shmem_tag_pins()
1856 spin_unlock_irq(&mapping->tree_lock); in shmem_tag_pins()
1877 static int shmem_wait_for_pins(struct address_space *mapping) in shmem_wait_for_pins() argument
1885 shmem_tag_pins(mapping); in shmem_wait_for_pins()
1889 if (!radix_tree_tagged(&mapping->page_tree, SHMEM_TAG_PINNED)) in shmem_wait_for_pins()
1900 radix_tree_for_each_tagged(slot, &mapping->page_tree, &iter, in shmem_wait_for_pins()
1924 spin_lock_irq(&mapping->tree_lock); in shmem_wait_for_pins()
1925 radix_tree_tag_clear(&mapping->page_tree, in shmem_wait_for_pins()
1927 spin_unlock_irq(&mapping->tree_lock); in shmem_wait_for_pins()
2065 struct address_space *mapping = file->f_mapping; in shmem_fallocate() local
2084 unmap_mapping_range(mapping, unmap_start, in shmem_fallocate()
3288 void shmem_unlock_mapping(struct address_space *mapping) in shmem_unlock_mapping() argument
3436 struct page *shmem_read_mapping_page_gfp(struct address_space *mapping, in shmem_read_mapping_page_gfp() argument
3440 struct inode *inode = mapping->host; in shmem_read_mapping_page_gfp()
3444 BUG_ON(mapping->a_ops != &shmem_aops); in shmem_read_mapping_page_gfp()
3455 return read_cache_page_gfp(mapping, index, gfp); in shmem_read_mapping_page_gfp()