[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: Christoph Hellwig <hch@infradead.org> Signed-off-by: David Chinner <dgc@sgi.com> Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
parent
739bfb2a7d
commit
2f6f7b3d9b
9 changed files with 28 additions and 29 deletions
|
@ -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(
|
||||||
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
|
||||||
xfs_file_open_exec(
|
xfs_file_open_exec(
|
||||||
struct inode *inode)
|
struct inode *inode)
|
||||||
{
|
{
|
||||||
|
bhv_vfs_t *vfsp = vfs_from_sb(inode->i_sb);
|
||||||
|
|
||||||
|
if (unlikely(vfsp->vfs_flag & VFS_DMI)) {
|
||||||
|
if (DM_EVENT_ENABLED(XFS_I(inode), DM_EVENT_READ)) {
|
||||||
bhv_vnode_t *vp = vn_from_inode(inode);
|
bhv_vnode_t *vp = vn_from_inode(inode);
|
||||||
|
|
||||||
if (unlikely(vp->v_vfsp->vfs_flag & VFS_DMI)) {
|
return -XFS_SEND_DATA(XFS_VFSTOM(vfsp), DM_EVENT_READ,
|
||||||
xfs_mount_t *mp = XFS_VFSTOM(vp->v_vfsp);
|
vp, 0, 0, 0, NULL);
|
||||||
xfs_inode_t *ip = xfs_vtoi(vp);
|
|
||||||
|
|
||||||
if (!ip)
|
|
||||||
return -EINVAL;
|
|
||||||
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(
|
||||||
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(
|
||||||
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(
|
||||||
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(
|
||||||
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 {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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(
|
||||||
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(
|
||||||
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(
|
||||||
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(
|
||||||
|
|
||||||
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(
|
||||||
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(
|
||||||
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) {
|
||||||
|
|
Loading…
Reference in a new issue