ip->i_mapping->a_ops = &jfs_aops; 
ip->i_mapping->a_ops = &jfs_metapage_aops; 
struct inode *diReadSpecial(struct super_block *sb, ino_t inum, int secondary){	struct jfs_sb_info *sbi = JFS_SBI(sb);	uint address;	struct dinode *dp;	struct inode *ip;	struct metapage *mp;	ip = new_inode(sb);	if (ip == NULL) {		jfs_err("diReadSpecial: new_inode returned NULL!");		return ip;	}	if (secondary) {		address = addressPXD(&sbi->ait2) >> sbi->l2nbperpage;		JFS_IP(ip)->ipimap = sbi->ipaimap2;	} else {		address = AITBL_OFF >> L2PSIZE;		JFS_IP(ip)->ipimap = sbi->ipaimap;	}	ASSERT(inum < INOSPEREXT);	ip->i_ino = inum;	address += inum >> 3;	/* 8 inodes per 4K page */	/* read the page of fixed disk inode (AIT) in raw mode */	mp = read_metapage(ip, address << sbi->l2nbperpage, PSIZE, 1);	if (mp == NULL) {		ip->i_nlink = 1;	/* Don't want iput() deleting it */		iput(ip);		return (NULL);	}	/* get the pointer to the disk inode of interest */	dp = (struct dinode *) (mp->data);	dp += inum % 8;		/* 8 inodes per 4K page */	/* copy on-disk inode to in-memory inode */	if ((copy_from_dinode(dp, ip)) != 0) {		/* handle bad return by returning NULL for ip */		ip->i_nlink = 1;	/* Don't want iput() deleting it */		iput(ip);		/* release the page */		release_metapage(mp);		return (NULL);	}	ip->i_mapping->a_ops = &jfs_aops;	mapping_set_gfp_mask(ip->i_mapping, GFP_NOFS);	/* Allocations to metadata inodes should not affect quotas */	ip->i_flags |= S_NOQUOTA;	if ((inum == FILESYSTEM_I) && (JFS_IP(ip)->ipimap == sbi->ipaimap)) {		sbi->gengen = le32_to_cpu(dp->di_gengen);		sbi->inostamp = le32_to_cpu(dp->di_inostamp);	}	/* release the page */	release_metapage(mp);	return (ip);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7fab479bebb96b1b4888bdae9b42e1fa9c5d3f38/jfs_imap.c/buggy/fs/jfs/jfs_imap.c