From c90134fd1f1b5cd16052c5fdc91ddd1b1ac6e19a Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Wed, 4 Nov 2009 18:09:51 +0000 Subject: [PATCH] Move vnode macros to their own directories The tree is inconsistent whether macros for access to vnodes are provided by the OS directories, or in afs_osi.h. This makes things very confusing, especially in the Linux case where macros are provided in afs_osi.h, and then promptly redefined in LINUX/osi_machdep.h Adopt a convention where default macros are conditionally provided by osi_machdep.h. Where these aren't wanted, they should be disabled in osi_machdep.h, and OS specific versions provided in the individual OS's directory. Change-Id: I47bc969af3f6670db9348689b5ce60181fd44f21 Reviewed-on: http://gerrit.openafs.org/784 Tested-by: Marc Dionne Tested-by: Derrick Brashear Reviewed-by: Derrick Brashear --- src/afs/DARWIN/osi_machdep.h | 18 ++++++++++++++++++ src/afs/FBSD/osi_machdep.h | 24 +++++++++++++----------- src/afs/LINUX/osi_machdep.h | 6 +----- src/afs/NBSD/osi_machdep.h | 10 ++++++++++ src/afs/OBSD/osi_machdep.h | 8 ++++++++ src/afs/afs_osi.h | 35 +++++++++-------------------------- 6 files changed, 59 insertions(+), 42 deletions(-) diff --git a/src/afs/DARWIN/osi_machdep.h b/src/afs/DARWIN/osi_machdep.h index a82d38897..3fe44ffc6 100644 --- a/src/afs/DARWIN/osi_machdep.h +++ b/src/afs/DARWIN/osi_machdep.h @@ -238,6 +238,24 @@ uio_t afsio_darwin_partialcopy(uio_t auio, int size); #define ifaddr_withnet(x) ifa_ifwithnet(x) #endif +/* Vnode related macros */ + +#if defined(AFS_DARWIN80_ENV) +extern int afs_vfs_typenum; +# define vType(vc) vnode_vtype(AFSTOV(vc)) +# define vSetVfsp(vc, vfsp) +# define vSetType(vc, type) (vc)->f.m.Type = (type) +# define SetAfsVnode(vn) /* nothing; done in getnewvnode() */ +# define IsAfsVnode(v) (vfs_typenum(vnode_mount((v))) == afs_vfs_typenum) +#else +extern int (**afs_vnodeop_p) (); +# define vType(vc) AFSTOV(vc)->v_type +# define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) +# define vSetType(vc, type) AFSTOV(vc)->v_type = (type) +# define IsAfsVnode(v) ((v)->v_op == afs_vnodeop_p) +# define SetAfsVnode(v) /* nothing; done in getnewvnode() */ +#endif + #endif /* KERNEL */ #endif /* _OSI_MACHDEP_H_ */ diff --git a/src/afs/FBSD/osi_machdep.h b/src/afs/FBSD/osi_machdep.h index 0d7f81cfc..7086c4ffb 100644 --- a/src/afs/FBSD/osi_machdep.h +++ b/src/afs/FBSD/osi_machdep.h @@ -40,12 +40,18 @@ typedef struct proc afs_proc_t; #endif #define osi_vnhold(avc,r) vref(AFSTOV(avc)) -#undef vSetVfsp -#define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) -#undef vSetType -#define vSetType(vc, type) AFSTOV(vc)->v_type = (type) -#undef vType -#define vType(vc) AFSTOV(vc)->v_type + +#define vType(vc) AFSTOV(vc)->v_type +#define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) +#define vSetType(vc, type) AFSTOV(vc)->v_type = (type) +#if defined(AFS_FBSD60_ENV) && defined(KERNEL) +extern struct vop_vector afs_vnodeops; +# define IsAfsVnode(v) ((v)->v_op == &afs_vnodeops) +#else +extern int (**afs_vnodeop_p) (); +# define IsAfsVnode(v) ((v)->v_op == afs_vnodeop_p) +#endif +#define SetAfsVnode(v) /* nothing; done in getnewvnode() */ #undef gop_lookupname #define gop_lookupname osi_lookupname @@ -72,11 +78,7 @@ typedef struct proc afs_proc_t; #endif #define VN_HOLD(vp) VREF(vp) -#ifdef AFS_FBSD60_ENV -#undef IsAfsVnode -#define IsAfsVnode(v) ((v)->v_op == &afs_vnodeops) -extern struct vop_vector afs_vnodeops; -#endif + #undef osi_getpid #if defined(AFS_FBSD50_ENV) diff --git a/src/afs/LINUX/osi_machdep.h b/src/afs/LINUX/osi_machdep.h index 03e12b8d5..fb8a5f507 100644 --- a/src/afs/LINUX/osi_machdep.h +++ b/src/afs/LINUX/osi_machdep.h @@ -113,14 +113,10 @@ static inline time_t osi_Time(void) { #define afs_suser(x) capable(CAP_SYS_ADMIN) #define wakeup afs_osi_Wakeup -#undef vType #define vType(V) ((AFSTOV((V)))->i_mode & S_IFMT) -#undef vSetType #define vSetType(V, type) AFSTOV((V))->i_mode = ((type) | (AFSTOV((V))->i_mode & ~S_IFMT)) /* preserve mode */ - -#undef IsAfsVnode +#define vSetVfsp(V, vfsp) /* unused */ #define IsAfsVnode(V) ((V)->i_sb == afs_globalVFS) /* test superblock instead */ -#undef SetAfsVnode #define SetAfsVnode(V) /* unnecessary */ /* We often need to pretend we're in user space to get memory transfers diff --git a/src/afs/NBSD/osi_machdep.h b/src/afs/NBSD/osi_machdep.h index a8b659bdf..1a8fc7f14 100644 --- a/src/afs/NBSD/osi_machdep.h +++ b/src/afs/NBSD/osi_machdep.h @@ -85,6 +85,16 @@ extern thread_t afs_global_owner; #define NETPRI #undef USERPRI #define USERPRI + +/* Vnode related macros */ + +extern int (**afs_vnodeop_p) (); +#define vType(vc) AFSTOV(vc)->v_type +#define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) +#define vSetType(vc, type) AFSTOV(vc)->v_type = (type) +#define IsAfsVnode(v) ((v)->v_op == afs_vnodeop_p) +#define SetAfsVnode(v) /* nothing; done in getnewvnode() */ + #endif /* KERNEL */ #endif /* _OSI_MACHDEP_H_ */ diff --git a/src/afs/OBSD/osi_machdep.h b/src/afs/OBSD/osi_machdep.h index b3a6f5ab5..906ec104d 100644 --- a/src/afs/OBSD/osi_machdep.h +++ b/src/afs/OBSD/osi_machdep.h @@ -226,4 +226,12 @@ extern struct lock afs_global_lock; #define USERPRI splx(splvar) #endif /* KERNEL */ +/* vnodes */ +extern int (**afs_vnodeop_p) (); +#define vType(vc) AFSTOV(vc)->v_type +#define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) +#define vSetType(vc, type) AFSTOV(vc)->v_type = (type) +#define IsAfsVnode(v) ((v)->v_op == afs_vnodeop_p) +#define SetAfsVnode(v) /* nothing; done in getnewvnode() */ + #endif /* _OSI_MACHDEP_H_ */ diff --git a/src/afs/afs_osi.h b/src/afs/afs_osi.h index bc352b6d1..5ecfe98ea 100644 --- a/src/afs/afs_osi.h +++ b/src/afs/afs_osi.h @@ -122,34 +122,17 @@ struct afs_osi_WaitHandle { #endif /* - * Vnode related macros + * Default vnode related macros + * + * Darwin, all of the BSDs, and Linux have their own */ -#if defined(AFS_DARWIN80_ENV) -#define vType(vc) vnode_vtype(AFSTOV(vc)) -#define vSetVfsp(vc, vfsp) -#define vSetType(vc, type) (vc)->f.m.Type = (type) -extern int afs_vfs_typenum; -#define SetAfsVnode(vn) /* nothing; done in getnewvnode() */ -#define IsAfsVnode(v) (vfs_typenum(vnode_mount((v))) == afs_vfs_typenum) -#else -#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) || defined(AFS_LINUX22_ENV) -#define vSetVfsp(vc, vfsp) AFSTOV(vc)->v_mount = (vfsp) -#define vSetType(vc, type) AFSTOV(vc)->v_type = (type) -#define vType(vc) AFSTOV(vc)->v_type -#else -#define vType(vc) (vc)->v.v_type -#define vSetType(vc,type) (vc)->v.v_type = (type) -#define vSetVfsp(vc,vfsp) (vc)->v.v_vfsp = (vfsp) -#endif -#if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV) -extern int (**afs_vnodeop_p) (); -#define IsAfsVnode(v) ((v)->v_op == afs_vnodeop_p) -#define SetAfsVnode(v) /* nothing; done in getnewvnode() */ -#else +#if !defined(AFS_DARWIN_ENV) && !defined(AFS_XBSD_ENV) && !defined(AFS_LINUX20_ENV) +# define vType(vc) (vc)->v.v_type +# define vSetType(vc,type) (vc)->v.v_type = (type) +# define vSetVfsp(vc,vfsp) (vc)->v.v_vfsp = (vfsp) extern struct vnodeops *afs_ops; -#define IsAfsVnode(v) ((v)->v_op == afs_ops) -#define SetAfsVnode(v) (v)->v_op = afs_ops -#endif +# define IsAfsVnode(v) ((v)->v_op == afs_ops) +# define SetAfsVnode(v) (v)->v_op = afs_ops #endif /* -- 2.39.5