diff options
Diffstat (limited to 'fs/xfs/xfs_vnodeops.c')
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 77 |
1 files changed, 38 insertions, 39 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 35906bae92e1..f3c2deeed0a3 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c | |||
@@ -62,7 +62,7 @@ xfs_open( | |||
62 | cred_t *credp) | 62 | cred_t *credp) |
63 | { | 63 | { |
64 | int mode; | 64 | int mode; |
65 | vnode_t *vp = BHV_TO_VNODE(bdp); | 65 | bhv_vnode_t *vp = BHV_TO_VNODE(bdp); |
66 | xfs_inode_t *ip = XFS_BHVTOI(bdp); | 66 | xfs_inode_t *ip = XFS_BHVTOI(bdp); |
67 | 67 | ||
68 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | 68 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
@@ -88,9 +88,8 @@ xfs_close( | |||
88 | lastclose_t lastclose, | 88 | lastclose_t lastclose, |
89 | cred_t *credp) | 89 | cred_t *credp) |
90 | { | 90 | { |
91 | vnode_t *vp = BHV_TO_VNODE(bdp); | 91 | bhv_vnode_t *vp = BHV_TO_VNODE(bdp); |
92 | xfs_inode_t *ip = XFS_BHVTOI(bdp); | 92 | xfs_inode_t *ip = XFS_BHVTOI(bdp); |
93 | int error = 0; | ||
94 | 93 | ||
95 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) | 94 | if (XFS_FORCED_SHUTDOWN(ip->i_mount)) |
96 | return XFS_ERROR(EIO); | 95 | return XFS_ERROR(EIO); |
@@ -108,8 +107,8 @@ xfs_close( | |||
108 | * window where we'd otherwise be exposed to that problem. | 107 | * window where we'd otherwise be exposed to that problem. |
109 | */ | 108 | */ |
110 | if (VUNTRUNCATE(vp) && VN_DIRTY(vp) && ip->i_delayed_blks > 0) | 109 | if (VUNTRUNCATE(vp) && VN_DIRTY(vp) && ip->i_delayed_blks > 0) |
111 | VOP_FLUSH_PAGES(vp, 0, -1, XFS_B_ASYNC, FI_NONE, error); | 110 | return bhv_vop_flush_pages(vp, 0, -1, XFS_B_ASYNC, FI_NONE); |
112 | return error; | 111 | return 0; |
113 | } | 112 | } |
114 | 113 | ||
115 | /* | 114 | /* |
@@ -124,7 +123,7 @@ xfs_getattr( | |||
124 | { | 123 | { |
125 | xfs_inode_t *ip; | 124 | xfs_inode_t *ip; |
126 | xfs_mount_t *mp; | 125 | xfs_mount_t *mp; |
127 | vnode_t *vp; | 126 | bhv_vnode_t *vp; |
128 | 127 | ||
129 | vp = BHV_TO_VNODE(bdp); | 128 | vp = BHV_TO_VNODE(bdp); |
130 | vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); | 129 | vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); |
@@ -265,7 +264,7 @@ xfs_setattr( | |||
265 | uid_t uid=0, iuid=0; | 264 | uid_t uid=0, iuid=0; |
266 | gid_t gid=0, igid=0; | 265 | gid_t gid=0, igid=0; |
267 | int timeflags = 0; | 266 | int timeflags = 0; |
268 | vnode_t *vp; | 267 | bhv_vnode_t *vp; |
269 | xfs_prid_t projid=0, iprojid=0; | 268 | xfs_prid_t projid=0, iprojid=0; |
270 | int mandlock_before, mandlock_after; | 269 | int mandlock_before, mandlock_after; |
271 | struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; | 270 | struct xfs_dquot *udqp, *gdqp, *olddquot1, *olddquot2; |
@@ -888,7 +887,7 @@ xfs_setattr( | |||
888 | */ | 887 | */ |
889 | mandlock_after = MANDLOCK(vp, ip->i_d.di_mode); | 888 | mandlock_after = MANDLOCK(vp, ip->i_d.di_mode); |
890 | if (mandlock_before != mandlock_after) { | 889 | if (mandlock_before != mandlock_after) { |
891 | VOP_VNODE_CHANGE(vp, VCHANGE_FLAGS_ENF_LOCKING, | 890 | bhv_vop_vnode_change(vp, VCHANGE_FLAGS_ENF_LOCKING, |
892 | mandlock_after); | 891 | mandlock_after); |
893 | } | 892 | } |
894 | 893 | ||
@@ -976,7 +975,7 @@ xfs_readlink( | |||
976 | int count; | 975 | int count; |
977 | xfs_off_t offset; | 976 | xfs_off_t offset; |
978 | int pathlen; | 977 | int pathlen; |
979 | vnode_t *vp; | 978 | bhv_vnode_t *vp; |
980 | int error = 0; | 979 | int error = 0; |
981 | xfs_mount_t *mp; | 980 | xfs_mount_t *mp; |
982 | int nmaps; | 981 | int nmaps; |
@@ -1547,7 +1546,7 @@ xfs_release( | |||
1547 | bhv_desc_t *bdp) | 1546 | bhv_desc_t *bdp) |
1548 | { | 1547 | { |
1549 | xfs_inode_t *ip; | 1548 | xfs_inode_t *ip; |
1550 | vnode_t *vp; | 1549 | bhv_vnode_t *vp; |
1551 | xfs_mount_t *mp; | 1550 | xfs_mount_t *mp; |
1552 | int error; | 1551 | int error; |
1553 | 1552 | ||
@@ -1600,8 +1599,8 @@ xfs_inactive( | |||
1600 | cred_t *credp) | 1599 | cred_t *credp) |
1601 | { | 1600 | { |
1602 | xfs_inode_t *ip; | 1601 | xfs_inode_t *ip; |
1603 | vnode_t *vp; | 1602 | bhv_vnode_t *vp; |
1604 | xfs_bmap_free_t free_list; | 1603 | xfs_bmap_free_t free_list; |
1605 | xfs_fsblock_t first_block; | 1604 | xfs_fsblock_t first_block; |
1606 | int committed; | 1605 | int committed; |
1607 | xfs_trans_t *tp; | 1606 | xfs_trans_t *tp; |
@@ -1817,16 +1816,16 @@ STATIC int | |||
1817 | xfs_lookup( | 1816 | xfs_lookup( |
1818 | bhv_desc_t *dir_bdp, | 1817 | bhv_desc_t *dir_bdp, |
1819 | vname_t *dentry, | 1818 | vname_t *dentry, |
1820 | vnode_t **vpp, | 1819 | bhv_vnode_t **vpp, |
1821 | int flags, | 1820 | int flags, |
1822 | vnode_t *rdir, | 1821 | bhv_vnode_t *rdir, |
1823 | cred_t *credp) | 1822 | cred_t *credp) |
1824 | { | 1823 | { |
1825 | xfs_inode_t *dp, *ip; | 1824 | xfs_inode_t *dp, *ip; |
1826 | xfs_ino_t e_inum; | 1825 | xfs_ino_t e_inum; |
1827 | int error; | 1826 | int error; |
1828 | uint lock_mode; | 1827 | uint lock_mode; |
1829 | vnode_t *dir_vp; | 1828 | bhv_vnode_t *dir_vp; |
1830 | 1829 | ||
1831 | dir_vp = BHV_TO_VNODE(dir_bdp); | 1830 | dir_vp = BHV_TO_VNODE(dir_bdp); |
1832 | vn_trace_entry(dir_vp, __FUNCTION__, (inst_t *)__return_address); | 1831 | vn_trace_entry(dir_vp, __FUNCTION__, (inst_t *)__return_address); |
@@ -1855,13 +1854,13 @@ xfs_create( | |||
1855 | bhv_desc_t *dir_bdp, | 1854 | bhv_desc_t *dir_bdp, |
1856 | vname_t *dentry, | 1855 | vname_t *dentry, |
1857 | vattr_t *vap, | 1856 | vattr_t *vap, |
1858 | vnode_t **vpp, | 1857 | bhv_vnode_t **vpp, |
1859 | cred_t *credp) | 1858 | cred_t *credp) |
1860 | { | 1859 | { |
1861 | char *name = VNAME(dentry); | 1860 | char *name = VNAME(dentry); |
1862 | vnode_t *dir_vp; | 1861 | bhv_vnode_t *dir_vp; |
1863 | xfs_inode_t *dp, *ip; | 1862 | xfs_inode_t *dp, *ip; |
1864 | vnode_t *vp=NULL; | 1863 | bhv_vnode_t *vp = NULL; |
1865 | xfs_trans_t *tp; | 1864 | xfs_trans_t *tp; |
1866 | xfs_mount_t *mp; | 1865 | xfs_mount_t *mp; |
1867 | xfs_dev_t rdev; | 1866 | xfs_dev_t rdev; |
@@ -2047,7 +2046,7 @@ xfs_create( | |||
2047 | * Propagate the fact that the vnode changed after the | 2046 | * Propagate the fact that the vnode changed after the |
2048 | * xfs_inode locks have been released. | 2047 | * xfs_inode locks have been released. |
2049 | */ | 2048 | */ |
2050 | VOP_VNODE_CHANGE(vp, VCHANGE_FLAGS_TRUNCATED, 3); | 2049 | bhv_vop_vnode_change(vp, VCHANGE_FLAGS_TRUNCATED, 3); |
2051 | 2050 | ||
2052 | *vpp = vp; | 2051 | *vpp = vp; |
2053 | 2052 | ||
@@ -2345,7 +2344,7 @@ xfs_remove( | |||
2345 | vname_t *dentry, | 2344 | vname_t *dentry, |
2346 | cred_t *credp) | 2345 | cred_t *credp) |
2347 | { | 2346 | { |
2348 | vnode_t *dir_vp; | 2347 | bhv_vnode_t *dir_vp; |
2349 | char *name = VNAME(dentry); | 2348 | char *name = VNAME(dentry); |
2350 | xfs_inode_t *dp, *ip; | 2349 | xfs_inode_t *dp, *ip; |
2351 | xfs_trans_t *tp = NULL; | 2350 | xfs_trans_t *tp = NULL; |
@@ -2532,7 +2531,7 @@ xfs_remove( | |||
2532 | /* | 2531 | /* |
2533 | * Let interposed file systems know about removed links. | 2532 | * Let interposed file systems know about removed links. |
2534 | */ | 2533 | */ |
2535 | VOP_LINK_REMOVED(XFS_ITOV(ip), dir_vp, link_zero); | 2534 | bhv_vop_link_removed(XFS_ITOV(ip), dir_vp, link_zero); |
2536 | 2535 | ||
2537 | IRELE(ip); | 2536 | IRELE(ip); |
2538 | 2537 | ||
@@ -2585,7 +2584,7 @@ xfs_remove( | |||
2585 | STATIC int | 2584 | STATIC int |
2586 | xfs_link( | 2585 | xfs_link( |
2587 | bhv_desc_t *target_dir_bdp, | 2586 | bhv_desc_t *target_dir_bdp, |
2588 | vnode_t *src_vp, | 2587 | bhv_vnode_t *src_vp, |
2589 | vname_t *dentry, | 2588 | vname_t *dentry, |
2590 | cred_t *credp) | 2589 | cred_t *credp) |
2591 | { | 2590 | { |
@@ -2598,7 +2597,7 @@ xfs_link( | |||
2598 | xfs_fsblock_t first_block; | 2597 | xfs_fsblock_t first_block; |
2599 | int cancel_flags; | 2598 | int cancel_flags; |
2600 | int committed; | 2599 | int committed; |
2601 | vnode_t *target_dir_vp; | 2600 | bhv_vnode_t *target_dir_vp; |
2602 | int resblks; | 2601 | int resblks; |
2603 | char *target_name = VNAME(dentry); | 2602 | char *target_name = VNAME(dentry); |
2604 | int target_namelen; | 2603 | int target_namelen; |
@@ -2757,13 +2756,13 @@ xfs_mkdir( | |||
2757 | bhv_desc_t *dir_bdp, | 2756 | bhv_desc_t *dir_bdp, |
2758 | vname_t *dentry, | 2757 | vname_t *dentry, |
2759 | vattr_t *vap, | 2758 | vattr_t *vap, |
2760 | vnode_t **vpp, | 2759 | bhv_vnode_t **vpp, |
2761 | cred_t *credp) | 2760 | cred_t *credp) |
2762 | { | 2761 | { |
2763 | char *dir_name = VNAME(dentry); | 2762 | char *dir_name = VNAME(dentry); |
2764 | xfs_inode_t *dp; | 2763 | xfs_inode_t *dp; |
2765 | xfs_inode_t *cdp; /* inode of created dir */ | 2764 | xfs_inode_t *cdp; /* inode of created dir */ |
2766 | vnode_t *cvp; /* vnode of created dir */ | 2765 | bhv_vnode_t *cvp; /* vnode of created dir */ |
2767 | xfs_trans_t *tp; | 2766 | xfs_trans_t *tp; |
2768 | xfs_mount_t *mp; | 2767 | xfs_mount_t *mp; |
2769 | int cancel_flags; | 2768 | int cancel_flags; |
@@ -2771,7 +2770,7 @@ xfs_mkdir( | |||
2771 | int committed; | 2770 | int committed; |
2772 | xfs_bmap_free_t free_list; | 2771 | xfs_bmap_free_t free_list; |
2773 | xfs_fsblock_t first_block; | 2772 | xfs_fsblock_t first_block; |
2774 | vnode_t *dir_vp; | 2773 | bhv_vnode_t *dir_vp; |
2775 | boolean_t dp_joined_to_trans; | 2774 | boolean_t dp_joined_to_trans; |
2776 | boolean_t created = B_FALSE; | 2775 | boolean_t created = B_FALSE; |
2777 | int dm_event_sent = 0; | 2776 | int dm_event_sent = 0; |
@@ -3003,7 +3002,7 @@ xfs_rmdir( | |||
3003 | xfs_fsblock_t first_block; | 3002 | xfs_fsblock_t first_block; |
3004 | int cancel_flags; | 3003 | int cancel_flags; |
3005 | int committed; | 3004 | int committed; |
3006 | vnode_t *dir_vp; | 3005 | bhv_vnode_t *dir_vp; |
3007 | int dm_di_mode = 0; | 3006 | int dm_di_mode = 0; |
3008 | int last_cdp_link; | 3007 | int last_cdp_link; |
3009 | int namelen; | 3008 | int namelen; |
@@ -3202,7 +3201,7 @@ xfs_rmdir( | |||
3202 | /* | 3201 | /* |
3203 | * Let interposed file systems know about removed links. | 3202 | * Let interposed file systems know about removed links. |
3204 | */ | 3203 | */ |
3205 | VOP_LINK_REMOVED(XFS_ITOV(cdp), dir_vp, last_cdp_link); | 3204 | bhv_vop_link_removed(XFS_ITOV(cdp), dir_vp, last_cdp_link); |
3206 | 3205 | ||
3207 | IRELE(cdp); | 3206 | IRELE(cdp); |
3208 | 3207 | ||
@@ -3272,7 +3271,7 @@ xfs_symlink( | |||
3272 | vname_t *dentry, | 3271 | vname_t *dentry, |
3273 | vattr_t *vap, | 3272 | vattr_t *vap, |
3274 | char *target_path, | 3273 | char *target_path, |
3275 | vnode_t **vpp, | 3274 | bhv_vnode_t **vpp, |
3276 | cred_t *credp) | 3275 | cred_t *credp) |
3277 | { | 3276 | { |
3278 | xfs_trans_t *tp; | 3277 | xfs_trans_t *tp; |
@@ -3284,7 +3283,7 @@ xfs_symlink( | |||
3284 | xfs_bmap_free_t free_list; | 3283 | xfs_bmap_free_t free_list; |
3285 | xfs_fsblock_t first_block; | 3284 | xfs_fsblock_t first_block; |
3286 | boolean_t dp_joined_to_trans; | 3285 | boolean_t dp_joined_to_trans; |
3287 | vnode_t *dir_vp; | 3286 | bhv_vnode_t *dir_vp; |
3288 | uint cancel_flags; | 3287 | uint cancel_flags; |
3289 | int committed; | 3288 | int committed; |
3290 | xfs_fileoff_t first_fsb; | 3289 | xfs_fileoff_t first_fsb; |
@@ -3562,7 +3561,7 @@ std_return: | |||
3562 | } | 3561 | } |
3563 | 3562 | ||
3564 | if (!error) { | 3563 | if (!error) { |
3565 | vnode_t *vp; | 3564 | bhv_vnode_t *vp; |
3566 | 3565 | ||
3567 | ASSERT(ip); | 3566 | ASSERT(ip); |
3568 | vp = XFS_ITOV(ip); | 3567 | vp = XFS_ITOV(ip); |
@@ -3630,7 +3629,7 @@ xfs_rwlock( | |||
3630 | vrwlock_t locktype) | 3629 | vrwlock_t locktype) |
3631 | { | 3630 | { |
3632 | xfs_inode_t *ip; | 3631 | xfs_inode_t *ip; |
3633 | vnode_t *vp; | 3632 | bhv_vnode_t *vp; |
3634 | 3633 | ||
3635 | vp = BHV_TO_VNODE(bdp); | 3634 | vp = BHV_TO_VNODE(bdp); |
3636 | if (VN_ISDIR(vp)) | 3635 | if (VN_ISDIR(vp)) |
@@ -3661,7 +3660,7 @@ xfs_rwunlock( | |||
3661 | vrwlock_t locktype) | 3660 | vrwlock_t locktype) |
3662 | { | 3661 | { |
3663 | xfs_inode_t *ip; | 3662 | xfs_inode_t *ip; |
3664 | vnode_t *vp; | 3663 | bhv_vnode_t *vp; |
3665 | 3664 | ||
3666 | vp = BHV_TO_VNODE(bdp); | 3665 | vp = BHV_TO_VNODE(bdp); |
3667 | if (VN_ISDIR(vp)) | 3666 | if (VN_ISDIR(vp)) |
@@ -3810,7 +3809,7 @@ xfs_reclaim( | |||
3810 | bhv_desc_t *bdp) | 3809 | bhv_desc_t *bdp) |
3811 | { | 3810 | { |
3812 | xfs_inode_t *ip; | 3811 | xfs_inode_t *ip; |
3813 | vnode_t *vp; | 3812 | bhv_vnode_t *vp; |
3814 | 3813 | ||
3815 | vp = BHV_TO_VNODE(bdp); | 3814 | vp = BHV_TO_VNODE(bdp); |
3816 | ip = XFS_BHVTOI(bdp); | 3815 | ip = XFS_BHVTOI(bdp); |
@@ -3865,7 +3864,7 @@ xfs_finish_reclaim( | |||
3865 | int sync_mode) | 3864 | int sync_mode) |
3866 | { | 3865 | { |
3867 | xfs_ihash_t *ih = ip->i_hash; | 3866 | xfs_ihash_t *ih = ip->i_hash; |
3868 | vnode_t *vp = XFS_ITOV_NULL(ip); | 3867 | bhv_vnode_t *vp = XFS_ITOV_NULL(ip); |
3869 | int error; | 3868 | int error; |
3870 | 3869 | ||
3871 | if (vp && VN_BAD(vp)) | 3870 | if (vp && VN_BAD(vp)) |
@@ -4275,7 +4274,7 @@ xfs_free_file_space( | |||
4275 | xfs_off_t len, | 4274 | xfs_off_t len, |
4276 | int attr_flags) | 4275 | int attr_flags) |
4277 | { | 4276 | { |
4278 | vnode_t *vp; | 4277 | bhv_vnode_t *vp; |
4279 | int committed; | 4278 | int committed; |
4280 | int done; | 4279 | int done; |
4281 | xfs_off_t end_dmi_offset; | 4280 | xfs_off_t end_dmi_offset; |
@@ -4341,7 +4340,7 @@ xfs_free_file_space( | |||
4341 | if (VN_CACHED(vp) != 0) { | 4340 | if (VN_CACHED(vp) != 0) { |
4342 | xfs_inval_cached_trace(&ip->i_iocore, ioffset, -1, | 4341 | xfs_inval_cached_trace(&ip->i_iocore, ioffset, -1, |
4343 | ctooff(offtoct(ioffset)), -1); | 4342 | ctooff(offtoct(ioffset)), -1); |
4344 | VOP_FLUSHINVAL_PAGES(vp, ctooff(offtoct(ioffset)), | 4343 | bhv_vop_flushinval_pages(vp, ctooff(offtoct(ioffset)), |
4345 | -1, FI_REMAPF_LOCKED); | 4344 | -1, FI_REMAPF_LOCKED); |
4346 | } | 4345 | } |
4347 | 4346 | ||
@@ -4504,7 +4503,7 @@ xfs_change_file_space( | |||
4504 | xfs_off_t llen; | 4503 | xfs_off_t llen; |
4505 | xfs_trans_t *tp; | 4504 | xfs_trans_t *tp; |
4506 | vattr_t va; | 4505 | vattr_t va; |
4507 | vnode_t *vp; | 4506 | bhv_vnode_t *vp; |
4508 | 4507 | ||
4509 | vp = BHV_TO_VNODE(bdp); | 4508 | vp = BHV_TO_VNODE(bdp); |
4510 | vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); | 4509 | vn_trace_entry(vp, __FUNCTION__, (inst_t *)__return_address); |
@@ -4657,7 +4656,7 @@ xfs_change_file_space( | |||
4657 | return error; | 4656 | return error; |
4658 | } | 4657 | } |
4659 | 4658 | ||
4660 | vnodeops_t xfs_vnodeops = { | 4659 | bhv_vnodeops_t xfs_vnodeops = { |
4661 | BHV_IDENTITY_INIT(VN_BHV_XFS,VNODE_POSITION_XFS), | 4660 | BHV_IDENTITY_INIT(VN_BHV_XFS,VNODE_POSITION_XFS), |
4662 | .vop_open = xfs_open, | 4661 | .vop_open = xfs_open, |
4663 | .vop_close = xfs_close, | 4662 | .vop_close = xfs_close, |