mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 07:20:11 +00:00
OpenBSD: Replace "vnodeop_desc" with "vops" in kernel module.
In OpenBSD 4.9, the vnode operations vector in the "vnode" struct was changed from using a "vnodeop_desc" struct to a new "vops" struct. This patch makes the appropriate changes to the OpenBSD kernel module support to accommodate the change. Change-Id: Ib47259e1213e29658a691ce3a53d7ac88e8d746b Reviewed-on: http://gerrit.openafs.org/8928 Reviewed-by: Derrick Brashear <shadow@your-file-system.com> Tested-by: BuildBot <buildbot@rampaginggeek.com>
This commit is contained in:
parent
fd06af146d
commit
bb42c02ce5
@ -230,11 +230,16 @@ extern struct lock afs_global_lock;
|
||||
} while (0)
|
||||
|
||||
/* vnodes */
|
||||
#if defined(AFS_OBSD49_ENV)
|
||||
extern struct vops afs_vops;
|
||||
#define IsAfsVnode(v) ((v)->v_op == &afs_vops)
|
||||
#else
|
||||
extern int (**afs_vnodeop_p) ();
|
||||
#define IsAfsVnode(v) ((v)->v_op == afs_vnodeop_p)
|
||||
#endif
|
||||
#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() */
|
||||
|
||||
#define osi_procname(procname, size) strncpy(procname, curproc->p_comm, size)
|
||||
|
@ -309,10 +309,18 @@ afs_badcall(struct proc *p, void *xx, register_t * yy)
|
||||
return ENOSYS;
|
||||
}
|
||||
|
||||
#if defined(AFS_OBSD49_ENV)
|
||||
extern struct vops afs_vops;
|
||||
#endif
|
||||
|
||||
void
|
||||
afs_obsd_getnewvnode(struct vcache *tvc)
|
||||
{
|
||||
#if defined(AFS_OBSD49_ENV)
|
||||
while (getnewvnode(VT_AFS, afs_globalVFS, &afs_vops, &tvc->v)) {
|
||||
#else
|
||||
while (getnewvnode(VT_AFS, afs_globalVFS, afs_vnodeop_p, &tvc->v)) {
|
||||
#endif
|
||||
/* no vnodes available, force an alloc (limits be damned)! */
|
||||
desiredvnodes++;
|
||||
}
|
||||
@ -441,8 +449,10 @@ afs_vfs_load(struct lkm_table *lkmtp, int cmd)
|
||||
{
|
||||
extern char *memname[];
|
||||
|
||||
#if ! defined(AFS_OBSD49_ENV)
|
||||
vfs_opv_init_explicit(&afs_vnodeop_opv_desc);
|
||||
vfs_opv_init_default(&afs_vnodeop_opv_desc);
|
||||
#endif
|
||||
if (memname[M_AFSGENERIC] == NULL)
|
||||
memname[M_AFSGENERIC] = afsgenmem;
|
||||
if (memname[M_AFSFID] == NULL)
|
||||
|
@ -151,6 +151,46 @@ int afs_obsd_advlock(void *);
|
||||
((int (*) __P((void *)))eopnotsupp)
|
||||
#define afs_obsd_reallocblks afs_obsd_opnotsupp
|
||||
|
||||
#if defined(AFS_OBSD49_ENV)
|
||||
|
||||
struct vops afs_vops = {
|
||||
.vop_lookup = afs_obsd_lookup,
|
||||
.vop_create = afs_obsd_create,
|
||||
.vop_mknod = afs_obsd_mknod,
|
||||
.vop_open = afs_obsd_open,
|
||||
.vop_close = afs_obsd_close,
|
||||
.vop_access = afs_obsd_access,
|
||||
.vop_getattr = afs_obsd_getattr,
|
||||
.vop_setattr = afs_obsd_setattr,
|
||||
.vop_read = afs_obsd_read,
|
||||
.vop_write = afs_obsd_write,
|
||||
.vop_ioctl = afs_obsd_ioctl,
|
||||
.vop_poll = afs_obsd_select,
|
||||
.vop_fsync = afs_obsd_fsync,
|
||||
.vop_remove = afs_obsd_remove,
|
||||
.vop_link = afs_obsd_link,
|
||||
.vop_rename = afs_obsd_rename,
|
||||
.vop_mkdir = afs_obsd_mkdir,
|
||||
.vop_rmdir = afs_obsd_rmdir,
|
||||
.vop_symlink = afs_obsd_symlink,
|
||||
.vop_readdir = afs_obsd_readdir,
|
||||
.vop_readlink = afs_obsd_readlink,
|
||||
.vop_abortop = vop_generic_abortop,
|
||||
.vop_inactive = afs_obsd_inactive,
|
||||
.vop_reclaim = afs_obsd_reclaim,
|
||||
.vop_lock = afs_obsd_lock,
|
||||
.vop_unlock = afs_obsd_unlock,
|
||||
.vop_bmap = afs_obsd_bmap,
|
||||
.vop_strategy = afs_obsd_strategy,
|
||||
.vop_print = afs_obsd_print,
|
||||
.vop_islocked = afs_obsd_islocked,
|
||||
.vop_pathconf = afs_obsd_pathconf,
|
||||
.vop_advlock = afs_obsd_advlock,
|
||||
.vop_bwrite = vop_generic_bwrite,
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
/* Global vfs data structures for AFS. */
|
||||
int (**afs_vnodeop_p) __P((void *));
|
||||
struct vnodeopv_entry_desc afs_vnodeop_entries[] = {
|
||||
@ -202,6 +242,8 @@ struct vnodeopv_entry_desc afs_vnodeop_entries[] = {
|
||||
struct vnodeopv_desc afs_vnodeop_opv_desc =
|
||||
{ &afs_vnodeop_p, afs_vnodeop_entries };
|
||||
|
||||
#endif
|
||||
|
||||
#define GETNAME() \
|
||||
struct componentname *cnp = ap->a_cnp; \
|
||||
char *name; \
|
||||
@ -676,7 +718,11 @@ afs_obsd_rename(void *v)
|
||||
if ((fcnp->cn_flags & SAVESTART) == 0)
|
||||
panic("afs_rename: lost from startdir");
|
||||
fcnp->cn_nameiop = DELETE;
|
||||
#if defined(AFS_OBSD49_ENV)
|
||||
(void)vfs_relookup(fdvp, &fvp, fcnp);
|
||||
#else
|
||||
(void)relookup(fdvp, &fvp, fcnp);
|
||||
#endif
|
||||
return (VOP_REMOVE(fdvp, fvp, fcnp));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user