#include <afsconfig.h>
#include "afs/param.h"
-RCSID
- ("$Header$");
#include "afs/sysincludes.h" /* Standard vendor system headers */
#include "afs/afsincludes.h" /* Afs-based standard headers */
#include "afs/nfsclient.h"
#include "afs/afs_osidnlc.h"
-#ifdef AFS_DISCON_ENV
-extern int afs_FlushVS(struct vcache *tvc);
-#endif
-
#define M_AFSNODE (M_TEMP-1) /* XXX */
-int afs_nbsd_lookup(void *);
-int afs_nbsd_create(void *);
-int afs_nbsd_mknod(void *);
-int afs_nbsd_open(void *);
-int afs_nbsd_close(void *);
-int afs_nbsd_access(void *);
-int afs_nbsd_getattr(void *);
-int afs_nbsd_setattr(void *);
-int afs_nbsd_read(void *);
-int afs_nbsd_write(void *);
-int afs_nbsd_ioctl(void *);
-int afs_nbsd_select(void *);
-int afs_nbsd_fsync(void *);
-int afs_nbsd_remove(void *);
-int afs_nbsd_link(void *);
-int afs_nbsd_rename(void *);
-int afs_nbsd_mkdir(void *);
-int afs_nbsd_rmdir(void *);
-int afs_nbsd_symlink(void *);
-int afs_nbsd_readdir(void *);
-int afs_nbsd_readlink(void *);
-int afs_nbsd_inactive(void *);
-int afs_nbsd_reclaim(void *);
-int afs_nbsd_lock(void *);
-int afs_nbsd_unlock(void *);
-int afs_nbsd_bmap(void *);
-int afs_nbsd_strategy(void *);
-int afs_nbsd_print(void *);
-int afs_nbsd_islocked(void *);
-int afs_nbsd_pathconf(void *);
-int afs_nbsd_advlock(void *);
-
-#define afs_nbsd_opnotsupp \
+int afs_obsd_lookup(void *);
+int afs_obsd_create(void *);
+int afs_obsd_mknod(void *);
+int afs_obsd_open(void *);
+int afs_obsd_close(void *);
+int afs_obsd_access(void *);
+int afs_obsd_getattr(void *);
+int afs_obsd_setattr(void *);
+int afs_obsd_read(void *);
+int afs_obsd_write(void *);
+int afs_obsd_ioctl(void *);
+int afs_obsd_select(void *);
+int afs_obsd_fsync(void *);
+int afs_obsd_remove(void *);
+int afs_obsd_link(void *);
+int afs_obsd_rename(void *);
+int afs_obsd_mkdir(void *);
+int afs_obsd_rmdir(void *);
+int afs_obsd_symlink(void *);
+int afs_obsd_readdir(void *);
+int afs_obsd_readlink(void *);
+int afs_obsd_inactive(void *);
+int afs_obsd_reclaim(void *);
+int afs_obsd_lock(void *);
+int afs_obsd_unlock(void *);
+int afs_obsd_bmap(void *);
+int afs_obsd_strategy(void *);
+int afs_obsd_print(void *);
+int afs_obsd_islocked(void *);
+int afs_obsd_pathconf(void *);
+int afs_obsd_advlock(void *);
+
+#define afs_obsd_opnotsupp \
((int (*) __P((void *)))eopnotsupp)
-#define afs_nbsd_reallocblks afs_nbsd_opnotsupp
+#define afs_obsd_reallocblks afs_obsd_opnotsupp
/* 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},
- {&vop_lookup_desc, afs_nbsd_lookup}, /* lookup */
- {&vop_create_desc, afs_nbsd_create}, /* create */
- {&vop_mknod_desc, afs_nbsd_mknod}, /* mknod */
- {&vop_open_desc, afs_nbsd_open}, /* open */
- {&vop_close_desc, afs_nbsd_close}, /* close */
- {&vop_access_desc, afs_nbsd_access}, /* access */
- {&vop_getattr_desc, afs_nbsd_getattr}, /* getattr */
- {&vop_setattr_desc, afs_nbsd_setattr}, /* setattr */
- {&vop_read_desc, afs_nbsd_read}, /* read */
- {&vop_write_desc, afs_nbsd_write}, /* write */
- {&vop_ioctl_desc, afs_nbsd_ioctl}, /* XXX ioctl */
+#endif
+ {&vop_lookup_desc, afs_obsd_lookup}, /* lookup */
+ {&vop_create_desc, afs_obsd_create}, /* create */
+ {&vop_mknod_desc, afs_obsd_mknod}, /* mknod */
+ {&vop_open_desc, afs_obsd_open}, /* open */
+ {&vop_close_desc, afs_obsd_close}, /* close */
+ {&vop_access_desc, afs_obsd_access}, /* access */
+ {&vop_getattr_desc, afs_obsd_getattr}, /* getattr */
+ {&vop_setattr_desc, afs_obsd_setattr}, /* setattr */
+ {&vop_read_desc, afs_obsd_read}, /* read */
+ {&vop_write_desc, afs_obsd_write}, /* write */
+ {&vop_ioctl_desc, afs_obsd_ioctl}, /* XXX ioctl */
#ifdef AFS_OBSD35_ENV
- {&vop_poll_desc, afs_nbsd_select}, /* select */
+ {&vop_poll_desc, afs_obsd_select}, /* select */
#else
- {&vop_select_desc, afs_nbsd_select}, /* select */
+ {&vop_select_desc, afs_obsd_select}, /* select */
#endif
- {&vop_fsync_desc, afs_nbsd_fsync}, /* fsync */
- {&vop_remove_desc, afs_nbsd_remove}, /* remove */
- {&vop_link_desc, afs_nbsd_link}, /* link */
- {&vop_rename_desc, afs_nbsd_rename}, /* rename */
- {&vop_mkdir_desc, afs_nbsd_mkdir}, /* mkdir */
- {&vop_rmdir_desc, afs_nbsd_rmdir}, /* rmdir */
- {&vop_symlink_desc, afs_nbsd_symlink}, /* symlink */
- {&vop_readdir_desc, afs_nbsd_readdir}, /* readdir */
- {&vop_readlink_desc, afs_nbsd_readlink}, /* readlink */
+ {&vop_fsync_desc, afs_obsd_fsync}, /* fsync */
+ {&vop_remove_desc, afs_obsd_remove}, /* remove */
+ {&vop_link_desc, afs_obsd_link}, /* link */
+ {&vop_rename_desc, afs_obsd_rename}, /* rename */
+ {&vop_mkdir_desc, afs_obsd_mkdir}, /* mkdir */
+ {&vop_rmdir_desc, afs_obsd_rmdir}, /* rmdir */
+ {&vop_symlink_desc, afs_obsd_symlink}, /* symlink */
+ {&vop_readdir_desc, afs_obsd_readdir}, /* readdir */
+ {&vop_readlink_desc, afs_obsd_readlink}, /* readlink */
{&vop_abortop_desc, vop_generic_abortop}, /* abortop */
- {&vop_inactive_desc, afs_nbsd_inactive}, /* inactive */
- {&vop_reclaim_desc, afs_nbsd_reclaim}, /* reclaim */
- {&vop_lock_desc, afs_nbsd_lock}, /* lock */
- {&vop_unlock_desc, afs_nbsd_unlock}, /* unlock */
- {&vop_bmap_desc, afs_nbsd_bmap}, /* bmap */
- {&vop_strategy_desc, afs_nbsd_strategy}, /* strategy */
- {&vop_print_desc, afs_nbsd_print}, /* print */
- {&vop_islocked_desc, afs_nbsd_islocked}, /* islocked */
- {&vop_pathconf_desc, afs_nbsd_pathconf}, /* pathconf */
- {&vop_advlock_desc, afs_nbsd_advlock}, /* advlock */
- {&vop_reallocblks_desc, afs_nbsd_reallocblks}, /* reallocblks */
+ {&vop_inactive_desc, afs_obsd_inactive}, /* inactive */
+ {&vop_reclaim_desc, afs_obsd_reclaim}, /* reclaim */
+ {&vop_lock_desc, afs_obsd_lock}, /* lock */
+ {&vop_unlock_desc, afs_obsd_unlock}, /* unlock */
+ {&vop_bmap_desc, afs_obsd_bmap}, /* bmap */
+ {&vop_strategy_desc, afs_obsd_strategy}, /* strategy */
+ {&vop_print_desc, afs_obsd_print}, /* print */
+ {&vop_islocked_desc, afs_obsd_islocked}, /* islocked */
+ {&vop_pathconf_desc, afs_obsd_pathconf}, /* pathconf */
+ {&vop_advlock_desc, afs_obsd_advlock}, /* advlock */
+ {&vop_reallocblks_desc, afs_obsd_reallocblks}, /* reallocblks */
{&vop_bwrite_desc, vop_generic_bwrite},
{(struct vnodeop_desc *)NULL, (int (*)__P((void *)))NULL}
};
#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)
int afs_debug;
int
-afs_nbsd_lookup(void *v)
+afs_obsd_lookup(void *v)
{
struct vop_lookup_args /* {
* struct vnodeop_desc * a_desc;
}
int
-afs_nbsd_create(void *v)
+afs_obsd_create(void *v)
{
struct vop_create_args /* {
* struct vnode *a_dvp;
}
int
-afs_nbsd_mknod(void *v)
+afs_obsd_mknod(void *v)
{
struct vop_mknod_args /* {
* struct vnode *a_dvp;
}
int
-afs_nbsd_open(void *v)
+afs_obsd_open(void *v)
{
struct vop_open_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_close(void *v)
+afs_obsd_close(void *v)
{
struct vop_close_args /* {
* struct vnode *a_vp;
int code;
AFS_GLOCK();
- code = afs_close(VTOAFS(ap->a_vp), ap->a_fflag, ap->a_cred, ap->a_p);
+ code = afs_close(VTOAFS(ap->a_vp), ap->a_fflag, ap->a_cred);
AFS_GUNLOCK();
return code;
}
int
-afs_nbsd_access(void *v)
+afs_obsd_access(void *v)
{
struct vop_access_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_getattr(void *v)
+afs_obsd_getattr(void *v)
{
struct vop_getattr_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_setattr(void *v)
+afs_obsd_setattr(void *v)
{
struct vop_setattr_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_read(void *v)
+afs_obsd_read(void *v)
{
struct vop_read_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_write(void *v)
+afs_obsd_write(void *v)
{
struct vop_write_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_ioctl(void *v)
+afs_obsd_ioctl(void *v)
{
struct vop_ioctl_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_select(void *v)
+afs_obsd_select(void *v)
{
return 1;
}
int
-afs_nbsd_fsync(void *v)
+afs_obsd_fsync(void *v)
{
struct vop_fsync_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_remove(void *v)
+afs_obsd_remove(void *v)
{
struct vop_remove_args /* {
* struct vnode *a_dvp;
}
int
-afs_nbsd_link(void *v)
+afs_obsd_link(void *v)
{
struct vop_link_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_rename(void *v)
+afs_obsd_rename(void *v)
{
struct vop_rename_args /* {
* struct vnode *a_fdvp;
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
-afs_nbsd_mkdir(void *v)
+afs_obsd_mkdir(void *v)
{
struct vop_mkdir_args /* {
* struct vnode *a_dvp;
GETNAME();
#ifdef DIAGNOSTIC
if ((cnp->cn_flags & HASBUF) == 0)
- panic("afs_nbsd_mkdir: no name");
+ panic("afs_obsd_mkdir: no name");
#endif
AFS_GLOCK();
code = afs_mkdir(VTOAFS(dvp), name, vap, &vcp, cnp->cn_cred);
}
int
-afs_nbsd_rmdir(void *v)
+afs_obsd_rmdir(void *v)
{
struct vop_rmdir_args /* {
* struct vnode *a_dvp;
}
int
-afs_nbsd_symlink(void *v)
+afs_obsd_symlink(void *v)
{
struct vop_symlink_args /* {
* struct vnode *a_dvp;
}
int
-afs_nbsd_readdir(void *v)
+afs_obsd_readdir(void *v)
{
struct vop_readdir_args /* {
* struct vnode *a_vp;
}
int
-afs_nbsd_readlink(void *v)
+afs_obsd_readlink(void *v)
{
struct vop_readlink_args /* {
* struct vnode *a_vp;
extern int prtactive;
int
-afs_nbsd_inactive(void *v)
+afs_obsd_inactive(void *v)
{
struct vop_inactive_args /* {
* struct vnode *a_vp;
AFS_STATCNT(afs_inactive);
if (prtactive && vp->v_usecount != 0)
- vprint("afs_nbsd_inactive(): pushing active", vp);
+ vprint("afs_obsd_inactive(): pushing active", vp);
if (!haveGlock)
AFS_GLOCK();
}
int
-afs_nbsd_reclaim(void *v)
+afs_obsd_reclaim(void *v)
{
struct vop_reclaim_args /* {
* struct vnode *a_vp;
AFS_GLOCK();
if (!haveVlock)
ObtainWriteLock(&afs_xvcache, 901);
-#ifndef AFS_DISCON_ENV
- code = afs_FlushVCache(avc, &slept); /* tosses our stuff from vnode */
-#else
/* reclaim the vnode and the in-memory vcache, but keep the on-disk vcache */
- code = afs_FlushVS(avc);
-#endif
+ code = afs_FlushVCache(avc, &slept);
if (!haveVlock)
ReleaseWriteLock(&afs_xvcache);
if (!haveGlock)
#endif
}
+#ifdef AFS_OBSD42_ENV
+#define VP_INTERLOCK NULL
+#else
+#define VP_INTERLOCK (&vp->v_interlock)
+#endif
+
int
-afs_nbsd_lock(void *v)
+afs_obsd_lock(void *v)
{
struct vop_lock_args /* {
* struct vnode *a_vp;
struct vcache *vc = VTOAFS(vp);
if (!vc)
- panic("afs_nbsd_lock: null vcache");
- return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, &vp->v_interlock,
- ap->a_p);
+ panic("afs_obsd_lock: null vcache");
+ return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_CANRECURSE, VP_INTERLOCK, ap->a_p);
}
int
-afs_nbsd_unlock(void *v)
+afs_obsd_unlock(void *v)
{
struct vop_unlock_args /* {
* struct vnode *a_vp;
struct vcache *vc = VTOAFS(vp);
if (!vc)
- panic("afs_nbsd_unlock: null vcache");
- return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, &vp->v_interlock,
- ap->a_p);
+ panic("afs_obsd_unlock: null vcache");
+ return afs_osi_lockmgr(&vc->rwlock, ap->a_flags | LK_RELEASE, VP_INTERLOCK, ap->a_p);
}
int
-afs_nbsd_bmap(void *v)
+afs_obsd_bmap(void *v)
{
struct vop_bmap_args /* {
* struct vnode *a_vp;
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;
}
int
-afs_nbsd_strategy(void *v)
+afs_obsd_strategy(void *v)
{
struct vop_strategy_args /* {
* struct buf *a_bp;
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();
}
int
-afs_nbsd_print(void *v)
+afs_obsd_print(void *v)
{
struct vop_print_args /* {
* struct vnode *a_vp;
struct vnode *vp = ap->a_vp;
struct vcache *vc = VTOAFS(ap->a_vp);
- printf("tag %d, fid: %d.%x.%x.%x, ", vp->v_tag, vc->fid.Cell,
- (int)vc->fid.Fid.Volume, (int)vc->fid.Fid.Vnode,
- (int)vc->fid.Fid.Unique);
+ printf("tag %d, fid: %d.%x.%x.%x, ", vp->v_tag, vc->f.fid.Cell,
+ (int)vc->f.fid.Fid.Volume, (int)vc->f.fid.Fid.Vnode,
+ (int)vc->f.fid.Fid.Unique);
lockmgr_printinfo(&vc->rwlock);
printf("\n");
return 0;
}
int
-afs_nbsd_islocked(void *v)
+afs_obsd_islocked(void *v)
{
struct vop_islocked_args /* {
* struct vnode *a_vp;
* Return POSIX pathconf information applicable to ufs filesystems.
*/
int
-afs_nbsd_pathconf(void *v)
+afs_obsd_pathconf(void *v)
{
struct vop_pathconf_args /* {
* struct vnode *a_vp;
extern int
afs_lockctl(struct vcache *avc, struct AFS_FLOCK *af, int acmd,
- struct AFS_UCRED *acred, pid_t clid);
+ afs_ucred_t *acred, pid_t clid);
/*
* Advisory record locking support (fcntl() POSIX style)
*/
int
-afs_nbsd_advlock(void *v)
+afs_obsd_advlock(void *v)
{
struct vop_advlock_args /* {
* struct vnode *a_vp;