diff options
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 4 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_file.c | 6 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_ioctl.c | 5 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_iops.c | 16 | ||||
| -rw-r--r-- | fs/xfs/xfs_dfrag.c | 16 | ||||
| -rw-r--r-- | fs/xfs/xfs_iget.c | 5 | ||||
| -rw-r--r-- | fs/xfs/xfs_inode.h | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_rename.c | 7 | ||||
| -rw-r--r-- | fs/xfs/xfs_utils.c | 9 | ||||
| -rw-r--r-- | fs/xfs/xfs_vnodeops.c | 4 |
10 files changed, 33 insertions, 41 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index 52707b5ddcb8..d1db8c17a74e 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
| @@ -54,7 +54,6 @@ xfs_page_trace( | |||
| 54 | int mask) | 54 | int mask) |
| 55 | { | 55 | { |
| 56 | xfs_inode_t *ip; | 56 | xfs_inode_t *ip; |
| 57 | bhv_desc_t *bdp; | ||
| 58 | vnode_t *vp = LINVFS_GET_VP(inode); | 57 | vnode_t *vp = LINVFS_GET_VP(inode); |
| 59 | loff_t isize = i_size_read(inode); | 58 | loff_t isize = i_size_read(inode); |
| 60 | loff_t offset = page_offset(page); | 59 | loff_t offset = page_offset(page); |
| @@ -63,8 +62,7 @@ xfs_page_trace( | |||
| 63 | if (page_has_buffers(page)) | 62 | if (page_has_buffers(page)) |
| 64 | xfs_count_page_state(page, &delalloc, &unmapped, &unwritten); | 63 | xfs_count_page_state(page, &delalloc, &unmapped, &unwritten); |
| 65 | 64 | ||
| 66 | bdp = vn_bhv_lookup(VN_BHV_HEAD(vp), &xfs_vnodeops); | 65 | ip = xfs_vtoi(vp); |
| 67 | ip = XFS_BHVTOI(bdp); | ||
| 68 | if (!ip->i_rwtrace) | 66 | if (!ip->i_rwtrace) |
| 69 | return; | 67 | return; |
| 70 | 68 | ||
diff --git a/fs/xfs/linux-2.6/xfs_file.c b/fs/xfs/linux-2.6/xfs_file.c index 06111d0bbae4..ced4404339c7 100644 --- a/fs/xfs/linux-2.6/xfs_file.c +++ b/fs/xfs/linux-2.6/xfs_file.c | |||
| @@ -509,16 +509,14 @@ linvfs_open_exec( | |||
| 509 | vnode_t *vp = LINVFS_GET_VP(inode); | 509 | vnode_t *vp = LINVFS_GET_VP(inode); |
| 510 | xfs_mount_t *mp = XFS_VFSTOM(vp->v_vfsp); | 510 | xfs_mount_t *mp = XFS_VFSTOM(vp->v_vfsp); |
| 511 | int error = 0; | 511 | int error = 0; |
| 512 | bhv_desc_t *bdp; | ||
| 513 | xfs_inode_t *ip; | 512 | xfs_inode_t *ip; |
| 514 | 513 | ||
| 515 | if (vp->v_vfsp->vfs_flag & VFS_DMI) { | 514 | if (vp->v_vfsp->vfs_flag & VFS_DMI) { |
| 516 | bdp = vn_bhv_lookup(VN_BHV_HEAD(vp), &xfs_vnodeops); | 515 | ip = xfs_vtoi(vp); |
| 517 | if (!bdp) { | 516 | if (!ip) { |
| 518 | error = -EINVAL; | 517 | error = -EINVAL; |
| 519 | goto open_exec_out; | 518 | goto open_exec_out; |
| 520 | } | 519 | } |
| 521 | ip = XFS_BHVTOI(bdp); | ||
| 522 | if (DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_READ)) { | 520 | if (DM_EVENT_ENABLED(vp->v_vfsp, ip, DM_EVENT_READ)) { |
| 523 | error = -XFS_SEND_DATA(mp, DM_EVENT_READ, vp, | 521 | error = -XFS_SEND_DATA(mp, DM_EVENT_READ, vp, |
| 524 | 0, 0, 0, NULL); | 522 | 0, 0, 0, NULL); |
diff --git a/fs/xfs/linux-2.6/xfs_ioctl.c b/fs/xfs/linux-2.6/xfs_ioctl.c index 7ad7b680e996..b3b2cfda273c 100644 --- a/fs/xfs/linux-2.6/xfs_ioctl.c +++ b/fs/xfs/linux-2.6/xfs_ioctl.c | |||
| @@ -145,13 +145,10 @@ xfs_find_handle( | |||
| 145 | 145 | ||
| 146 | if (cmd != XFS_IOC_PATH_TO_FSHANDLE) { | 146 | if (cmd != XFS_IOC_PATH_TO_FSHANDLE) { |
| 147 | xfs_inode_t *ip; | 147 | xfs_inode_t *ip; |
| 148 | bhv_desc_t *bhv; | ||
| 149 | int lock_mode; | 148 | int lock_mode; |
| 150 | 149 | ||
| 151 | /* need to get access to the xfs_inode to read the generation */ | 150 | /* need to get access to the xfs_inode to read the generation */ |
| 152 | bhv = vn_bhv_lookup_unlocked(VN_BHV_HEAD(vp), &xfs_vnodeops); | 151 | ip = xfs_vtoi(vp); |
| 153 | ASSERT(bhv); | ||
| 154 | ip = XFS_BHVTOI(bhv); | ||
| 155 | ASSERT(ip); | 152 | ASSERT(ip); |
| 156 | lock_mode = xfs_ilock_map_shared(ip); | 153 | lock_mode = xfs_ilock_map_shared(ip); |
| 157 | 154 | ||
diff --git a/fs/xfs/linux-2.6/xfs_iops.c b/fs/xfs/linux-2.6/xfs_iops.c index fe5e9894fdee..d388d14efe3e 100644 --- a/fs/xfs/linux-2.6/xfs_iops.c +++ b/fs/xfs/linux-2.6/xfs_iops.c | |||
| @@ -59,6 +59,22 @@ | |||
| 59 | (S_ISDIR(inode->i_mode) && inode->i_sb->s_flags & MS_NODIRATIME)) | 59 | (S_ISDIR(inode->i_mode) && inode->i_sb->s_flags & MS_NODIRATIME)) |
| 60 | 60 | ||
| 61 | /* | 61 | /* |
| 62 | * Get a XFS inode from a given vnode. | ||
| 63 | */ | ||
| 64 | xfs_inode_t * | ||
| 65 | xfs_vtoi( | ||
| 66 | struct vnode *vp) | ||
| 67 | { | ||
| 68 | bhv_desc_t *bdp; | ||
| 69 | |||
| 70 | bdp = bhv_lookup_range(VN_BHV_HEAD(vp), | ||
| 71 | VNODE_POSITION_XFS, VNODE_POSITION_XFS); | ||
| 72 | if (unlikely(bdp == NULL)) | ||
| 73 | return NULL; | ||
| 74 | return XFS_BHVTOI(bdp); | ||
| 75 | } | ||
| 76 | |||
| 77 | /* | ||
| 62 | * Bring the atime in the XFS inode uptodate. | 78 | * Bring the atime in the XFS inode uptodate. |
| 63 | * Used before logging the inode to disk or when the Linux inode goes away. | 79 | * Used before logging the inode to disk or when the Linux inode goes away. |
| 64 | */ | 80 | */ |
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index 070259a4254c..c6191d00ad27 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c | |||
| @@ -60,8 +60,6 @@ xfs_swapext( | |||
| 60 | xfs_bstat_t *sbp; | 60 | xfs_bstat_t *sbp; |
| 61 | struct file *fp = NULL, *tfp = NULL; | 61 | struct file *fp = NULL, *tfp = NULL; |
| 62 | vnode_t *vp, *tvp; | 62 | vnode_t *vp, *tvp; |
| 63 | bhv_desc_t *bdp, *tbdp; | ||
| 64 | vn_bhv_head_t *bhp, *tbhp; | ||
| 65 | static uint lock_flags = XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL; | 63 | static uint lock_flags = XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL; |
| 66 | int ilf_fields, tilf_fields; | 64 | int ilf_fields, tilf_fields; |
| 67 | int error = 0; | 65 | int error = 0; |
| @@ -90,13 +88,10 @@ xfs_swapext( | |||
| 90 | goto error0; | 88 | goto error0; |
| 91 | } | 89 | } |
| 92 | 90 | ||
| 93 | bhp = VN_BHV_HEAD(vp); | 91 | ip = xfs_vtoi(vp); |
| 94 | bdp = vn_bhv_lookup(bhp, &xfs_vnodeops); | 92 | if (ip == NULL) { |
| 95 | if (bdp == NULL) { | ||
| 96 | error = XFS_ERROR(EBADF); | 93 | error = XFS_ERROR(EBADF); |
| 97 | goto error0; | 94 | goto error0; |
| 98 | } else { | ||
| 99 | ip = XFS_BHVTOI(bdp); | ||
| 100 | } | 95 | } |
| 101 | 96 | ||
| 102 | if (((tfp = fget((int)sxp->sx_fdtmp)) == NULL) || | 97 | if (((tfp = fget((int)sxp->sx_fdtmp)) == NULL) || |
| @@ -105,13 +100,10 @@ xfs_swapext( | |||
| 105 | goto error0; | 100 | goto error0; |
| 106 | } | 101 | } |
| 107 | 102 | ||
| 108 | tbhp = VN_BHV_HEAD(tvp); | 103 | tip = xfs_vtoi(tvp); |
| 109 | tbdp = vn_bhv_lookup(tbhp, &xfs_vnodeops); | 104 | if (tip == NULL) { |
| 110 | if (tbdp == NULL) { | ||
| 111 | error = XFS_ERROR(EBADF); | 105 | error = XFS_ERROR(EBADF); |
| 112 | goto error0; | 106 | goto error0; |
| 113 | } else { | ||
| 114 | tip = XFS_BHVTOI(tbdp); | ||
| 115 | } | 107 | } |
| 116 | 108 | ||
| 117 | if (ip->i_mount != tip->i_mount) { | 109 | if (ip->i_mount != tip->i_mount) { |
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index fc19eedbd11b..8e380a1fb79b 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c | |||
| @@ -493,7 +493,6 @@ xfs_iget( | |||
| 493 | 493 | ||
| 494 | retry: | 494 | retry: |
| 495 | if ((inode = iget_locked(XFS_MTOVFS(mp)->vfs_super, ino))) { | 495 | if ((inode = iget_locked(XFS_MTOVFS(mp)->vfs_super, ino))) { |
| 496 | bhv_desc_t *bdp; | ||
| 497 | xfs_inode_t *ip; | 496 | xfs_inode_t *ip; |
| 498 | 497 | ||
| 499 | vp = LINVFS_GET_VP(inode); | 498 | vp = LINVFS_GET_VP(inode); |
| @@ -517,14 +516,12 @@ retry: | |||
| 517 | * to wait for the inode to go away. | 516 | * to wait for the inode to go away. |
| 518 | */ | 517 | */ |
| 519 | if (is_bad_inode(inode) || | 518 | if (is_bad_inode(inode) || |
| 520 | ((bdp = vn_bhv_lookup(VN_BHV_HEAD(vp), | 519 | ((ip = xfs_vtoi(vp)) == NULL)) { |
| 521 | &xfs_vnodeops)) == NULL)) { | ||
| 522 | iput(inode); | 520 | iput(inode); |
| 523 | delay(1); | 521 | delay(1); |
| 524 | goto retry; | 522 | goto retry; |
| 525 | } | 523 | } |
| 526 | 524 | ||
| 527 | ip = XFS_BHVTOI(bdp); | ||
| 528 | if (lock_flags != 0) | 525 | if (lock_flags != 0) |
| 529 | xfs_ilock(ip, lock_flags); | 526 | xfs_ilock(ip, lock_flags); |
| 530 | XFS_STATS_INC(xs_ig_found); | 527 | XFS_STATS_INC(xs_ig_found); |
diff --git a/fs/xfs/xfs_inode.h b/fs/xfs/xfs_inode.h index c4c1d9bce82e..1cfbcf18ce86 100644 --- a/fs/xfs/xfs_inode.h +++ b/fs/xfs/xfs_inode.h | |||
| @@ -436,6 +436,8 @@ void xfs_ichgtime(xfs_inode_t *, int); | |||
| 436 | xfs_fsize_t xfs_file_last_byte(xfs_inode_t *); | 436 | xfs_fsize_t xfs_file_last_byte(xfs_inode_t *); |
| 437 | void xfs_lock_inodes(xfs_inode_t **, int, int, uint); | 437 | void xfs_lock_inodes(xfs_inode_t **, int, int, uint); |
| 438 | 438 | ||
| 439 | xfs_inode_t *xfs_vtoi(struct vnode *vp); | ||
| 440 | |||
| 439 | void xfs_synchronize_atime(xfs_inode_t *); | 441 | void xfs_synchronize_atime(xfs_inode_t *); |
| 440 | 442 | ||
| 441 | #define xfs_ipincount(ip) ((unsigned int) atomic_read(&ip->i_pincount)) | 443 | #define xfs_ipincount(ip) ((unsigned int) atomic_read(&ip->i_pincount)) |
diff --git a/fs/xfs/xfs_rename.c b/fs/xfs/xfs_rename.c index 4d4e8f4e768e..81a05cfd77d2 100644 --- a/fs/xfs/xfs_rename.c +++ b/fs/xfs/xfs_rename.c | |||
| @@ -243,7 +243,6 @@ xfs_rename( | |||
| 243 | xfs_inode_t *inodes[4]; | 243 | xfs_inode_t *inodes[4]; |
| 244 | int target_ip_dropped = 0; /* dropped target_ip link? */ | 244 | int target_ip_dropped = 0; /* dropped target_ip link? */ |
| 245 | vnode_t *src_dir_vp; | 245 | vnode_t *src_dir_vp; |
| 246 | bhv_desc_t *target_dir_bdp; | ||
| 247 | int spaceres; | 246 | int spaceres; |
| 248 | int target_link_zero = 0; | 247 | int target_link_zero = 0; |
| 249 | int num_inodes; | 248 | int num_inodes; |
| @@ -260,14 +259,12 @@ xfs_rename( | |||
| 260 | * Find the XFS behavior descriptor for the target directory | 259 | * Find the XFS behavior descriptor for the target directory |
| 261 | * vnode since it was not handed to us. | 260 | * vnode since it was not handed to us. |
| 262 | */ | 261 | */ |
| 263 | target_dir_bdp = vn_bhv_lookup_unlocked(VN_BHV_HEAD(target_dir_vp), | 262 | target_dp = xfs_vtoi(target_dir_vp); |
| 264 | &xfs_vnodeops); | 263 | if (target_dp == NULL) { |
| 265 | if (target_dir_bdp == NULL) { | ||
| 266 | return XFS_ERROR(EXDEV); | 264 | return XFS_ERROR(EXDEV); |
| 267 | } | 265 | } |
| 268 | 266 | ||
| 269 | src_dp = XFS_BHVTOI(src_dir_bdp); | 267 | src_dp = XFS_BHVTOI(src_dir_bdp); |
| 270 | target_dp = XFS_BHVTOI(target_dir_bdp); | ||
| 271 | mp = src_dp->i_mount; | 268 | mp = src_dp->i_mount; |
| 272 | 269 | ||
| 273 | if (DM_EVENT_ENABLED(src_dir_vp->v_vfsp, src_dp, DM_EVENT_RENAME) || | 270 | if (DM_EVENT_ENABLED(src_dir_vp->v_vfsp, src_dp, DM_EVENT_RENAME) || |
diff --git a/fs/xfs/xfs_utils.c b/fs/xfs/xfs_utils.c index fefe1d60377f..34654ec6ae10 100644 --- a/fs/xfs/xfs_utils.c +++ b/fs/xfs/xfs_utils.c | |||
| @@ -55,16 +55,13 @@ xfs_get_dir_entry( | |||
| 55 | xfs_inode_t **ipp) | 55 | xfs_inode_t **ipp) |
| 56 | { | 56 | { |
| 57 | vnode_t *vp; | 57 | vnode_t *vp; |
| 58 | bhv_desc_t *bdp; | ||
| 59 | 58 | ||
| 60 | vp = VNAME_TO_VNODE(dentry); | 59 | vp = VNAME_TO_VNODE(dentry); |
| 61 | bdp = vn_bhv_lookup_unlocked(VN_BHV_HEAD(vp), &xfs_vnodeops); | 60 | |
| 62 | if (!bdp) { | 61 | *ipp = xfs_vtoi(vp); |
| 63 | *ipp = NULL; | 62 | if (!*ipp) |
| 64 | return XFS_ERROR(ENOENT); | 63 | return XFS_ERROR(ENOENT); |
| 65 | } | ||
| 66 | VN_HOLD(vp); | 64 | VN_HOLD(vp); |
| 67 | *ipp = XFS_BHVTOI(bdp); | ||
| 68 | return 0; | 65 | return 0; |
| 69 | } | 66 | } |
| 70 | 67 | ||
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 3e8f1cbb7049..b12fcfcb196d 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
| @@ -2578,7 +2578,6 @@ xfs_link( | |||
| 2578 | int cancel_flags; | 2578 | int cancel_flags; |
| 2579 | int committed; | 2579 | int committed; |
| 2580 | vnode_t *target_dir_vp; | 2580 | vnode_t *target_dir_vp; |
| 2581 | bhv_desc_t *src_bdp; | ||
| 2582 | int resblks; | 2581 | int resblks; |
| 2583 | char *target_name = VNAME(dentry); | 2582 | char *target_name = VNAME(dentry); |
| 2584 | int target_namelen; | 2583 | int target_namelen; |
| @@ -2591,8 +2590,7 @@ xfs_link( | |||
| 2591 | if (VN_ISDIR(src_vp)) | 2590 | if (VN_ISDIR(src_vp)) |
| 2592 | return XFS_ERROR(EPERM); | 2591 | return XFS_ERROR(EPERM); |
| 2593 | 2592 | ||
| 2594 | src_bdp = vn_bhv_lookup_unlocked(VN_BHV_HEAD(src_vp), &xfs_vnodeops); | 2593 | sip = xfs_vtoi(src_vp); |
| 2595 | sip = XFS_BHVTOI(src_bdp); | ||
| 2596 | tdp = XFS_BHVTOI(target_dir_bdp); | 2594 | tdp = XFS_BHVTOI(target_dir_bdp); |
| 2597 | mp = tdp->i_mount; | 2595 | mp = tdp->i_mount; |
| 2598 | if (XFS_FORCED_SHUTDOWN(mp)) | 2596 | if (XFS_FORCED_SHUTDOWN(mp)) |
