Commit 2f6f7b3d authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Tim Shimmin

[XFS] kill v_vfsp member from struct bhv_vnode

We can easily get at the vfsp through the super_block but it will soon be
gone anyway.

SGI-PV: 969608
SGI-Modid: xfs-linux-melb:xfs-kern:29494a
Signed-off-by: default avatarChristoph Hellwig <hch@infradead.org>
Signed-off-by: default avatarDavid Chinner <dgc@sgi.com>
Signed-off-by: default avatarTim Shimmin <tes@sgi.com>
parent 739bfb2a
...@@ -261,7 +261,7 @@ xfs_file_mmap( ...@@ -261,7 +261,7 @@ xfs_file_mmap(
vma->vm_flags |= VM_CAN_NONLINEAR; vma->vm_flags |= VM_CAN_NONLINEAR;
#ifdef CONFIG_XFS_DMAPI #ifdef CONFIG_XFS_DMAPI
if (vn_from_inode(filp->f_path.dentry->d_inode)->v_vfsp->vfs_flag & VFS_DMI) if (vfs_from_sb(filp->f_path.dentry->d_inode->i_sb)->vfs_flag & VFS_DMI)
vma->vm_ops = &xfs_dmapi_file_vm_ops; vma->vm_ops = &xfs_dmapi_file_vm_ops;
#endif /* CONFIG_XFS_DMAPI */ #endif /* CONFIG_XFS_DMAPI */
...@@ -320,16 +320,14 @@ xfs_vm_mprotect( ...@@ -320,16 +320,14 @@ xfs_vm_mprotect(
struct vm_area_struct *vma, struct vm_area_struct *vma,
unsigned int newflags) unsigned int newflags)
{ {
bhv_vnode_t *vp = vn_from_inode(vma->vm_file->f_path.dentry->d_inode); struct inode *inode = vma->vm_file->f_path.dentry->d_inode;
bhv_vfs_t *vfsp = vfs_from_sb(inode->i_sb);
int error = 0; int error = 0;
if (vp->v_vfsp->vfs_flag & VFS_DMI) { if (vfsp->vfs_flag & VFS_DMI) {
if ((vma->vm_flags & VM_MAYSHARE) && if ((vma->vm_flags & VM_MAYSHARE) &&
(newflags & VM_WRITE) && !(vma->vm_flags & VM_WRITE)) { (newflags & VM_WRITE) && !(vma->vm_flags & VM_WRITE))
xfs_mount_t *mp = XFS_VFSTOM(vp->v_vfsp); error = XFS_SEND_MMAP(XFS_VFSTOM(vfsp), vma, VM_WRITE);
error = XFS_SEND_MMAP(mp, vma, VM_WRITE);
}
} }
return error; return error;
} }
...@@ -346,18 +344,17 @@ STATIC int ...@@ -346,18 +344,17 @@ STATIC int
xfs_file_open_exec( xfs_file_open_exec(
struct inode *inode) struct inode *inode)
{ {
bhv_vnode_t *vp = vn_from_inode(inode); bhv_vfs_t *vfsp = vfs_from_sb(inode->i_sb);
if (unlikely(vp->v_vfsp->vfs_flag & VFS_DMI)) { if (unlikely(vfsp->vfs_flag & VFS_DMI)) {
xfs_mount_t *mp = XFS_VFSTOM(vp->v_vfsp); if (DM_EVENT_ENABLED(XFS_I(inode), DM_EVENT_READ)) {
xfs_inode_t *ip = xfs_vtoi(vp); bhv_vnode_t *vp = vn_from_inode(inode);
if (!ip) return -XFS_SEND_DATA(XFS_VFSTOM(vfsp), DM_EVENT_READ,
return -EINVAL; vp, 0, 0, 0, NULL);
if (DM_EVENT_ENABLED(ip, DM_EVENT_READ)) }
return -XFS_SEND_DATA(mp, DM_EVENT_READ, vp,
0, 0, 0, NULL);
} }
return 0; return 0;
} }
#endif /* HAVE_FOP_OPEN_EXEC */ #endif /* HAVE_FOP_OPEN_EXEC */
......
...@@ -138,7 +138,8 @@ xfs_find_handle( ...@@ -138,7 +138,8 @@ xfs_find_handle(
vp = vn_from_inode(inode); vp = vn_from_inode(inode);
/* now we can grab the fsid */ /* now we can grab the fsid */
memcpy(&handle.ha_fsid, vp->v_vfsp->vfs_altfsid, sizeof(xfs_fsid_t)); memcpy(&handle.ha_fsid, XFS_MTOVFS(XFS_I(inode)->i_mount)->vfs_altfsid,
sizeof(xfs_fsid_t));
hsize = sizeof(xfs_fsid_t); hsize = sizeof(xfs_fsid_t);
if (cmd != XFS_IOC_PATH_TO_FSHANDLE) { if (cmd != XFS_IOC_PATH_TO_FSHANDLE) {
......
...@@ -621,7 +621,7 @@ xfs_write( ...@@ -621,7 +621,7 @@ xfs_write(
io = &xip->i_iocore; io = &xip->i_iocore;
mp = io->io_mount; mp = io->io_mount;
vfs_wait_for_freeze(vp->v_vfsp, SB_FREEZE_WRITE); vfs_wait_for_freeze(XFS_MTOVFS(mp), SB_FREEZE_WRITE);
if (XFS_FORCED_SHUTDOWN(mp)) if (XFS_FORCED_SHUTDOWN(mp))
return -EIO; return -EIO;
......
...@@ -210,7 +210,6 @@ xfs_initialize_vnode( ...@@ -210,7 +210,6 @@ xfs_initialize_vnode(
struct inode *inode = vn_to_inode(vp); struct inode *inode = vn_to_inode(vp);
if (!ip->i_vnode) { if (!ip->i_vnode) {
vp->v_vfsp = bhvtovfs(bdp);
ip->i_vnode = vp; ip->i_vnode = vp;
inode->i_private = ip; inode->i_private = ip;
} }
......
...@@ -69,8 +69,10 @@ vn_ioerror( ...@@ -69,8 +69,10 @@ vn_ioerror(
char *f, char *f,
int l) int l)
{ {
bhv_vfs_t *vfsp = vfs_from_sb(vp->v_inode.i_sb);
if (unlikely(error == -ENODEV)) if (unlikely(error == -ENODEV))
bhv_vfs_force_shutdown(vp->v_vfsp, SHUTDOWN_DEVICE_REQ, f, l); bhv_vfs_force_shutdown(vfsp, SHUTDOWN_DEVICE_REQ, f, l);
} }
bhv_vnode_t * bhv_vnode_t *
......
...@@ -35,11 +35,10 @@ typedef enum bhv_vflags { ...@@ -35,11 +35,10 @@ typedef enum bhv_vflags {
/* /*
* MP locking protocols: * MP locking protocols:
* v_flag, v_vfsp VN_LOCK/VN_UNLOCK * v_flag, VN_LOCK/VN_UNLOCK
*/ */
typedef struct bhv_vnode { typedef struct bhv_vnode {
bhv_vflags_t v_flag; /* vnode flags (see above) */ bhv_vflags_t v_flag; /* vnode flags (see above) */
bhv_vfs_t *v_vfsp; /* ptr to containing VFS */
bhv_vnumber_t v_number; /* in-core vnode number */ bhv_vnumber_t v_number; /* in-core vnode number */
spinlock_t v_lock; /* VN_LOCK/VN_UNLOCK */ spinlock_t v_lock; /* VN_LOCK/VN_UNLOCK */
atomic_t v_iocount; /* outstanding I/O count */ atomic_t v_iocount; /* outstanding I/O count */
......
...@@ -372,6 +372,7 @@ xfs_acl_allow_set( ...@@ -372,6 +372,7 @@ xfs_acl_allow_set(
bhv_vnode_t *vp, bhv_vnode_t *vp,
int kind) int kind)
{ {
xfs_inode_t *ip = xfs_vtoi(vp);
bhv_vattr_t va; bhv_vattr_t va;
int error; int error;
...@@ -379,10 +380,10 @@ xfs_acl_allow_set( ...@@ -379,10 +380,10 @@ xfs_acl_allow_set(
return EPERM; return EPERM;
if (kind == _ACL_TYPE_DEFAULT && !VN_ISDIR(vp)) if (kind == _ACL_TYPE_DEFAULT && !VN_ISDIR(vp))
return ENOTDIR; return ENOTDIR;
if (vp->v_vfsp->vfs_flag & VFS_RDONLY) if (vp->v_inode.i_sb->s_flags & MS_RDONLY)
return EROFS; return EROFS;
va.va_mask = XFS_AT_UID; va.va_mask = XFS_AT_UID;
error = xfs_getattr(xfs_vtoi(vp), &va, 0); error = xfs_getattr(ip, &va, 0);
if (error) if (error)
return error; return error;
if (va.va_uid != current->fsuid && !capable(CAP_FOWNER)) if (va.va_uid != current->fsuid && !capable(CAP_FOWNER))
......
...@@ -1154,7 +1154,7 @@ xfs_ialloc( ...@@ -1154,7 +1154,7 @@ xfs_ialloc(
if ((prid != 0) && (ip->i_d.di_version == XFS_DINODE_VERSION_1)) if ((prid != 0) && (ip->i_d.di_version == XFS_DINODE_VERSION_1))
xfs_bump_ino_vers2(tp, ip); xfs_bump_ino_vers2(tp, ip);
if (pip && XFS_INHERIT_GID(pip, vp->v_vfsp)) { if (pip && XFS_INHERIT_GID(pip, XFS_MTOVFS(pip->i_mount))) {
ip->i_d.di_gid = pip->i_d.di_gid; ip->i_d.di_gid = pip->i_d.di_gid;
if ((pip->i_d.di_mode & S_ISGID) && (mode & S_IFMT) == S_IFDIR) { if ((pip->i_d.di_mode & S_ISGID) && (mode & S_IFMT) == S_IFDIR) {
ip->i_d.di_mode |= S_ISGID; ip->i_d.di_mode |= S_ISGID;
......
...@@ -230,7 +230,7 @@ xfs_setattr( ...@@ -230,7 +230,7 @@ xfs_setattr(
vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address);
if (vp->v_vfsp->vfs_flag & VFS_RDONLY) if (XFS_MTOVFS(mp)->vfs_flag & VFS_RDONLY)
return XFS_ERROR(EROFS); return XFS_ERROR(EROFS);
/* /*
...@@ -1515,7 +1515,7 @@ xfs_release( ...@@ -1515,7 +1515,7 @@ xfs_release(
return 0; return 0;
/* If this is a read-only mount, don't do this (would generate I/O) */ /* If this is a read-only mount, don't do this (would generate I/O) */
if (vp->v_vfsp->vfs_flag & VFS_RDONLY) if (XFS_MTOVFS(mp)->vfs_flag & VFS_RDONLY)
return 0; return 0;
if (!XFS_FORCED_SHUTDOWN(mp)) { if (!XFS_FORCED_SHUTDOWN(mp)) {
...@@ -1621,7 +1621,7 @@ xfs_inactive( ...@@ -1621,7 +1621,7 @@ xfs_inactive(
error = 0; error = 0;
/* If this is a read-only mount, don't do this (would generate I/O) */ /* If this is a read-only mount, don't do this (would generate I/O) */
if (vp->v_vfsp->vfs_flag & VFS_RDONLY) if (XFS_MTOVFS(mp)->vfs_flag & VFS_RDONLY)
goto out; goto out;
if (ip->i_d.di_nlink != 0) { if (ip->i_d.di_nlink != 0) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment