Adosfs prototyping changes.

This commit is contained in:
christos 1996-02-09 19:06:38 +00:00
parent 09afd77655
commit 2140eeda0f
5 changed files with 269 additions and 207 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: adlookup.c,v 1.10 1995/08/18 15:14:33 chopps Exp $ */
/* $NetBSD: adlookup.c,v 1.11 1996/02/09 19:06:38 christos Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@ -42,26 +42,8 @@
#define strmatch(s1, l1, s2, l2) \
((l1) == (l2) && bcmp((s1), (s2), (l1)) == 0)
#else
int
strmatch(s1, l1, s2, l2)
char *s1, *s2;
int l1, l2;
{
if (l1 != l2)
return 0;
while (--l1 >= 0) {
char c;
c = *s1++;
if (c != *s2) {
if (c >= 'A' && c <= 'Z' && c + ('a' - 'A') != *s2)
return 0;
if (c >= 'a' && c <= 'z' && c + ('A' - 'a') != *s2)
return 0;
}
++s2;
}
return 1;
}
#define strmatch(s1, l1, s2, l2) \
((l1) == (l2) && strncasecmp((s1), (s2), (l1)) == 0)
#endif
/*
@ -76,13 +58,14 @@ strmatch(s1, l1, s2, l2)
* LOOKUP always unlocks parent if last element. (not now!?!?)
*/
int
adosfs_lookup(sp)
adosfs_lookup(v)
void *v;
{
struct vop_lookup_args /* {
struct vnode *a_dvp;
struct vnode **a_vpp;
struct componentname *a_cnp;
} */ *sp;
{
} */ *sp = v;
int nameiop, last, lockp, wantp, flags, error, vpid, nocache, i;
struct componentname *cnp;
struct vnode **vpp; /* place to store result */
@ -117,7 +100,7 @@ adosfs_lookup(sp)
*/
if (vdp->v_type != VDIR)
return (ENOTDIR);
if (error = VOP_ACCESS(vdp, VEXEC, ucp, cnp->cn_proc))
if ((error = VOP_ACCESS(vdp, VEXEC, ucp, cnp->cn_proc)) != 0)
return (error);
/*
* cache lookup algorithm borrowed from ufs_lookup()
@ -150,7 +133,7 @@ adosfs_lookup(sp)
VOP_UNLOCK(vdp);
}
*vpp = NULL;
if (error = VOP_LOCK(vdp))
if ((error = VOP_LOCK(vdp)) != 0)
return (error);
}
@ -185,7 +168,8 @@ adosfs_lookup(sp)
*
*/
VOP_UNLOCK(vdp); /* race */
if (error = VFS_VGET(vdp->v_mount, (ino_t)adp->pblock, vpp))
if ((error = VFS_VGET(vdp->v_mount,
(ino_t)adp->pblock, vpp)) != 0)
VOP_LOCK(vdp);
else if (last && lockp && (error = VOP_LOCK(vdp)))
vput(*vpp);
@ -205,7 +189,7 @@ adosfs_lookup(sp)
bn = adp->tab[hval];
i = min(adp->tabi[hval], 0);
while (bn != 0) {
if (error = VFS_VGET(vdp->v_mount, (ino_t)bn, vpp)) {
if ((error = VFS_VGET(vdp->v_mount, (ino_t)bn, vpp)) != 0) {
#ifdef ADOSFS_DIAGNOSTIC
printf("[aget] %d)", error);
#endif
@ -238,7 +222,7 @@ adosfs_lookup(sp)
* not found
*/
if ((nameiop == CREATE || nameiop == RENAME) && last) {
if (error = VOP_ACCESS(vdp, VWRITE, ucp, cnp->cn_proc)) {
if ((error = VOP_ACCESS(vdp, VWRITE, ucp, cnp->cn_proc)) != 0) {
#ifdef ADOSFS_DIAGNOSTIC
printf("[VOP_ACCESS] %d)", error);
#endif
@ -261,7 +245,7 @@ adosfs_lookup(sp)
found:
if (nameiop == DELETE && last) {
if (error = VOP_ACCESS(vdp, VWRITE, ucp, cnp->cn_proc)) {
if ((error = VOP_ACCESS(vdp, VWRITE, ucp, cnp->cn_proc)) != 0) {
if (vdp != *vpp)
vput(*vpp);
*vpp = NULL;
@ -272,7 +256,7 @@ found:
if (nameiop == RENAME && wantp && last) {
if (vdp == *vpp)
return(EISDIR);
if (error = VOP_ACCESS(vdp, VWRITE, ucp, cnp->cn_proc)) {
if ((error = VOP_ACCESS(vdp, VWRITE, ucp, cnp->cn_proc)) != 0) {
vput(*vpp);
*vpp = NULL;
return (error);

View File

@ -1,4 +1,4 @@
/* $NetBSD: adosfs.h,v 1.8 1995/08/18 15:14:35 chopps Exp $ */
/* $NetBSD: adosfs.h,v 1.9 1996/02/09 19:06:39 christos Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@ -124,11 +124,13 @@ struct adosfsmount {
long adoswordn __P((struct buf *, int));
long adoscksum __P((struct buf *, long));
int adoshash __P((const char *, int, int));
int adunixprot __P((int));
int adosfs_getblktype __P((struct adosfsmount *, struct buf *));
struct vnode *adosfs_ahashget __P((struct mount *, ino_t));
void adosfs_ainshash __P((struct adosfsmount *, struct anode *));
void adosfs_aremhash __P((struct anode *));
int adosfs_lookup __P((struct vop_lookup_args *));
int adosfs_lookup __P((void *));
int (**adosfs_vnodeop_p)();
int (**adosfs_vnodeop_p) __P((void *));

View File

@ -1,4 +1,4 @@
/* $NetBSD: adutil.c,v 1.7 1995/01/18 09:17:33 mycroft Exp $ */
/* $NetBSD: adutil.c,v 1.8 1996/02/09 19:06:41 christos Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@ -33,6 +33,7 @@
#include <sys/vnode.h>
#include <sys/mount.h>
#include <sys/proc.h>
#include <sys/systm.h>
#include <sys/malloc.h>
#include <sys/time.h>
#include <sys/queue.h>
@ -43,6 +44,7 @@
* look for anode in the mount's hash table, return locked.
*/
#define AHASH(an) ((an) & (ANODEHASHSZ - 1))
static int toupper __P((int));
struct vnode *
adosfs_ahashget(mp, an)
@ -143,9 +145,9 @@ adunixprot(adprot)
}
}
static char
static int
toupper(ch)
char ch;
int ch;
{
if (ch >= 'a' && ch <= 'z')
return(ch & ~(0x20));
@ -180,6 +182,7 @@ adoshash(nam, namlen, nelt)
return(val % nelt);
}
#ifdef notyet
/*
* datestamp is local time, tv is to be UTC
*/
@ -199,6 +202,7 @@ tvtods(tvp, dsp)
struct datestamp *dsp;
{
}
#endif
long
adoswordn(bp, wn)

View File

@ -1,4 +1,4 @@
/* $NetBSD: advfsops.c,v 1.15 1995/11/30 00:56:23 jtc Exp $ */
/* $NetBSD: advfsops.c,v 1.16 1996/02/09 19:06:42 christos Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@ -45,6 +45,22 @@
#include <sys/buf.h>
#include <adosfs/adosfs.h>
void adosfs_init __P((void));
int adosfs_mount __P((struct mount *, char *, caddr_t, struct nameidata *,
struct proc *));
int adosfs_start __P((struct mount *, int, struct proc *));
int adosfs_unmount __P((struct mount *, int, struct proc *));
int adosfs_root __P((struct mount *, struct vnode **));
int adosfs_quotactl __P((struct mount *, int, uid_t, caddr_t, struct proc *));
int adosfs_statfs __P((struct mount *, struct statfs *, struct proc *));
int adosfs_sync __P((struct mount *, int, struct ucred *, struct proc *));
int adosfs_vget __P((struct mount *, ino_t, struct vnode **));
int adosfs_fhtovp __P((struct mount *, struct fid *, struct mbuf *,
struct vnode **, int *, struct ucred **));
int adosfs_vptofh __P((struct vnode *, struct fid *));
int adosfs_mountfs __P((struct vnode *, struct mount *, struct proc *));
int
adosfs_mount(mp, path, data, ndp, p)
struct mount *mp;
@ -60,7 +76,8 @@ adosfs_mount(mp, path, data, ndp, p)
int error;
mode_t accessmode;
if (error = copyin(data, (caddr_t)&args, sizeof(struct adosfs_args)))
error = copyin(data, (caddr_t)&args, sizeof(struct adosfs_args));
if (error)
return(error);
#if 0
@ -83,7 +100,7 @@ adosfs_mount(mp, path, data, ndp, p)
* and verify that it refers to a sensible block device.
*/
NDINIT(ndp, LOOKUP, FOLLOW, UIO_USERSPACE, args.fspec, p);
if (error = namei(ndp))
if ((error = namei(ndp)) != 0)
return (error);
devvp = ndp->ni_vp;
@ -104,14 +121,15 @@ adosfs_mount(mp, path, data, ndp, p)
if ((mp->mnt_flag & MNT_RDONLY) == 0)
accessmode |= VWRITE;
VOP_LOCK(devvp);
if (error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p)) {
error = VOP_ACCESS(devvp, accessmode, p->p_ucred, p);
if (error) {
vput(devvp);
return (error);
}
VOP_UNLOCK(devvp);
}
/* MNT_UPDATE? */
if (error = adosfs_mountfs(devvp, mp, p)) {
if ((error = adosfs_mountfs(devvp, mp, p)) != 0) {
vrele(devvp);
return (error);
}
@ -148,19 +166,20 @@ adosfs_mountfs(devvp, mp, p)
* (except for root, which might share swap device for miniroot).
* Flush out any old buffers remaining from a previous use.
*/
if (error = vfs_mountedon(devvp))
if ((error = vfs_mountedon(devvp)) != 0)
return (error);
if (vcount(devvp) > 1 && devvp != rootvp)
return (EBUSY);
if (error = vinvalbuf(devvp, V_SAVE, p->p_ucred, p, 0, 0))
if ((error = vinvalbuf(devvp, V_SAVE, p->p_ucred, p, 0, 0)) != 0)
return (error);
/*
* open blkdev and read root block
*/
if (error = VOP_OPEN(devvp, FREAD, NOCRED, p))
if ((error = VOP_OPEN(devvp, FREAD, NOCRED, p)) != 0)
return (error);
if (error = VOP_IOCTL(devvp, DIOCGDINFO,(caddr_t)&dl, FREAD, NOCRED, p))
error = VOP_IOCTL(devvp, DIOCGDINFO,(caddr_t)&dl, FREAD, NOCRED, p);
if (error)
goto fail;
parp = &dl.d_partitions[part];
@ -190,7 +209,7 @@ adosfs_mountfs(devvp, mp, p)
/*
* get the root anode, if not a valid fs this will fail.
*/
if (error = VFS_ROOT(mp, &rvp))
if ((error = VFS_ROOT(mp, &rvp)) != 0)
goto fail;
vput(rvp);
@ -225,7 +244,7 @@ adosfs_unmount(mp, mntflags, p)
flags = 0;
if (mntflags & MNT_FORCE)
flags |= FORCECLOSE;
if (error = vflush(mp, NULLVP, flags))
if ((error = vflush(mp, NULLVP, flags)) != 0)
return (error);
amp = VFSTOADOSFS(mp);
amp->devvp->v_specflags &= ~SI_MOUNTEDON;
@ -245,7 +264,7 @@ adosfs_root(mp, vpp)
struct vnode *nvp;
int error;
if (error = VFS_VGET(mp, (ino_t)VFSTOADOSFS(mp)->rootb, &nvp))
if ((error = VFS_VGET(mp, (ino_t)VFSTOADOSFS(mp)->rootb, &nvp)) != 0)
return (error);
*vpp = nvp;
return (0);
@ -300,10 +319,11 @@ adosfs_vget(mp, an, vpp)
/*
* check hash table. we are done if found
*/
if (*vpp = adosfs_ahashget(mp, an))
if ((*vpp = adosfs_ahashget(mp, an)) != NULL)
return (0);
if (error = getnewvnode(VT_ADOSFS, mp, adosfs_vnodeop_p, &vp))
error = getnewvnode(VT_ADOSFS, mp, adosfs_vnodeop_p, &vp);
if (error)
return (error);
/*
@ -317,7 +337,7 @@ adosfs_vget(mp, an, vpp)
ap->nwords = amp->nwords;
adosfs_ainshash(amp, ap);
if (error = bread(amp->devvp, an, amp->bsize, NOCRED, &bp)) {
if ((error = bread(amp->devvp, an, amp->bsize, NOCRED, &bp)) != 0) {
vput(vp);
return (error);
}
@ -495,7 +515,9 @@ adosfs_fhtovp(mp, fhp, nam, vpp, exflagsp, credanonp)
{
struct ifid *ifhp = (struct ifid *)fhp;
struct adosfsmount *amp = VFSTOADOSFS(mp);
#if 0
struct anode *ap;
#endif
struct netcred *np;
struct vnode *nvp;
int error;
@ -511,7 +533,7 @@ adosfs_fhtovp(mp, fhp, nam, vpp, exflagsp, credanonp)
if (np == NULL)
return (EACCES);
if (error = VFS_VGET(mp, ifhp->ifid_ino, &nvp)) {
if ((error = VFS_VGET(mp, ifhp->ifid_ino, &nvp)) != 0) {
*vpp = NULLVP;
return (error);
}
@ -561,9 +583,11 @@ adosfs_quotactl(mp, cmds, uid, arg, p)
}
int
adosfs_sync(mp, waitfor)
adosfs_sync(mp, waitfor, uc, p)
struct mount *mp;
int waitfor;
struct ucred *uc;
struct proc *p;
{
#ifdef ADOSFS_DIAGNOSTIC
printf("ad_sync(%x, %x)\n", mp, waitfor);
@ -571,10 +595,9 @@ adosfs_sync(mp, waitfor)
return(0);
}
int
void
adosfs_init()
{
return(0);
}
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: advnops.c,v 1.24 1996/02/09 14:45:40 mycroft Exp $ */
/* $NetBSD: advnops.c,v 1.25 1996/02/09 19:06:43 christos Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps
@ -41,21 +41,119 @@
#include <sys/malloc.h>
#include <sys/stat.h>
#include <sys/unistd.h>
#include <sys/proc.h>
#include <miscfs/specfs/specdev.h>
#include <adosfs/adosfs.h>
extern struct vnodeops adosfs_vnodeops;
int adosfs_open __P((void *));
int adosfs_getattr __P((void *));
int adosfs_read __P((void *));
int adosfs_write __P((void *));
int adosfs_ioctl __P((void *));
int adosfs_select __P((void *));
int adosfs_strategy __P((void *));
int adosfs_lock __P((void *));
int adosfs_unlock __P((void *));
int adosfs_bmap __P((void *));
int adosfs_print __P((void *));
int adosfs_readdir __P((void *));
int adosfs_access __P((void *));
int adosfs_readlink __P((void *));
int adosfs_inactive __P((void *));
int adosfs_islocked __P((void *));
int adosfs_reclaim __P((void *));
int adosfs_pathconf __P((void *));
int adnullop __P((void *));
int adenotsup __P((void *));
#define adosfs_close adnullop
#define adosfs_fsync adnullop
#ifdef NFSSERVER
int lease_check __P((void *));
#define adosfs_lease_check lease_check
#else
#define adosfs_lease_check adnullop
#endif
#define adosfs_seek adnullop
#define adosfs_vfree adnullop
#define adosfs_advlock adenotsup
#define adosfs_blkatoff adenotsup
#define adosfs_bwrite adenotsup
#define adosfs_create adenotsup
#define adosfs_mkdir adenotsup
#define adosfs_mknod adenotsup
#define adosfs_mmap adenotsup
#define adosfs_remove adenotsup
#define adosfs_rename adenotsup
#define adosfs_rmdir adenotsup
#define adosfs_setattr adenotsup
#define adosfs_truncate adenotsup
#define adosfs_update adenotsup
#define adosfs_valloc adenotsup
struct vnodeopv_entry_desc adosfs_vnodeop_entries[] = {
{ &vop_default_desc, vn_default_error },
{ &vop_lookup_desc, adosfs_lookup }, /* lookup */
{ &vop_create_desc, adosfs_create }, /* create */
{ &vop_mknod_desc, adosfs_mknod }, /* mknod */
{ &vop_open_desc, adosfs_open }, /* open */
{ &vop_close_desc, adosfs_close }, /* close */
{ &vop_access_desc, adosfs_access }, /* access */
{ &vop_getattr_desc, adosfs_getattr }, /* getattr */
{ &vop_setattr_desc, adosfs_setattr }, /* setattr */
{ &vop_read_desc, adosfs_read }, /* read */
{ &vop_write_desc, adosfs_write }, /* write */
{ &vop_lease_desc, adosfs_lease_check }, /* lease */
{ &vop_ioctl_desc, adosfs_ioctl }, /* ioctl */
{ &vop_select_desc, adosfs_select }, /* select */
{ &vop_mmap_desc, adosfs_mmap }, /* mmap */
{ &vop_fsync_desc, adosfs_fsync }, /* fsync */
{ &vop_seek_desc, adosfs_seek }, /* seek */
{ &vop_remove_desc, adosfs_remove }, /* remove */
{ &vop_link_desc, adosfs_link }, /* link */
{ &vop_rename_desc, adosfs_rename }, /* rename */
{ &vop_mkdir_desc, adosfs_mkdir }, /* mkdir */
{ &vop_rmdir_desc, adosfs_rmdir }, /* rmdir */
{ &vop_symlink_desc, adosfs_symlink }, /* symlink */
{ &vop_readdir_desc, adosfs_readdir }, /* readdir */
{ &vop_readlink_desc, adosfs_readlink }, /* readlink */
{ &vop_abortop_desc, adosfs_abortop }, /* abortop */
{ &vop_inactive_desc, adosfs_inactive }, /* inactive */
{ &vop_reclaim_desc, adosfs_reclaim }, /* reclaim */
{ &vop_lock_desc, adosfs_lock }, /* lock */
{ &vop_unlock_desc, adosfs_unlock }, /* unlock */
{ &vop_bmap_desc, adosfs_bmap }, /* bmap */
{ &vop_strategy_desc, adosfs_strategy }, /* strategy */
{ &vop_print_desc, adosfs_print }, /* print */
{ &vop_islocked_desc, adosfs_islocked }, /* islocked */
{ &vop_pathconf_desc, adosfs_pathconf }, /* pathconf */
{ &vop_advlock_desc, adosfs_advlock }, /* advlock */
{ &vop_blkatoff_desc, adosfs_blkatoff }, /* blkatoff */
{ &vop_valloc_desc, adosfs_valloc }, /* valloc */
{ &vop_vfree_desc, adosfs_vfree }, /* vfree */
{ &vop_truncate_desc, adosfs_truncate }, /* truncate */
{ &vop_update_desc, adosfs_update }, /* update */
{ &vop_bwrite_desc, adosfs_bwrite }, /* bwrite */
{ (struct vnodeop_desc*)NULL, (int(*) __P((void *)))NULL }
};
struct vnodeopv_desc adosfs_vnodeop_opv_desc =
{ &adosfs_vnodeop_p, adosfs_vnodeop_entries };
int
adosfs_open(sp)
adosfs_open(v)
void *v;
{
#ifdef ADOSFS_DIAGNOSTIC
struct vop_open_args /* {
struct vnode *a_vp;
int a_mode;
struct ucred *a_cred;
struct proc *a_p;
} */ *sp;
{
#ifdef ADOSFS_DIAGNOSTIC
} */ *sp = v;
advopprint(sp);
printf(" 0)");
#endif
@ -63,14 +161,15 @@ adosfs_open(sp)
}
int
adosfs_getattr(sp)
adosfs_getattr(v)
void *v;
{
struct vop_getattr_args /* {
struct vnode *a_vp;
struct vattr *a_vap;
struct ucred *a_cred;
struct proc *a_p;
} */ *sp;
{
} */ *sp = v;
struct vattr *vap;
struct adosfsmount *amp;
struct anode *ap;
@ -127,20 +226,20 @@ adosfs_getattr(sp)
* deleted or changed (data block pointer blocks moving about.)
*/
int
adosfs_read(sp)
adosfs_read(v)
void *v;
{
struct vop_read_args /* {
struct vnode *a_vp;
struct uio *a_uio;
int a_ioflag;
struct ucred *a_cred;
} */ *sp;
{
} */ *sp = v;
struct adosfsmount *amp;
struct anode *ap;
struct uio *uio;
struct buf *bp;
struct fs *fs;
daddr_t lbn, bn;
daddr_t lbn;
int size, diff, error;
long n, on;
@ -218,15 +317,16 @@ reterr:
}
int
adosfs_write(sp)
adosfs_write(v)
void *v;
{
#ifdef ADOSFS_DIAGNOSTIC
struct vop_write_args /* {
struct vnode *a_vp;
struct uio *a_uio;
int a_ioflag;
struct ucred *a_cred;
} */ *sp;
{
#ifdef ADOSFS_DIAGNOSTIC
} */ *sp = v;
advopprint(sp);
printf(" EOPNOTSUPP)");
#endif
@ -238,7 +338,10 @@ adosfs_write(sp)
*/
/* ARGSUSED */
int
adosfs_ioctl(sp)
adosfs_ioctl(v)
void *v;
{
#ifdef ADOSFS_DIAGNOSTIC
struct vop_ioctl_args /* {
struct vnode *a_vp;
u_long a_command;
@ -246,9 +349,7 @@ adosfs_ioctl(sp)
int a_fflag;
struct ucred *a_cred;
struct proc *a_p;
} */ *sp;
{
#ifdef ADOSFS_DIAGNOSTIC
} */ *sp = v;
advopprint(sp);
printf(" ENOTTY)");
#endif
@ -257,19 +358,20 @@ adosfs_ioctl(sp)
/* ARGSUSED */
int
adosfs_select(sp)
adosfs_select(v)
void *v;
{
#ifdef ADOSFS_DIAGNOSTIC
struct vop_select_args /* {
struct vnode *a_vp;
int a_which;
int a_fflags;
struct ucred *a_cred;
struct proc *a_p;
} */ *sp;
{
} */ *sp = v;
/*
* sure there's something to read...
*/
#ifdef ADOSFS_DIAGNOSTIC
advopprint(sp);
printf(" 1)");
#endif
@ -280,11 +382,12 @@ adosfs_select(sp)
* Just call the device strategy routine
*/
int
adosfs_strategy(sp)
adosfs_strategy(v)
void *v;
{
struct vop_strategy_args /* {
struct buf *a_bp;
} */ *sp;
{
} */ *sp = v;
struct buf *bp;
struct anode *ap;
struct vnode *vp;
@ -304,8 +407,8 @@ adosfs_strategy(sp)
vp = bp->b_vp;
ap = VTOA(vp);
if (bp->b_blkno == bp->b_lblkno) {
if (error =
VOP_BMAP(vp, bp->b_lblkno, NULL, &bp->b_blkno, NULL)) {
error = VOP_BMAP(vp, bp->b_lblkno, NULL, &bp->b_blkno, NULL);
if (error) {
bp->b_flags |= B_ERROR;
biodone(bp);
goto reterr;
@ -327,13 +430,14 @@ reterr:
}
int
adosfs_link(ap)
adosfs_link(v)
void *v;
{
struct vop_link_args /* {
struct vnode *a_dvp;
struct vnode *a_vp;
struct componentname *a_cnp;
} */ *ap;
{
} */ *ap = v;
VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
vput(ap->a_dvp);
@ -341,15 +445,16 @@ adosfs_link(ap)
}
int
adosfs_symlink(ap)
adosfs_symlink(v)
void *v;
{
struct vop_symlink_args /* {
struct vnode *a_dvp;
struct vnode **a_vpp;
struct componentname *a_cnp;
struct vattr *a_vap;
char *a_target;
} */ *ap;
{
} */ *ap = v;
VOP_ABORTOP(ap->a_dvp, ap->a_cnp);
vput(ap->a_dvp);
@ -357,12 +462,13 @@ adosfs_symlink(ap)
}
int
adosfs_abortop(ap)
adosfs_abortop(v)
void *v;
{
struct vop_abortop_args /* {
struct vnode *a_dvp;
struct componentname *a_cnp;
} */ *ap;
{
} */ *ap = v;
if ((ap->a_cnp->cn_flags & (HASBUF | SAVESTART)) == HASBUF)
FREE(ap->a_cnp->cn_pnbuf, M_NAMEI);
@ -373,11 +479,12 @@ adosfs_abortop(ap)
* lock the anode
*/
int
adosfs_lock(sp)
adosfs_lock(v)
void *v;
{
struct vop_lock_args /* {
struct vnode *a_vp;
} */ *sp;
{
} */ *sp = v;
struct vnode *vp;
struct anode *ap;
@ -409,11 +516,12 @@ start:
* unlock an anode
*/
int
adosfs_unlock(sp)
adosfs_unlock(v)
void *v;
{
struct vop_unlock_args /* {
struct vnode *a_vp;
} */ *sp;
{
} */ *sp = v;
struct anode *ap;
#ifdef ADOSFS_DIAGNOSTIC
@ -437,15 +545,16 @@ adosfs_unlock(sp)
* Wait until the vnode has finished changing state.
*/
int
adosfs_bmap(sp)
adosfs_bmap(v)
void *v;
{
struct vop_bmap_args /* {
struct vnode *a_vp;
daddr_t a_bn;
struct vnode **a_vpp;
daddr_t *a_bnp;
int *a_runp;
} */ *sp;
{
} */ *sp = v;
struct anode *ap;
struct buf *flbp;
long nb, flblk, flblkoff, fcnt;
@ -510,8 +619,9 @@ adosfs_bmap(sp)
error = EINVAL;
goto reterr;
}
if (error = bread(ap->amp->devvp, nb, ap->amp->bsize,
NOCRED, &flbp))
error = bread(ap->amp->devvp, nb, ap->amp->bsize,
NOCRED, &flbp);
if (error)
goto reterr;
if (adoscksum(flbp, ap->nwords)) {
#ifdef DIAGNOSTIC
@ -561,11 +671,14 @@ reterr:
*/
/* ARGSUSED */
int
adosfs_print(sp)
adosfs_print(v)
void *v;
{
#if 0
struct vop_print_args /* {
struct vnode *a_vp;
} */ *sp;
{
} */ *sp = v;
#endif
return(0);
}
@ -578,7 +691,9 @@ struct adirent {
};
int
adosfs_readdir(sp)
adosfs_readdir(v)
void *v;
{
struct vop_readdir_args /* {
struct vnode *a_vp;
struct uio *a_uio;
@ -586,15 +701,14 @@ adosfs_readdir(sp)
int *a_eofflag;
u_long *a_cookies;
int a_ncookies;
} */ *sp;
{
} */ *sp = v;
int error, useri, chainc, hashi, scanned, uavail;
struct adirent ad, *adp;
struct anode *pap, *ap;
struct adosfsmount *amp;
struct vnode *vp;
struct uio *uio;
u_long nextbn, resid;
u_long nextbn;
off_t uoff;
#ifdef ADOSFS_DIAGNOSTIC
@ -658,7 +772,8 @@ adosfs_readdir(sp)
*/
ap = NULL;
do {
if (error = VFS_VGET(amp->mp, (ino_t)nextbn, &vp))
error = VFS_VGET(amp->mp, (ino_t)nextbn, &vp);
if (error)
goto reterr;
ap = VTOA(vp);
scanned++;
@ -714,7 +829,7 @@ adosfs_readdir(sp)
bcopy(ap->name, adp->name, adp->namlen);
vput(vp);
error = uiomove(adp, sizeof(struct adirent), uio);
error = uiomove((caddr_t) adp, sizeof(struct adirent), uio);
if (error)
break;
if (sp->a_cookies) {
@ -737,14 +852,15 @@ reterr:
int
adosfs_access(sp)
adosfs_access(v)
void *v;
{
struct vop_access_args /* {
struct vnode *a_vp;
int a_mode;
struct ucred *a_cred;
struct proc *a_p;
} */ *sp;
{
} */ *sp = v;
struct anode *ap;
int error;
@ -771,13 +887,14 @@ adosfs_access(sp)
/*ARGSUSED*/
int
adosfs_readlink(sp)
adosfs_readlink(v)
void *v;
{
struct vop_readlink_args /* {
struct vnode *a_vp;
struct uio *a_uio;
struct ucred *a_cred;
} */ *sp;
{
} */ *sp = v;
struct anode *ap;
int error;
@ -801,11 +918,12 @@ adosfs_readlink(sp)
/*ARGSUSED*/
int
adosfs_inactive(sp)
adosfs_inactive(v)
void *v;
{
struct vop_inactive_args /* {
struct vnode *a_vp;
} */ *sp;
{
} */ *sp = v;
#ifdef ADOSFS_DIAGNOSTIC
advopprint(sp);
#endif
@ -817,12 +935,14 @@ adosfs_inactive(sp)
#endif
return(0);
}
int
adosfs_islocked(sp)
adosfs_islocked(v)
void *v;
{
struct vop_islocked_args /* {
struct vnode *a_vp;
} */ *sp;
{
} */ *sp = v;
int locked;
#ifdef ADOSFS_DIAGNOSTIC
@ -842,11 +962,12 @@ adosfs_islocked(sp)
* no lock needed we are being called from vclean()
*/
int
adosfs_reclaim(sp)
adosfs_reclaim(v)
void *v;
{
struct vop_reclaim_args /* {
struct vnode *a_vp;
} */ *sp;
{
} */ *sp = v;
struct vnode *vp;
struct anode *ap;
@ -872,13 +993,15 @@ adosfs_reclaim(sp)
* investigate exactly what each return type means as they are probably
* not valid currently
*/
adosfs_pathconf(sp)
int
adosfs_pathconf(v)
void *v;
{
struct vop_pathconf_args /* {
struct vnode *a_vp;
int a_name;
register_t *a_retval;
} */ *sp;
{
} */ *sp = v;
switch (sp->a_name) {
case _PC_LINK_MAX:
@ -926,77 +1049,3 @@ adnullop(sp)
#endif
return(0);
}
#define adosfs_close ((int (*) __P((struct vop_close_args *)))adnullop)
#define adosfs_fsync ((int (*) __P((struct vop_fsync_args *)))adnullop)
#ifdef NFSSERVER
int lease_check __P((struct vop_lease_args *));
#define adosfs_lease_check lease_check
#else
#define adosfs_lease_check ((int (*) __P((struct vop_lease_args *)))adnullop)
#endif
#define adosfs_seek ((int (*) __P((struct vop_seek_args *)))adnullop)
#define adosfs_vfree ((int (*) __P((struct vop_vfree_args *)))adnullop)
#define adosfs_advlock ((int (*) __P((struct vop_advlock_args *)))adenotsup)
#define adosfs_blkatoff ((int (*) __P((struct vop_blkatoff_args *)))adenotsup)
#define adosfs_bwrite ((int (*) __P((struct vop_bwrite_args *)))adenotsup)
#define adosfs_create ((int (*) __P((struct vop_create_args *)))adenotsup)
#define adosfs_mkdir ((int (*) __P((struct vop_mkdir_args *)))adenotsup)
#define adosfs_mknod ((int (*) __P((struct vop_mknod_args *)))adenotsup)
#define adosfs_mmap ((int (*) __P((struct vop_mmap_args *)))adenotsup)
#define adosfs_remove ((int (*) __P((struct vop_remove_args *)))adenotsup)
#define adosfs_rename ((int (*) __P((struct vop_rename_args *)))adenotsup)
#define adosfs_rmdir ((int (*) __P((struct vop_rmdir_args *)))adenotsup)
#define adosfs_setattr ((int (*) __P((struct vop_setattr_args *)))adenotsup)
#define adosfs_truncate ((int (*) __P((struct vop_truncate_args *)))adenotsup)
#define adosfs_update ((int (*) __P((struct vop_update_args *)))adenotsup)
#define adosfs_valloc ((int (*) __P((struct vop_valloc_args *)))adenotsup)
struct vnodeopv_entry_desc adosfs_vnodeop_entries[] = {
{ &vop_default_desc, vn_default_error },
{ &vop_lookup_desc, adosfs_lookup }, /* lookup */
{ &vop_create_desc, adosfs_create }, /* create */
{ &vop_mknod_desc, adosfs_mknod }, /* mknod */
{ &vop_open_desc, adosfs_open }, /* open */
{ &vop_close_desc, adosfs_close }, /* close */
{ &vop_access_desc, adosfs_access }, /* access */
{ &vop_getattr_desc, adosfs_getattr }, /* getattr */
{ &vop_setattr_desc, adosfs_setattr }, /* setattr */
{ &vop_read_desc, adosfs_read }, /* read */
{ &vop_write_desc, adosfs_write }, /* write */
{ &vop_lease_desc, adosfs_lease_check }, /* lease */
{ &vop_ioctl_desc, adosfs_ioctl }, /* ioctl */
{ &vop_select_desc, adosfs_select }, /* select */
{ &vop_mmap_desc, adosfs_mmap }, /* mmap */
{ &vop_fsync_desc, adosfs_fsync }, /* fsync */
{ &vop_seek_desc, adosfs_seek }, /* seek */
{ &vop_remove_desc, adosfs_remove }, /* remove */
{ &vop_link_desc, adosfs_link }, /* link */
{ &vop_rename_desc, adosfs_rename }, /* rename */
{ &vop_mkdir_desc, adosfs_mkdir }, /* mkdir */
{ &vop_rmdir_desc, adosfs_rmdir }, /* rmdir */
{ &vop_symlink_desc, adosfs_symlink }, /* symlink */
{ &vop_readdir_desc, adosfs_readdir }, /* readdir */
{ &vop_readlink_desc, adosfs_readlink }, /* readlink */
{ &vop_abortop_desc, adosfs_abortop }, /* abortop */
{ &vop_inactive_desc, adosfs_inactive }, /* inactive */
{ &vop_reclaim_desc, adosfs_reclaim }, /* reclaim */
{ &vop_lock_desc, adosfs_lock }, /* lock */
{ &vop_unlock_desc, adosfs_unlock }, /* unlock */
{ &vop_bmap_desc, adosfs_bmap }, /* bmap */
{ &vop_strategy_desc, adosfs_strategy }, /* strategy */
{ &vop_print_desc, adosfs_print }, /* print */
{ &vop_islocked_desc, adosfs_islocked }, /* islocked */
{ &vop_pathconf_desc, adosfs_pathconf }, /* pathconf */
{ &vop_advlock_desc, adosfs_advlock }, /* advlock */
{ &vop_blkatoff_desc, adosfs_blkatoff }, /* blkatoff */
{ &vop_valloc_desc, adosfs_valloc }, /* valloc */
{ &vop_vfree_desc, adosfs_vfree }, /* vfree */
{ &vop_truncate_desc, adosfs_truncate }, /* truncate */
{ &vop_update_desc, adosfs_update }, /* update */
{ &vop_bwrite_desc, adosfs_bwrite }, /* bwrite */
{ (struct vnodeop_desc*)NULL, (int(*)())NULL }
};
struct vnodeopv_desc adosfs_vnodeop_opv_desc =
{ &adosfs_vnodeop_p, adosfs_vnodeop_entries };