dnotify_parent(file->f_dentry, DN_ACCESS); 
fsnotify_access(file->f_dentry); 
nfsd_vfs_read(struct svc_rqst *rqstp, struct svc_fh *fhp, struct file *file,              loff_t offset, struct kvec *vec, int vlen, unsigned long *count){	struct inode *inode;	struct raparms	*ra;	mm_segment_t	oldfs;	int		err;	err = nfserr_perm;	inode = file->f_dentry->d_inode;#ifdef MSNFS	if ((fhp->fh_export->ex_flags & NFSEXP_MSNFS) &&		(!lock_may_read(inode, offset, *count)))		goto out;#endif	/* Get readahead parameters */	ra = nfsd_get_raparms(inode->i_sb->s_dev, inode->i_ino);	if (ra && ra->p_set)		file->f_ra = ra->p_ra;	if (file->f_op->sendfile) {		svc_pushback_unused_pages(rqstp);		err = file->f_op->sendfile(file, &offset, *count,						 nfsd_read_actor, rqstp);	} else {		oldfs = get_fs();		set_fs(KERNEL_DS);		err = vfs_readv(file, (struct iovec __user *)vec, vlen, &offset);		set_fs(oldfs);	}	/* Write back readahead params */	if (ra) {		spin_lock(&ra_lock);		ra->p_ra = file->f_ra;		ra->p_set = 1;		ra->p_count--;		spin_unlock(&ra_lock);	}	if (err >= 0) {		nfsdstats.io_read += err;		*count = err;		err = 0;		dnotify_parent(file->f_dentry, DN_ACCESS);	} else 		err = nfserrno(err);out:	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/0eeca28300df110bd6ed54b31193c83b87921443/vfs.c/buggy/fs/nfsd/vfs.c