/* Global vfs data structures for AFS. */
int (**afs_vnodeop_p) __P((void *));
struct vnodeopv_entry_desc afs_vnodeop_entries[] = {
+#ifdef AFS_OBSD44_ENV /* feel free to zero in on this */
+ {&vop_default_desc, eopnotsupp},
+#else
{&vop_default_desc, vn_default_error},
+#endif
{&vop_lookup_desc, afs_nbsd_lookup}, /* lookup */
{&vop_create_desc, afs_nbsd_create}, /* create */
{&vop_mknod_desc, afs_nbsd_mknod}, /* mknod */
#define GETNAME() \
struct componentname *cnp = ap->a_cnp; \
char *name; \
- MALLOC(name, char *, cnp->cn_namelen+1, M_TEMP, M_WAITOK); \
+ BSD_KMALLOC(name, char *, cnp->cn_namelen+1, M_TEMP, M_WAITOK); \
bcopy(cnp->cn_nameptr, name, cnp->cn_namelen); \
name[cnp->cn_namelen] = '\0'
-#define DROPNAME() FREE(name, M_TEMP)
+#define DROPNAME() BSD_KFREE(name, M_TEMP)
#ifdef AFS_OBSD36_ENV
#define DROPCNP(cnp) pool_put(&namei_pool, (cnp)->cn_pnbuf)
if ((code = vn_lock(fvp, LK_EXCLUSIVE | LK_RETRY, curproc)))
goto abortit;
- MALLOC(fname, char *, fcnp->cn_namelen + 1, M_TEMP, M_WAITOK);
+ BSD_KMALLOC(fname, char *, fcnp->cn_namelen + 1, M_TEMP, M_WAITOK);
bcopy(fcnp->cn_nameptr, fname, fcnp->cn_namelen);
fname[fcnp->cn_namelen] = '\0';
- MALLOC(tname, char *, tcnp->cn_namelen + 1, M_TEMP, M_WAITOK);
+ BSD_KMALLOC(tname, char *, tcnp->cn_namelen + 1, M_TEMP, M_WAITOK);
bcopy(tcnp->cn_nameptr, tname, tcnp->cn_namelen);
tname[tcnp->cn_namelen] = '\0';
AFS_GUNLOCK();
VOP_UNLOCK(fvp, 0, curproc);
- FREE(fname, M_TEMP);
- FREE(tname, M_TEMP);
+ BSD_KFREE(fname, M_TEMP);
+ BSD_KFREE(tname, M_TEMP);
if (code)
goto abortit; /* XXX */
if (tdvp == tvp)
int haveGlock = ISAFS_GLOCK();
int haveVlock = CheckLock(&afs_xvcache);
+#if 0
+ printf("reclaim usecount %d\n", vp->v_usecount);
+ /* OK, there are no internal vrefCounts, so there shouldn't
+ * be any more refs here. */
+ vp->v_data = NULL; /* remove from vnode */
+ avc->v = NULL; /* also drop the ptr to vnode */
+ return 0;
+#else
if (!haveGlock)
AFS_GLOCK();
if (!haveVlock)
if (!haveGlock)
AFS_GUNLOCK();
return code;
+#endif
}
+#ifdef AFS_OBSD42_ENV
+#define VP_INTERLOCK NULL
+#else
+#define VP_INTERLOCK (&vp->v_interlock)
+#endif
+
int
afs_nbsd_lock(void *v)
{
if (!vc)
panic("afs_nbsd_lock: null vcache");
- return lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, &vp->v_interlock,
- ap->a_p);
+ return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, VP_INTERLOCK, ap->a_p);
}
int
if (!vc)
panic("afs_nbsd_unlock: null vcache");
- return lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, &vp->v_interlock,
- ap->a_p);
+ return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, VP_INTERLOCK, ap->a_p);
}
int
AFS_STATCNT(afs_bmap);
if (ap->a_bnp)
- ap->a_bnp = (daddr_t *) (ap->a_bn * (8192 / DEV_BSIZE));
+ *ap->a_bnp = ap->a_bn * btodb(8192);
if (ap->a_vpp)
*ap->a_vpp = (vcp) ? AFSTOV(vcp) : NULL;
return 0;
tuio.afsio_iovcnt = 1;
tuio.afsio_seg = AFS_UIOSYS;
tuio.afsio_resid = len;
- tiovec[0].iov_base = abp->b_un.b_addr;
+ tiovec[0].iov_base = abp->b_data;
tiovec[0].iov_len = len;
AFS_GLOCK();
if ((abp->b_flags & B_READ) == B_READ) {
code = afs_rdwr(tvc, &tuio, UIO_READ, 0, credp);
if (code == 0 && tuio.afsio_resid > 0)
- bzero(abp->b_un.b_addr + len - tuio.afsio_resid,
- tuio.afsio_resid);
+ bzero(abp->b_data + len - tuio.afsio_resid, tuio.afsio_resid);
} else
code = afs_rdwr(tvc, &tuio, UIO_WRITE, 0, credp);
AFS_GUNLOCK();