Commit 99428c84 authored by Nathan Scott's avatar Nathan Scott Committed by Stephen Lord

[XFS] First stage of behavior code cleanup - removes a bunch of unused macros

related to read/write locking the behavior change.

SGI Modid: 2.5.x-xfs:slinx:141401a
parent cb3540e0
...@@ -121,9 +121,7 @@ bhv_lookup_unlocked(bhv_head_t *bhp, void *ops) ...@@ -121,9 +121,7 @@ bhv_lookup_unlocked(bhv_head_t *bhp, void *ops)
{ {
bhv_desc_t *bdp; bhv_desc_t *bdp;
BHV_READ_LOCK(bhp);
bdp = bhv_lookup(bhp, ops); bdp = bhv_lookup(bhp, ops);
BHV_READ_UNLOCK(bhp);
return bdp; return bdp;
} }
...@@ -140,18 +138,12 @@ bhv_base_unlocked(bhv_head_t *bhp) ...@@ -140,18 +138,12 @@ bhv_base_unlocked(bhv_head_t *bhp)
{ {
bhv_desc_t *curdesc; bhv_desc_t *curdesc;
BHV_READ_LOCK(bhp);
for (curdesc = bhp->bh_first; for (curdesc = bhp->bh_first;
curdesc != NULL; curdesc != NULL;
curdesc = curdesc->bd_next) { curdesc = curdesc->bd_next) {
if (curdesc->bd_next == NULL)
if (curdesc->bd_next == NULL) {
BHV_READ_UNLOCK(bhp);
return curdesc; return curdesc;
}
} }
BHV_READ_UNLOCK(bhp);
return NULL; return NULL;
} }
......
...@@ -152,13 +152,6 @@ typedef bhv_identity_t bhv_position_t; ...@@ -152,13 +152,6 @@ typedef bhv_identity_t bhv_position_t;
#define BHV_IDENTITY(bdp) ((bhv_identity_t *)(bdp)->bd_ops) #define BHV_IDENTITY(bdp) ((bhv_identity_t *)(bdp)->bd_ops)
#define BHV_POSITION(bdp) (BHV_IDENTITY(bdp)->bi_position) #define BHV_POSITION(bdp) (BHV_IDENTITY(bdp)->bi_position)
#define BHV_READ_LOCK(bhp)
#define BHV_READ_UNLOCK(bhp)
#define BHV_NOT_READ_LOCKED(bhp) 1
#define BHV_IS_WRITE_LOCKED(bhp) 1
#define BHV_NOT_WRITE_LOCKED(bhp) 1
extern void bhv_head_init(bhv_head_t *, char *); extern void bhv_head_init(bhv_head_t *, char *);
extern void bhv_head_destroy(bhv_head_t *); extern void bhv_head_destroy(bhv_head_t *);
extern void bhv_head_reinit(bhv_head_t *); extern void bhv_head_reinit(bhv_head_t *);
...@@ -180,8 +173,6 @@ extern void bhv_insert_initial(bhv_head_t *, bhv_desc_t *); ...@@ -180,8 +173,6 @@ extern void bhv_insert_initial(bhv_head_t *, bhv_desc_t *);
(bdp)->bd_next = NULL; \ (bdp)->bd_next = NULL; \
} }
#define BHV_DESC_INIT(so,A,B) bhv_desc_init(&(so->so_bhv),so,A,B)
/* /*
* Remove a behavior descriptor from a behavior chain. * Remove a behavior descriptor from a behavior chain.
*/ */
......
...@@ -130,7 +130,6 @@ xfs_find_handle( ...@@ -130,7 +130,6 @@ xfs_find_handle(
int lock_mode; int lock_mode;
/* need to get access to the xfs_inode to read the generation */ /* need to get access to the xfs_inode to read the generation */
VN_BHV_READ_LOCK(&(vp)->v_bh);
bhv = VNODE_TO_FIRST_BHV(vp); bhv = VNODE_TO_FIRST_BHV(vp);
ASSERT(bhv); ASSERT(bhv);
ip = XFS_BHVTOI(bhv); ip = XFS_BHVTOI(bhv);
...@@ -145,7 +144,6 @@ xfs_find_handle( ...@@ -145,7 +144,6 @@ xfs_find_handle(
handle.ha_fid.xfs_fid_ino = ip->i_ino; handle.ha_fid.xfs_fid_ino = ip->i_ino;
xfs_iunlock_map_shared(ip, lock_mode); xfs_iunlock_map_shared(ip, lock_mode);
VN_BHV_READ_UNLOCK(&(vp)->v_bh);
hsize = XFS_HSIZE(handle); hsize = XFS_HSIZE(handle);
} }
......
...@@ -97,40 +97,28 @@ typedef struct vfsops { ...@@ -97,40 +97,28 @@ typedef struct vfsops {
#define VFS_UNMOUNT(vfsp,f,cr, rv) \ #define VFS_UNMOUNT(vfsp,f,cr, rv) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \ rv = (*(VFS_FOPS(vfsp)->vfs_unmount))((vfsp)->vfs_fbhv, f, cr); \
rv = (*(VFS_FOPS(vfsp)->vfs_unmount))((vfsp)->vfs_fbhv, f, cr); \
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
#define VFS_ROOT(vfsp, vpp, rv) \ #define VFS_ROOT(vfsp, vpp, rv) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \
rv = (*(VFS_FOPS(vfsp)->vfs_root))((vfsp)->vfs_fbhv, vpp); \ rv = (*(VFS_FOPS(vfsp)->vfs_root))((vfsp)->vfs_fbhv, vpp); \
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
#define VFS_STATVFS(vfsp, sp, vp, rv) \ #define VFS_STATVFS(vfsp, sp, vp, rv) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \ rv = (*(VFS_FOPS(vfsp)->vfs_statvfs))((vfsp)->vfs_fbhv, sp, vp);\
rv = (*(VFS_FOPS(vfsp)->vfs_statvfs))((vfsp)->vfs_fbhv, sp, vp); \
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
#define VFS_SYNC(vfsp, flag, cr, rv) \ #define VFS_SYNC(vfsp, flag, cr, rv) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \
rv = (*(VFS_FOPS(vfsp)->vfs_sync))((vfsp)->vfs_fbhv, flag, cr); \ rv = (*(VFS_FOPS(vfsp)->vfs_sync))((vfsp)->vfs_fbhv, flag, cr); \
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
#define VFS_VGET(vfsp, vpp, fidp, rv) \ #define VFS_VGET(vfsp, vpp, fidp, rv) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \
rv = (*(VFS_FOPS(vfsp)->vfs_vget))((vfsp)->vfs_fbhv, vpp, fidp); \ rv = (*(VFS_FOPS(vfsp)->vfs_vget))((vfsp)->vfs_fbhv, vpp, fidp); \
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
#define VFS_INIT_VNODE(vfsp, vp, bhv, unlock) \ #define VFS_INIT_VNODE(vfsp, vp, bhv, unlock) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \
(*(VFS_FOPS(vfsp)->vfs_init_vnode))((vfsp)->vfs_fbhv, vp, bhv, unlock);\ (*(VFS_FOPS(vfsp)->vfs_init_vnode))((vfsp)->vfs_fbhv, vp, bhv, unlock);\
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
/* No behavior lock here */ /* No behavior lock here */
...@@ -139,9 +127,7 @@ typedef struct vfsops { ...@@ -139,9 +127,7 @@ typedef struct vfsops {
#define VFS_DMAPI_FSYS_VECTOR(vfsp, df, rv) \ #define VFS_DMAPI_FSYS_VECTOR(vfsp, df, rv) \
{ \ { \
BHV_READ_LOCK(&(vfsp)->vfs_bh); \
rv = (*(VFS_FOPS(vfsp)->vfs_dmapi_fsys_vector))((vfsp)->vfs_fbhv, df); \ rv = (*(VFS_FOPS(vfsp)->vfs_dmapi_fsys_vector))((vfsp)->vfs_fbhv, df); \
BHV_READ_UNLOCK(&(vfsp)->vfs_bh); \
} }
......
...@@ -98,11 +98,6 @@ typedef enum { ...@@ -98,11 +98,6 @@ typedef enum {
#define VNODE_TO_FIRST_BHV(vp) (BHV_HEAD_FIRST(&(vp)->v_bh)) #define VNODE_TO_FIRST_BHV(vp) (BHV_HEAD_FIRST(&(vp)->v_bh))
#define VN_BHV_HEAD(vp) ((bhv_head_t *)(&((vp)->v_bh))) #define VN_BHV_HEAD(vp) ((bhv_head_t *)(&((vp)->v_bh)))
#define VN_BHV_READ_LOCK(bhp) BHV_READ_LOCK(bhp)
#define VN_BHV_READ_UNLOCK(bhp) BHV_READ_UNLOCK(bhp)
#define VN_BHV_WRITE_LOCK(bhp) BHV_WRITE_LOCK(bhp)
#define VN_BHV_NOT_READ_LOCKED(bhp) BHV_NOT_READ_LOCKED(bhp)
#define VN_BHV_NOT_WRITE_LOCKED(bhp) BHV_NOT_WRITE_LOCKED(bhp)
#define vn_bhv_head_init(bhp,name) bhv_head_init(bhp,name) #define vn_bhv_head_init(bhp,name) bhv_head_init(bhp,name)
#define vn_bhv_remove(bhp,bdp) bhv_remove(bhp,bdp) #define vn_bhv_remove(bhp,bdp) bhv_remove(bhp,bdp)
#define vn_bhv_lookup(bhp,ops) bhv_lookup(bhp,ops) #define vn_bhv_lookup(bhp,ops) bhv_lookup(bhp,ops)
...@@ -274,187 +269,130 @@ typedef struct vnodeops { ...@@ -274,187 +269,130 @@ typedef struct vnodeops {
#define VOP_READ(vp,file,iov,segs,offset,cr,rv) \ #define VOP_READ(vp,file,iov,segs,offset,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_read, vp)((vp)->v_fbhv,file,iov,segs,offset,cr); \ rv = _VOP_(vop_read, vp)((vp)->v_fbhv,file,iov,segs,offset,cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_WRITE(vp,file,iov,segs,offset,cr,rv) \ #define VOP_WRITE(vp,file,iov,segs,offset,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_write, vp)((vp)->v_fbhv,file,iov,segs,offset,cr);\ rv = _VOP_(vop_write, vp)((vp)->v_fbhv,file,iov,segs,offset,cr);\
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_SENDFILE(vp,f,of,cnt,act,targ,cr,rv) \ #define VOP_SENDFILE(vp,f,of,cnt,act,targ,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_sendfile, vp)((vp)->v_fbhv,f,of,cnt,act,targ,cr);\ rv = _VOP_(vop_sendfile, vp)((vp)->v_fbhv,f,of,cnt,act,targ,cr);\
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_BMAP(vp,of,sz,rw,b,n,rv) \ #define VOP_BMAP(vp,of,sz,rw,b,n,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_bmap, vp)((vp)->v_fbhv,of,sz,rw,b,n); \ rv = _VOP_(vop_bmap, vp)((vp)->v_fbhv,of,sz,rw,b,n); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_OPEN(vp, cr, rv) \ #define VOP_OPEN(vp, cr, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_open, vp)((vp)->v_fbhv, cr); \ rv = _VOP_(vop_open, vp)((vp)->v_fbhv, cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_GETATTR(vp, vap, f, cr, rv) \ #define VOP_GETATTR(vp, vap, f, cr, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_getattr, vp)((vp)->v_fbhv, vap, f, cr); \ rv = _VOP_(vop_getattr, vp)((vp)->v_fbhv, vap, f, cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_SETATTR(vp, vap, f, cr, rv) \ #define VOP_SETATTR(vp, vap, f, cr, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_setattr, vp)((vp)->v_fbhv, vap, f, cr); \ rv = _VOP_(vop_setattr, vp)((vp)->v_fbhv, vap, f, cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_ACCESS(vp, mode, cr, rv) \ #define VOP_ACCESS(vp, mode, cr, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_access, vp)((vp)->v_fbhv, mode, cr); \ rv = _VOP_(vop_access, vp)((vp)->v_fbhv, mode, cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_LOOKUP(vp,d,vpp,f,rdir,cr,rv) \ #define VOP_LOOKUP(vp,d,vpp,f,rdir,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_lookup, vp)((vp)->v_fbhv,d,vpp,f,rdir,cr); \ rv = _VOP_(vop_lookup, vp)((vp)->v_fbhv,d,vpp,f,rdir,cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_CREATE(dvp,d,vap,vpp,cr,rv) \ #define VOP_CREATE(dvp,d,vap,vpp,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(dvp)->v_bh); \
rv = _VOP_(vop_create, dvp)((dvp)->v_fbhv,d,vap,vpp,cr); \ rv = _VOP_(vop_create, dvp)((dvp)->v_fbhv,d,vap,vpp,cr); \
VN_BHV_READ_UNLOCK(&(dvp)->v_bh); \
} }
#define VOP_REMOVE(dvp,d,cr,rv) \ #define VOP_REMOVE(dvp,d,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(dvp)->v_bh); \
rv = _VOP_(vop_remove, dvp)((dvp)->v_fbhv,d,cr); \ rv = _VOP_(vop_remove, dvp)((dvp)->v_fbhv,d,cr); \
VN_BHV_READ_UNLOCK(&(dvp)->v_bh); \
} }
#define VOP_LINK(tdvp,fvp,d,cr,rv) \ #define VOP_LINK(tdvp,fvp,d,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(tdvp)->v_bh); \
rv = _VOP_(vop_link, tdvp)((tdvp)->v_fbhv,fvp,d,cr); \ rv = _VOP_(vop_link, tdvp)((tdvp)->v_fbhv,fvp,d,cr); \
VN_BHV_READ_UNLOCK(&(tdvp)->v_bh); \
} }
#define VOP_RENAME(fvp,fnm,tdvp,tnm,cr,rv) \ #define VOP_RENAME(fvp,fnm,tdvp,tnm,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(fvp)->v_bh); \
rv = _VOP_(vop_rename, fvp)((fvp)->v_fbhv,fnm,tdvp,tnm,cr); \ rv = _VOP_(vop_rename, fvp)((fvp)->v_fbhv,fnm,tdvp,tnm,cr); \
VN_BHV_READ_UNLOCK(&(fvp)->v_bh); \
} }
#define VOP_MKDIR(dp,d,vap,vpp,cr,rv) \ #define VOP_MKDIR(dp,d,vap,vpp,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(dp)->v_bh); \
rv = _VOP_(vop_mkdir, dp)((dp)->v_fbhv,d,vap,vpp,cr); \ rv = _VOP_(vop_mkdir, dp)((dp)->v_fbhv,d,vap,vpp,cr); \
VN_BHV_READ_UNLOCK(&(dp)->v_bh); \
} }
#define VOP_RMDIR(dp,d,cr,rv) \ #define VOP_RMDIR(dp,d,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(dp)->v_bh); \
rv = _VOP_(vop_rmdir, dp)((dp)->v_fbhv,d,cr); \ rv = _VOP_(vop_rmdir, dp)((dp)->v_fbhv,d,cr); \
VN_BHV_READ_UNLOCK(&(dp)->v_bh); \
} }
#define VOP_READDIR(vp,uiop,cr,eofp,rv) \ #define VOP_READDIR(vp,uiop,cr,eofp,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_readdir, vp)((vp)->v_fbhv,uiop,cr,eofp); \ rv = _VOP_(vop_readdir, vp)((vp)->v_fbhv,uiop,cr,eofp); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_SYMLINK(dvp,d,vap,tnm,vpp,cr,rv) \ #define VOP_SYMLINK(dvp,d,vap,tnm,vpp,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(dvp)->v_bh); \ rv = _VOP_(vop_symlink, dvp) ((dvp)->v_fbhv,d,vap,tnm,vpp,cr); \
rv = _VOP_(vop_symlink, dvp) ((dvp)->v_fbhv,d,vap,tnm,vpp,cr); \
VN_BHV_READ_UNLOCK(&(dvp)->v_bh); \
} }
#define VOP_READLINK(vp,uiop,cr,rv) \ #define VOP_READLINK(vp,uiop,cr,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_readlink, vp)((vp)->v_fbhv,uiop,cr); \ rv = _VOP_(vop_readlink, vp)((vp)->v_fbhv,uiop,cr); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_FSYNC(vp,f,cr,b,e,rv) \ #define VOP_FSYNC(vp,f,cr,b,e,rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_fsync, vp)((vp)->v_fbhv,f,cr,b,e); \ rv = _VOP_(vop_fsync, vp)((vp)->v_fbhv,f,cr,b,e); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_INACTIVE(vp, cr, rv) \ #define VOP_INACTIVE(vp, cr, rv) \
{ /* vnode not reference-able, so no need to lock chain */ \ { \
rv = _VOP_(vop_inactive, vp)((vp)->v_fbhv, cr); \ rv = _VOP_(vop_inactive, vp)((vp)->v_fbhv, cr); \
} }
#define VOP_RELEASE(vp, rv) \ #define VOP_RELEASE(vp, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_release, vp)((vp)->v_fbhv); \ rv = _VOP_(vop_release, vp)((vp)->v_fbhv); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_FID2(vp, fidp, rv) \ #define VOP_FID2(vp, fidp, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_fid2, vp)((vp)->v_fbhv, fidp); \ rv = _VOP_(vop_fid2, vp)((vp)->v_fbhv, fidp); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_RWLOCK(vp,i) \ #define VOP_RWLOCK(vp,i) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
(void)_VOP_(vop_rwlock, vp)((vp)->v_fbhv, i); \ (void)_VOP_(vop_rwlock, vp)((vp)->v_fbhv, i); \
/* "allow" is done by rwunlock */ \
} }
#define VOP_RWLOCK_TRY(vp,i) \ #define VOP_RWLOCK_TRY(vp,i) \
_VOP_(vop_rwlock, vp)((vp)->v_fbhv, i) _VOP_(vop_rwlock, vp)((vp)->v_fbhv, i)
#define VOP_RWUNLOCK(vp,i) \ #define VOP_RWUNLOCK(vp,i) \
{ /* "prevent" was done by rwlock */ \ { \
(void)_VOP_(vop_rwunlock, vp)((vp)->v_fbhv, i); \ (void)_VOP_(vop_rwunlock, vp)((vp)->v_fbhv, i); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_RECLAIM(vp, rv) \ #define VOP_RECLAIM(vp, rv) \
{ /* vnode not reference-able, so no need to lock chain */ \ { \
rv = _VOP_(vop_reclaim, vp)((vp)->v_fbhv); \ rv = _VOP_(vop_reclaim, vp)((vp)->v_fbhv); \
} }
#define VOP_ATTR_GET(vp, name, val, vallenp, fl, cred, rv) \ #define VOP_ATTR_GET(vp, name, val, vallenp, fl, cred, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_attr_get, vp)((vp)->v_fbhv,name,val,vallenp,fl,cred); \ rv = _VOP_(vop_attr_get, vp)((vp)->v_fbhv,name,val,vallenp,fl,cred); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_ATTR_SET(vp, name, val, vallen, fl, cred, rv) \ #define VOP_ATTR_SET(vp, name, val, vallen, fl, cred, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_attr_set, vp)((vp)->v_fbhv,name,val,vallen,fl,cred); \ rv = _VOP_(vop_attr_set, vp)((vp)->v_fbhv,name,val,vallen,fl,cred); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_ATTR_REMOVE(vp, name, flags, cred, rv) \ #define VOP_ATTR_REMOVE(vp, name, flags, cred, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_attr_remove, vp)((vp)->v_fbhv,name,flags,cred); \ rv = _VOP_(vop_attr_remove, vp)((vp)->v_fbhv,name,flags,cred); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_ATTR_LIST(vp, buf, buflen, fl, cursor, cred, rv) \ #define VOP_ATTR_LIST(vp, buf, buflen, fl, cursor, cred, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_attr_list, vp)((vp)->v_fbhv,buf,buflen,fl,cursor,cred);\ rv = _VOP_(vop_attr_list, vp)((vp)->v_fbhv,buf,buflen,fl,cursor,cred);\
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_LINK_REMOVED(vp, dvp, linkzero) \ #define VOP_LINK_REMOVED(vp, dvp, linkzero) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
(void)_VOP_(vop_link_removed, vp)((vp)->v_fbhv, dvp, linkzero); \ (void)_VOP_(vop_link_removed, vp)((vp)->v_fbhv, dvp, linkzero); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_VNODE_CHANGE(vp, cmd, val) \ #define VOP_VNODE_CHANGE(vp, cmd, val) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
(void)_VOP_(vop_vnode_change, vp)((vp)->v_fbhv,cmd,val); \ (void)_VOP_(vop_vnode_change, vp)((vp)->v_fbhv,cmd,val); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
/* /*
* These are page cache functions that now go thru VOPs. * These are page cache functions that now go thru VOPs.
...@@ -462,39 +400,29 @@ typedef struct vnodeops { ...@@ -462,39 +400,29 @@ typedef struct vnodeops {
*/ */
#define VOP_TOSS_PAGES(vp, first, last, fiopt) \ #define VOP_TOSS_PAGES(vp, first, last, fiopt) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
_VOP_(vop_tosspages, vp)((vp)->v_fbhv,first, last, fiopt); \ _VOP_(vop_tosspages, vp)((vp)->v_fbhv,first, last, fiopt); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
/* /*
* 'last' parameter is unused and left in for IRIX compatibility * 'last' parameter is unused and left in for IRIX compatibility
*/ */
#define VOP_FLUSHINVAL_PAGES(vp, first, last, fiopt) \ #define VOP_FLUSHINVAL_PAGES(vp, first, last, fiopt) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
_VOP_(vop_flushinval_pages, vp)((vp)->v_fbhv,first,last,fiopt); \ _VOP_(vop_flushinval_pages, vp)((vp)->v_fbhv,first,last,fiopt); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
/* /*
* 'last' parameter is unused and left in for IRIX compatibility * 'last' parameter is unused and left in for IRIX compatibility
*/ */
#define VOP_FLUSH_PAGES(vp, first, last, flags, fiopt, rv) \ #define VOP_FLUSH_PAGES(vp, first, last, flags, fiopt, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_flush_pages, vp)((vp)->v_fbhv,first,last,flags,fiopt);\ rv = _VOP_(vop_flush_pages, vp)((vp)->v_fbhv,first,last,flags,fiopt);\
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_IOCTL(vp, inode, filp, cmd, arg, rv) \ #define VOP_IOCTL(vp, inode, filp, cmd, arg, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_ioctl, vp)((vp)->v_fbhv,inode,filp,cmd,arg); \ rv = _VOP_(vop_ioctl, vp)((vp)->v_fbhv,inode,filp,cmd,arg); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
#define VOP_IFLUSH(vp, flags, rv) \ #define VOP_IFLUSH(vp, flags, rv) \
{ \ { \
VN_BHV_READ_LOCK(&(vp)->v_bh); \
rv = _VOP_(vop_iflush, vp)((vp)->v_fbhv, flags); \ rv = _VOP_(vop_iflush, vp)((vp)->v_fbhv, flags); \
VN_BHV_READ_UNLOCK(&(vp)->v_bh); \
} }
/* /*
......
...@@ -69,15 +69,12 @@ xfs_swapext( ...@@ -69,15 +69,12 @@ xfs_swapext(
} }
bhp = VN_BHV_HEAD(vp); bhp = VN_BHV_HEAD(vp);
VN_BHV_READ_LOCK(bhp);
bdp = vn_bhv_lookup(bhp, &xfs_vnodeops); bdp = vn_bhv_lookup(bhp, &xfs_vnodeops);
if (bdp == NULL) { if (bdp == NULL) {
VN_BHV_READ_UNLOCK(bhp);
error = XFS_ERROR(EBADF); error = XFS_ERROR(EBADF);
goto error0; goto error0;
} else { } else {
ip = XFS_BHVTOI(bdp); ip = XFS_BHVTOI(bdp);
VN_BHV_READ_UNLOCK(bhp);
} }
if (((tfp = fget((int)sx.sx_fdtmp)) == NULL) || if (((tfp = fget((int)sx.sx_fdtmp)) == NULL) ||
...@@ -87,15 +84,12 @@ xfs_swapext( ...@@ -87,15 +84,12 @@ xfs_swapext(
} }
tbhp = VN_BHV_HEAD(tvp); tbhp = VN_BHV_HEAD(tvp);
VN_BHV_READ_LOCK(tbhp);
tbdp = vn_bhv_lookup(tbhp, &xfs_vnodeops); tbdp = vn_bhv_lookup(tbhp, &xfs_vnodeops);
if (tbdp == NULL) { if (tbdp == NULL) {
VN_BHV_READ_UNLOCK(tbhp);
error = XFS_ERROR(EBADF); error = XFS_ERROR(EBADF);
goto error0; goto error0;
} else { } else {
tip = XFS_BHVTOI(tbdp); tip = XFS_BHVTOI(tbdp);
VN_BHV_READ_UNLOCK(tbhp);
} }
if (ip->i_ino == tip->i_ino) { if (ip->i_ino == tip->i_ino) {
......
...@@ -4162,8 +4162,6 @@ xfsidbg_xinodes_quiesce(xfs_mount_t *mp) ...@@ -4162,8 +4162,6 @@ xfsidbg_xinodes_quiesce(xfs_mount_t *mp)
} }
if (!(ip->i_flags & XFS_IQUIESCE)) { if (!(ip->i_flags & XFS_IQUIESCE)) {
kdb_printf("ip 0x%p not quiesced\n", ip); kdb_printf("ip 0x%p not quiesced\n", ip);
} else if (!BHV_IS_WRITE_LOCKED(VN_BHV_HEAD(XFS_ITOV(ip)))) {
kdb_printf("ip 0x%p not write locked\n", ip);
} }
ip = ip->i_mnext; ip = ip->i_mnext;
} while (ip != mp->m_inodes); } while (ip != mp->m_inodes);
......
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