} else BUG_ON(!PageUptodate(page)); 
} 
xip_truncate_page(struct address_space *mapping, loff_t from){	pgoff_t index = from >> PAGE_CACHE_SHIFT;	unsigned offset = from & (PAGE_CACHE_SIZE-1);	unsigned blocksize;	unsigned length;	struct page *page;	void *kaddr;	BUG_ON(!mapping->a_ops->get_xip_page);	blocksize = 1 << mapping->host->i_blkbits;	length = offset & (blocksize - 1);	/* Block boundary? Nothing to do */	if (!length)		return 0;	length = blocksize - length;	page = mapping->a_ops->get_xip_page(mapping,					    index*(PAGE_SIZE/512), 0);	if (!page)		return -ENOMEM;	if (unlikely(IS_ERR(page))) {		if (PTR_ERR(page) == -ENODATA)			/* Hole? No need to truncate */			return 0;		else			return PTR_ERR(page);	} else		BUG_ON(!PageUptodate(page));	kaddr = kmap_atomic(page, KM_USER0);	memset(kaddr + offset, 0, length);	kunmap_atomic(kaddr, KM_USER0);	flush_dcache_page(page);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/afa597ba20e9ef55fc6283c1a564854b1c9f13c0/filemap_xip.c/clean/mm/filemap_xip.c