diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 | 
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2006-03-23 23:44:19 -0500 | 
| commit | 1ebbe2b20091d306453a5cf480a87e6cd28ae76f (patch) | |
| tree | f5cd7a0fa69b8b1938cb5a0faed2e7b0628072a5 /fs/xfs/linux-2.6/xfs_file.c | |
| parent | ac58c9059da8886b5e8cde012a80266b18ca146e (diff) | |
| parent | 674a396c6d2ba0341ebdd7c1c9950f32f018e2dd (diff) | |
Merge branch 'linus'
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_file.c')
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_file.c | 187 | 
1 files changed, 94 insertions, 93 deletions
| diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index ced4404339c..185567a6a56 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c @@ -43,13 +43,13 @@  #include <linux/dcache.h>  #include <linux/smp_lock.h> -static struct vm_operations_struct linvfs_file_vm_ops; +static struct vm_operations_struct xfs_file_vm_ops;  #ifdef CONFIG_XFS_DMAPI -static struct vm_operations_struct linvfs_dmapi_file_vm_ops; +static struct vm_operations_struct xfs_dmapi_file_vm_ops;  #endif  STATIC inline ssize_t -__linvfs_read( +__xfs_file_read(  	struct kiocb		*iocb,  	char			__user *buf,  	int			ioflags, @@ -58,7 +58,7 @@ __linvfs_read(  {  	struct iovec		iov = {buf, count};  	struct file		*file = iocb->ki_filp; -	vnode_t			*vp = LINVFS_GET_VP(file->f_dentry->d_inode); +	vnode_t			*vp = vn_from_inode(file->f_dentry->d_inode);  	ssize_t			rval;  	BUG_ON(iocb->ki_pos != pos); @@ -71,28 +71,28 @@ __linvfs_read(  STATIC ssize_t -linvfs_aio_read( +xfs_file_aio_read(  	struct kiocb		*iocb,  	char			__user *buf,  	size_t			count,  	loff_t			pos)  { -	return __linvfs_read(iocb, buf, IO_ISAIO, count, pos); +	return __xfs_file_read(iocb, buf, IO_ISAIO, count, pos);  }  STATIC ssize_t -linvfs_aio_read_invis( +xfs_file_aio_read_invis(  	struct kiocb		*iocb,  	char			__user *buf,  	size_t			count,  	loff_t			pos)  { -	return __linvfs_read(iocb, buf, IO_ISAIO|IO_INVIS, count, pos); +	return __xfs_file_read(iocb, buf, IO_ISAIO|IO_INVIS, count, pos);  }  STATIC inline ssize_t -__linvfs_write( +__xfs_file_write(  	struct kiocb	*iocb,  	const char	__user *buf,  	int		ioflags, @@ -102,7 +102,7 @@ __linvfs_write(  	struct iovec	iov = {(void __user *)buf, count};  	struct file	*file = iocb->ki_filp;  	struct inode	*inode = file->f_mapping->host; -	vnode_t		*vp = LINVFS_GET_VP(inode); +	vnode_t		*vp = vn_from_inode(inode);  	ssize_t		rval;  	BUG_ON(iocb->ki_pos != pos); @@ -115,28 +115,28 @@ __linvfs_write(  STATIC ssize_t -linvfs_aio_write( +xfs_file_aio_write(  	struct kiocb		*iocb,  	const char		__user *buf,  	size_t			count,  	loff_t			pos)  { -	return __linvfs_write(iocb, buf, IO_ISAIO, count, pos); +	return __xfs_file_write(iocb, buf, IO_ISAIO, count, pos);  }  STATIC ssize_t -linvfs_aio_write_invis( +xfs_file_aio_write_invis(  	struct kiocb		*iocb,  	const char		__user *buf,  	size_t			count,  	loff_t			pos)  { -	return __linvfs_write(iocb, buf, IO_ISAIO|IO_INVIS, count, pos); +	return __xfs_file_write(iocb, buf, IO_ISAIO|IO_INVIS, count, pos);  }  STATIC inline ssize_t -__linvfs_readv( +__xfs_file_readv(  	struct file		*file,  	const struct iovec 	*iov,  	int			ioflags, @@ -144,8 +144,8 @@ __linvfs_readv(  	loff_t			*ppos)  {  	struct inode	*inode = file->f_mapping->host; -	vnode_t		*vp = LINVFS_GET_VP(inode); -	struct		kiocb kiocb; +	vnode_t		*vp = vn_from_inode(inode); +	struct kiocb	kiocb;  	ssize_t		rval;  	init_sync_kiocb(&kiocb, file); @@ -160,28 +160,28 @@ __linvfs_readv(  }  STATIC ssize_t -linvfs_readv( +xfs_file_readv(  	struct file		*file,  	const struct iovec 	*iov,  	unsigned long		nr_segs,  	loff_t			*ppos)  { -	return __linvfs_readv(file, iov, 0, nr_segs, ppos); +	return __xfs_file_readv(file, iov, 0, nr_segs, ppos);  }  STATIC ssize_t -linvfs_readv_invis( +xfs_file_readv_invis(  	struct file		*file,  	const struct iovec 	*iov,  	unsigned long		nr_segs,  	loff_t			*ppos)  { -	return __linvfs_readv(file, iov, IO_INVIS, nr_segs, ppos); +	return __xfs_file_readv(file, iov, IO_INVIS, nr_segs, ppos);  }  STATIC inline ssize_t -__linvfs_writev( +__xfs_file_writev(  	struct file		*file,  	const struct iovec 	*iov,  	int			ioflags, @@ -189,8 +189,8 @@ __linvfs_writev(  	loff_t			*ppos)  {  	struct inode	*inode = file->f_mapping->host; -	vnode_t		*vp = LINVFS_GET_VP(inode); -	struct		kiocb kiocb; +	vnode_t		*vp = vn_from_inode(inode); +	struct kiocb	kiocb;  	ssize_t		rval;  	init_sync_kiocb(&kiocb, file); @@ -206,34 +206,34 @@ __linvfs_writev(  STATIC ssize_t -linvfs_writev( +xfs_file_writev(  	struct file		*file,  	const struct iovec 	*iov,  	unsigned long		nr_segs,  	loff_t			*ppos)  { -	return __linvfs_writev(file, iov, 0, nr_segs, ppos); +	return __xfs_file_writev(file, iov, 0, nr_segs, ppos);  }  STATIC ssize_t -linvfs_writev_invis( +xfs_file_writev_invis(  	struct file		*file,  	const struct iovec 	*iov,  	unsigned long		nr_segs,  	loff_t			*ppos)  { -	return __linvfs_writev(file, iov, IO_INVIS, nr_segs, ppos); +	return __xfs_file_writev(file, iov, IO_INVIS, nr_segs, ppos);  }  STATIC ssize_t -linvfs_sendfile( +xfs_file_sendfile(  	struct file		*filp,  	loff_t			*ppos,  	size_t			count,  	read_actor_t		actor,  	void			*target)  { -	vnode_t			*vp = LINVFS_GET_VP(filp->f_dentry->d_inode); +	vnode_t			*vp = vn_from_inode(filp->f_dentry->d_inode);  	ssize_t			rval;  	VOP_SENDFILE(vp, filp, ppos, 0, count, actor, target, NULL, rval); @@ -242,11 +242,11 @@ linvfs_sendfile(  STATIC int -linvfs_open( +xfs_file_open(  	struct inode	*inode,  	struct file	*filp)  { -	vnode_t		*vp = LINVFS_GET_VP(inode); +	vnode_t		*vp = vn_from_inode(inode);  	int		error;  	if (!(filp->f_flags & O_LARGEFILE) && i_size_read(inode) > MAX_NON_LFS) @@ -259,11 +259,11 @@ linvfs_open(  STATIC int -linvfs_release( +xfs_file_release(  	struct inode	*inode,  	struct file	*filp)  { -	vnode_t		*vp = LINVFS_GET_VP(inode); +	vnode_t		*vp = vn_from_inode(inode);  	int		error = 0;  	if (vp) @@ -273,13 +273,13 @@ linvfs_release(  STATIC int -linvfs_fsync( +xfs_file_fsync(  	struct file	*filp,  	struct dentry	*dentry,  	int		datasync)  {  	struct inode	*inode = dentry->d_inode; -	vnode_t		*vp = LINVFS_GET_VP(inode); +	vnode_t		*vp = vn_from_inode(inode);  	int		error;  	int		flags = FSYNC_WAIT; @@ -292,7 +292,7 @@ linvfs_fsync(  }  /* - * linvfs_readdir maps to VOP_READDIR(). + * xfs_file_readdir maps to VOP_READDIR().   * We need to build a uio, cred, ...   */ @@ -301,13 +301,13 @@ linvfs_fsync(  #ifdef CONFIG_XFS_DMAPI  STATIC struct page * -linvfs_filemap_nopage( +xfs_vm_nopage(  	struct vm_area_struct	*area,  	unsigned long		address,  	int			*type)  {  	struct inode	*inode = area->vm_file->f_dentry->d_inode; -	vnode_t		*vp = LINVFS_GET_VP(inode); +	vnode_t		*vp = vn_from_inode(inode);  	xfs_mount_t	*mp = XFS_VFSTOM(vp->v_vfsp);  	int		error; @@ -324,7 +324,7 @@ linvfs_filemap_nopage(  STATIC int -linvfs_readdir( +xfs_file_readdir(  	struct file	*filp,  	void		*dirent,  	filldir_t	filldir) @@ -340,7 +340,7 @@ linvfs_readdir(  	xfs_off_t	start_offset, curr_offset;  	xfs_dirent_t	*dbp = NULL; -	vp = LINVFS_GET_VP(filp->f_dentry->d_inode); +	vp = vn_from_inode(filp->f_dentry->d_inode);  	ASSERT(vp);  	/* Try fairly hard to get memory */ @@ -404,39 +404,40 @@ done:  STATIC int -linvfs_file_mmap( +xfs_file_mmap(  	struct file	*filp,  	struct vm_area_struct *vma)  {  	struct inode	*ip = filp->f_dentry->d_inode; -	vnode_t		*vp = LINVFS_GET_VP(ip); -	vattr_t		va = { .va_mask = XFS_AT_UPDATIME }; +	vnode_t		*vp = vn_from_inode(ip); +	vattr_t		vattr;  	int		error; -	vma->vm_ops = &linvfs_file_vm_ops; +	vma->vm_ops = &xfs_file_vm_ops;  #ifdef CONFIG_XFS_DMAPI  	if (vp->v_vfsp->vfs_flag & VFS_DMI) { -		vma->vm_ops = &linvfs_dmapi_file_vm_ops; +		vma->vm_ops = &xfs_dmapi_file_vm_ops;  	}  #endif /* CONFIG_XFS_DMAPI */ -	VOP_SETATTR(vp, &va, XFS_AT_UPDATIME, NULL, error); -	if (!error) -		vn_revalidate(vp);	/* update Linux inode flags */ +	vattr.va_mask = XFS_AT_UPDATIME; +	VOP_SETATTR(vp, &vattr, XFS_AT_UPDATIME, NULL, error); +	if (likely(!error)) +		__vn_revalidate(vp, &vattr);	/* update flags */  	return 0;  }  STATIC long -linvfs_ioctl( +xfs_file_ioctl(  	struct file	*filp,  	unsigned int	cmd,  	unsigned long	arg)  {  	int		error; -	struct inode *inode = filp->f_dentry->d_inode; -	vnode_t		*vp = LINVFS_GET_VP(inode); +	struct inode	*inode = filp->f_dentry->d_inode; +	vnode_t		*vp = vn_from_inode(inode);  	VOP_IOCTL(vp, inode, filp, 0, cmd, (void __user *)arg, error);  	VMODIFY(vp); @@ -451,14 +452,14 @@ linvfs_ioctl(  }  STATIC long -linvfs_ioctl_invis( +xfs_file_ioctl_invis(  	struct file	*filp,  	unsigned int	cmd,  	unsigned long	arg)  {  	int		error; -	struct inode *inode = filp->f_dentry->d_inode; -	vnode_t		*vp = LINVFS_GET_VP(inode); +	struct inode	*inode = filp->f_dentry->d_inode; +	vnode_t		*vp = vn_from_inode(inode);  	ASSERT(vp);  	VOP_IOCTL(vp, inode, filp, IO_INVIS, cmd, (void __user *)arg, error); @@ -476,11 +477,11 @@ linvfs_ioctl_invis(  #ifdef CONFIG_XFS_DMAPI  #ifdef HAVE_VMOP_MPROTECT  STATIC int -linvfs_mprotect( +xfs_vm_mprotect(  	struct vm_area_struct *vma,  	unsigned int	newflags)  { -	vnode_t		*vp = LINVFS_GET_VP(vma->vm_file->f_dentry->d_inode); +	vnode_t		*vp = vn_from_inode(vma->vm_file->f_dentry->d_inode);  	int		error = 0;  	if (vp->v_vfsp->vfs_flag & VFS_DMI) { @@ -503,10 +504,10 @@ linvfs_mprotect(   * it back online.   */  STATIC int -linvfs_open_exec( +xfs_file_open_exec(  	struct inode	*inode)  { -	vnode_t		*vp = LINVFS_GET_VP(inode); +	vnode_t		*vp = vn_from_inode(inode);  	xfs_mount_t	*mp = XFS_VFSTOM(vp->v_vfsp);  	int		error = 0;  	xfs_inode_t	*ip; @@ -527,69 +528,69 @@ open_exec_out:  }  #endif /* HAVE_FOP_OPEN_EXEC */ -struct file_operations linvfs_file_operations = { +struct file_operations xfs_file_operations = {  	.llseek		= generic_file_llseek,  	.read		= do_sync_read,  	.write		= do_sync_write, -	.readv		= linvfs_readv, -	.writev		= linvfs_writev, -	.aio_read	= linvfs_aio_read, -	.aio_write	= linvfs_aio_write, -	.sendfile	= linvfs_sendfile, -	.unlocked_ioctl	= linvfs_ioctl, +	.readv		= xfs_file_readv, +	.writev		= xfs_file_writev, +	.aio_read	= xfs_file_aio_read, +	.aio_write	= xfs_file_aio_write, +	.sendfile	= xfs_file_sendfile, +	.unlocked_ioctl	= xfs_file_ioctl,  #ifdef CONFIG_COMPAT -	.compat_ioctl	= linvfs_compat_ioctl, +	.compat_ioctl	= xfs_file_compat_ioctl,  #endif -	.mmap		= linvfs_file_mmap, -	.open		= linvfs_open, -	.release	= linvfs_release, -	.fsync		= linvfs_fsync, +	.mmap		= xfs_file_mmap, +	.open		= xfs_file_open, +	.release	= xfs_file_release, +	.fsync		= xfs_file_fsync,  #ifdef HAVE_FOP_OPEN_EXEC -	.open_exec	= linvfs_open_exec, +	.open_exec	= xfs_file_open_exec,  #endif  }; -struct file_operations linvfs_invis_file_operations = { +struct file_operations xfs_invis_file_operations = {  	.llseek		= generic_file_llseek,  	.read		= do_sync_read,  	.write		= do_sync_write, -	.readv		= linvfs_readv_invis, -	.writev		= linvfs_writev_invis, -	.aio_read	= linvfs_aio_read_invis, -	.aio_write	= linvfs_aio_write_invis, -	.sendfile	= linvfs_sendfile, -	.unlocked_ioctl	= linvfs_ioctl_invis, +	.readv		= xfs_file_readv_invis, +	.writev		= xfs_file_writev_invis, +	.aio_read	= xfs_file_aio_read_invis, +	.aio_write	= xfs_file_aio_write_invis, +	.sendfile	= xfs_file_sendfile, +	.unlocked_ioctl	= xfs_file_ioctl_invis,  #ifdef CONFIG_COMPAT -	.compat_ioctl	= linvfs_compat_invis_ioctl, +	.compat_ioctl	= xfs_file_compat_invis_ioctl,  #endif -	.mmap		= linvfs_file_mmap, -	.open		= linvfs_open, -	.release	= linvfs_release, -	.fsync		= linvfs_fsync, +	.mmap		= xfs_file_mmap, +	.open		= xfs_file_open, +	.release	= xfs_file_release, +	.fsync		= xfs_file_fsync,  }; -struct file_operations linvfs_dir_operations = { +struct file_operations xfs_dir_file_operations = {  	.read		= generic_read_dir, -	.readdir	= linvfs_readdir, -	.unlocked_ioctl	= linvfs_ioctl, +	.readdir	= xfs_file_readdir, +	.unlocked_ioctl	= xfs_file_ioctl,  #ifdef CONFIG_COMPAT -	.compat_ioctl	= linvfs_compat_ioctl, +	.compat_ioctl	= xfs_file_compat_ioctl,  #endif -	.fsync		= linvfs_fsync, +	.fsync		= xfs_file_fsync,  }; -static struct vm_operations_struct linvfs_file_vm_ops = { +static struct vm_operations_struct xfs_file_vm_ops = {  	.nopage		= filemap_nopage,  	.populate	= filemap_populate,  };  #ifdef CONFIG_XFS_DMAPI -static struct vm_operations_struct linvfs_dmapi_file_vm_ops = { -	.nopage		= linvfs_filemap_nopage, +static struct vm_operations_struct xfs_dmapi_file_vm_ops = { +	.nopage		= xfs_vm_nopage,  	.populate	= filemap_populate,  #ifdef HAVE_VMOP_MPROTECT -	.mprotect	= linvfs_mprotect, +	.mprotect	= xfs_vm_mprotect,  #endif  };  #endif /* CONFIG_XFS_DMAPI */ | 
