down_write(&inode->i_alloc_sem);
unmap_mapping_range(mapping, offset, (end - offset), 1);
truncate_inode_pages_range(mapping, offset, end);
inode->i_op->truncate_range(inode, offset, end);
up_write(&inode->i_alloc_sem);
down_write(&inode->i_alloc_sem);
unmap_mapping_range(mapping, offset, (end - offset), 1);
truncate_inode_pages_range(mapping, offset, end);
inode->i_op->truncate_range(inode, offset, end);
up_write(&inode->i_alloc_sem);
page = lookup_swap_cache(entry);
if (!page) {
swapin_readahead(entry, address, vma);
page = lookup_swap_cache(entry);
if (!page) {
swapin_readahead(entry, address, vma);
goto release;
inc_mm_counter(mm, anon_rss);
lru_cache_add_active(page);
goto release;
inc_mm_counter(mm, anon_rss);
lru_cache_add_active(page);
page_add_new_anon_rmap(page, vma, address);
} else {
/* Map the ZERO_PAGE - vm_page_prot is readonly */
page_add_new_anon_rmap(page, vma, address);
} else {
/* Map the ZERO_PAGE - vm_page_prot is readonly */
return handle_pte_fault(mm, vma, address, pte, pmd, write_access);
}
return handle_pte_fault(mm, vma, address, pte, pmd, write_access);
}