NFS_FLAGS(inode) |= NFS_INO_ADVISE_RDPLUS; 
set_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode)); 
nfs_fhget(struct super_block *sb, struct nfs_fh *fh, struct nfs_fattr *fattr){	struct nfs_find_desc desc = {		.fh	= fh,		.fattr	= fattr	};	struct inode *inode = NULL;	unsigned long hash;	if ((fattr->valid & NFS_ATTR_FATTR) == 0)		goto out_no_inode;	if (!fattr->nlink) {		printk("NFS: Buggy server - nlink == 0!\n");		goto out_no_inode;	}	hash = nfs_fattr_to_ino_t(fattr);	if (!(inode = iget5_locked(sb, hash, nfs_find_actor, nfs_init_locked, &desc)))		goto out_no_inode;	if (inode->i_state & I_NEW) {		struct nfs_inode *nfsi = NFS_I(inode);		/* We set i_ino for the few things that still rely on it,		 * such as stat(2) */		inode->i_ino = hash;		/* We can't support update_atime(), since the server will reset it */		inode->i_flags |= S_NOATIME|S_NOCMTIME;		inode->i_mode = fattr->mode;		/* Why so? Because we want revalidate for devices/FIFOs, and		 * that's precisely what we have in nfs_file_inode_operations.		 */		inode->i_op = NFS_SB(sb)->rpc_ops->file_inode_ops;		if (S_ISREG(inode->i_mode)) {			inode->i_fop = &nfs_file_operations;			inode->i_data.a_ops = &nfs_file_aops;			inode->i_data.backing_dev_info = &NFS_SB(sb)->backing_dev_info;		} else if (S_ISDIR(inode->i_mode)) {			inode->i_op = NFS_SB(sb)->rpc_ops->dir_inode_ops;			inode->i_fop = &nfs_dir_operations;			if (nfs_server_capable(inode, NFS_CAP_READDIRPLUS)			    && fattr->size <= NFS_LIMIT_READDIRPLUS)				NFS_FLAGS(inode) |= NFS_INO_ADVISE_RDPLUS;		} else if (S_ISLNK(inode->i_mode))			inode->i_op = &nfs_symlink_inode_operations;		else			init_special_inode(inode, inode->i_mode, fattr->rdev);		nfsi->read_cache_jiffies = fattr->timestamp;		inode->i_atime = fattr->atime;		inode->i_mtime = fattr->mtime;		inode->i_ctime = fattr->ctime;		if (fattr->valid & NFS_ATTR_FATTR_V4)			nfsi->change_attr = fattr->change_attr;		inode->i_size = nfs_size_to_loff_t(fattr->size);		inode->i_nlink = fattr->nlink;		inode->i_uid = fattr->uid;		inode->i_gid = fattr->gid;		if (fattr->valid & (NFS_ATTR_FATTR_V3 | NFS_ATTR_FATTR_V4)) {			/*			 * report the blocks in 512byte units			 */			inode->i_blocks = nfs_calc_block_size(fattr->du.nfs3.used);			inode->i_blksize = inode->i_sb->s_blocksize;		} else {			inode->i_blocks = fattr->du.nfs2.blocks;			inode->i_blksize = fattr->du.nfs2.blocksize;		}		nfsi->attrtimeo = NFS_MINATTRTIMEO(inode);		nfsi->attrtimeo_timestamp = jiffies;		memset(nfsi->cookieverf, 0, sizeof(nfsi->cookieverf));		nfsi->cache_access.cred = NULL;		unlock_new_inode(inode);	} else		nfs_refresh_inode(inode, fattr);	dprintk("NFS: nfs_fhget(%s/%Ld ct=%d)\n",		inode->i_sb->s_id,		(long long)NFS_FILEID(inode),		atomic_read(&inode->i_count));out:	return inode;out_no_inode:	printk("nfs_fhget: iget failed\n");	goto out;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/412d582ec1dd59aab2353f8cb7e74f2c79cd20b9/inode.c/buggy/fs/nfs/inode.c