Lines Matching refs:mapping
255 static int shmem_radix_tree_replace(struct address_space *mapping, in shmem_radix_tree_replace() argument
263 pslot = radix_tree_lookup_slot(&mapping->page_tree, index); in shmem_radix_tree_replace()
266 item = radix_tree_deref_slot_protected(pslot, &mapping->tree_lock); in shmem_radix_tree_replace()
280 static bool shmem_confirm_swap(struct address_space *mapping, in shmem_confirm_swap() argument
286 item = radix_tree_lookup(&mapping->page_tree, index); in shmem_confirm_swap()
295 struct address_space *mapping, in shmem_add_to_page_cache() argument
304 page->mapping = mapping; in shmem_add_to_page_cache()
307 spin_lock_irq(&mapping->tree_lock); in shmem_add_to_page_cache()
309 error = radix_tree_insert(&mapping->page_tree, index, page); in shmem_add_to_page_cache()
311 error = shmem_radix_tree_replace(mapping, index, expected, in shmem_add_to_page_cache()
314 mapping->nrpages++; in shmem_add_to_page_cache()
317 spin_unlock_irq(&mapping->tree_lock); in shmem_add_to_page_cache()
319 page->mapping = NULL; in shmem_add_to_page_cache()
320 spin_unlock_irq(&mapping->tree_lock); in shmem_add_to_page_cache()
331 struct address_space *mapping = page->mapping; in shmem_delete_from_page_cache() local
334 spin_lock_irq(&mapping->tree_lock); in shmem_delete_from_page_cache()
335 error = shmem_radix_tree_replace(mapping, page->index, page, radswap); in shmem_delete_from_page_cache()
336 page->mapping = NULL; in shmem_delete_from_page_cache()
337 mapping->nrpages--; in shmem_delete_from_page_cache()
340 spin_unlock_irq(&mapping->tree_lock); in shmem_delete_from_page_cache()
348 static int shmem_free_swap(struct address_space *mapping, in shmem_free_swap() argument
353 spin_lock_irq(&mapping->tree_lock); in shmem_free_swap()
354 old = radix_tree_delete_item(&mapping->page_tree, index, radswap); in shmem_free_swap()
355 spin_unlock_irq(&mapping->tree_lock); in shmem_free_swap()
365 void shmem_unlock_mapping(struct address_space *mapping) in shmem_unlock_mapping() argument
375 while (!mapping_unevictable(mapping)) { in shmem_unlock_mapping()
380 pvec.nr = find_get_entries(mapping, index, in shmem_unlock_mapping()
399 struct address_space *mapping = inode->i_mapping; in shmem_undo_range() local
417 pvec.nr = find_get_entries(mapping, index, in shmem_undo_range()
432 nr_swaps_freed += !shmem_free_swap(mapping, in shmem_undo_range()
440 if (page->mapping == mapping) { in shmem_undo_range()
442 truncate_inode_page(mapping, page); in shmem_undo_range()
485 pvec.nr = find_get_entries(mapping, index, in shmem_undo_range()
506 if (shmem_free_swap(mapping, index, page)) { in shmem_undo_range()
517 if (page->mapping == mapping) { in shmem_undo_range()
519 truncate_inode_page(mapping, page); in shmem_undo_range()
637 struct address_space *mapping = info->vfs_inode.i_mapping; in shmem_unuse_inode() local
644 index = radix_tree_locate_item(&mapping->page_tree, radswap); in shmem_unuse_inode()
657 gfp = mapping_gfp_mask(mapping); in shmem_unuse_inode()
690 error = shmem_add_to_page_cache(*pagep, mapping, index, in shmem_unuse_inode()
769 struct address_space *mapping; in shmem_writepage() local
775 mapping = page->mapping; in shmem_writepage()
777 inode = mapping->host; in shmem_writepage()
1057 struct address_space *mapping = inode->i_mapping; in shmem_getpage_gfp() local
1071 page = find_lock_entry(mapping, index); in shmem_getpage_gfp()
1123 !shmem_confirm_swap(mapping, index, swap)) { in shmem_getpage_gfp()
1141 error = shmem_add_to_page_cache(page, mapping, index, in shmem_getpage_gfp()
1207 error = shmem_add_to_page_cache(page, mapping, index, in shmem_getpage_gfp()
1270 if (swap.val && !shmem_confirm_swap(mapping, index, swap)) in shmem_getpage_gfp()
1472 bool shmem_mapping(struct address_space *mapping) in shmem_mapping() argument
1474 if (!mapping->host) in shmem_mapping()
1477 return mapping->host->i_sb->s_op == &shmem_ops; in shmem_mapping()
1491 shmem_write_begin(struct file *file, struct address_space *mapping, in shmem_write_begin() argument
1495 struct inode *inode = mapping->host; in shmem_write_begin()
1511 shmem_write_end(struct file *file, struct address_space *mapping, in shmem_write_end() argument
1515 struct inode *inode = mapping->host; in shmem_write_end()
1539 struct address_space *mapping = inode->i_mapping; in shmem_file_read_iter() local
1605 if (mapping_writably_mapped(mapping)) in shmem_file_read_iter()
1646 struct address_space *mapping = in->f_mapping; in shmem_file_splice_read() local
1647 struct inode *inode = mapping->host; in shmem_file_splice_read()
1680 spd.nr_pages = find_get_pages_contig(mapping, index, in shmem_file_splice_read()
1707 if (!PageUptodate(page) || page->mapping != mapping) { in shmem_file_splice_read()
1759 static pgoff_t shmem_seek_hole_data(struct address_space *mapping, in shmem_seek_hole_data() argument
1771 pvec.nr = find_get_entries(mapping, index, in shmem_seek_hole_data()
1808 struct address_space *mapping = file->f_mapping; in shmem_file_llseek() local
1809 struct inode *inode = mapping->host; in shmem_file_llseek()
1826 new_offset = shmem_seek_hole_data(mapping, start, end, whence); in shmem_file_llseek()
1851 static void shmem_tag_pins(struct address_space *mapping) in shmem_tag_pins() argument
1863 radix_tree_for_each_slot(slot, &mapping->page_tree, &iter, start) { in shmem_tag_pins()
1869 spin_lock_irq(&mapping->tree_lock); in shmem_tag_pins()
1870 radix_tree_tag_set(&mapping->page_tree, iter.index, in shmem_tag_pins()
1872 spin_unlock_irq(&mapping->tree_lock); in shmem_tag_pins()
1893 static int shmem_wait_for_pins(struct address_space *mapping) in shmem_wait_for_pins() argument
1901 shmem_tag_pins(mapping); in shmem_wait_for_pins()
1905 if (!radix_tree_tagged(&mapping->page_tree, SHMEM_TAG_PINNED)) in shmem_wait_for_pins()
1916 radix_tree_for_each_tagged(slot, &mapping->page_tree, &iter, in shmem_wait_for_pins()
1940 spin_lock_irq(&mapping->tree_lock); in shmem_wait_for_pins()
1941 radix_tree_tag_clear(&mapping->page_tree, in shmem_wait_for_pins()
1943 spin_unlock_irq(&mapping->tree_lock); in shmem_wait_for_pins()
2081 struct address_space *mapping = file->f_mapping; in shmem_fallocate() local
2100 unmap_mapping_range(mapping, unmap_start, in shmem_fallocate()
3299 void shmem_unlock_mapping(struct address_space *mapping) in shmem_unlock_mapping() argument
3447 struct page *shmem_read_mapping_page_gfp(struct address_space *mapping, in shmem_read_mapping_page_gfp() argument
3451 struct inode *inode = mapping->host; in shmem_read_mapping_page_gfp()
3455 BUG_ON(mapping->a_ops != &shmem_aops); in shmem_read_mapping_page_gfp()
3466 return read_cache_page_gfp(mapping, index, gfp); in shmem_read_mapping_page_gfp()