__find_get_block_slow(struct block_device *bdev, sector_t block, int unused) 
__find_get_block_slow(struct block_device *bdev, sector_t block) 
__find_get_block_slow(struct block_device *bdev, sector_t block, int unused){	struct inode *bd_inode = bdev->bd_inode;	struct address_space *bd_mapping = bd_inode->i_mapping;	struct buffer_head *ret = NULL;	pgoff_t index;	struct buffer_head *bh;	struct buffer_head *head;	struct page *page;	int all_mapped = 1;	index = block >> (PAGE_CACHE_SHIFT - bd_inode->i_blkbits);	page = find_get_page(bd_mapping, index);	if (!page)		goto out;	spin_lock(&bd_mapping->private_lock);	if (!page_has_buffers(page))		goto out_unlock;	head = page_buffers(page);	bh = head;	do {		if (bh->b_blocknr == block) {			ret = bh;			get_bh(bh);			goto out_unlock;		}		if (!buffer_mapped(bh))			all_mapped = 0;		bh = bh->b_this_page;	} while (bh != head);	/* we might be here because some of the buffers on this page are	 * not mapped.  This is due to various races between	 * file io on the block device and getblk.  It gets dealt with	 * elsewhere, don't buffer_error if we had some unmapped buffers	 */	if (all_mapped) {		printk("__find_get_block_slow() failed. "			"block=%llu, b_blocknr=%llu\n",			(unsigned long long)block, (unsigned long long)bh->b_blocknr);		printk("b_state=0x%08lx, b_size=%u\n", bh->b_state, bh->b_size);		printk("device blocksize: %d\n", 1 << bd_inode->i_blkbits);	}out_unlock:	spin_unlock(&bd_mapping->private_lock);	page_cache_release(page);out:	return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/385fd4c59d8bf7895ad3641c4cea615346f684ed/buffer.c/buggy/fs/buffer.c