#include "afsincludes.h"
-/*
- * declare all the functions so they can be used to init the table
- */
-/* creation/naming/deletion */
-int afs_gn_link();
-int afs_gn_mkdir();
-int afs_gn_mknod();
-int afs_gn_remove();
-int afs_gn_rename();
-int afs_gn_rmdir();
-/* lookup, file handle stuff */
-int afs_gn_lookup();
-int afs_gn_fid();
-/* access to files */
-int afs_gn_open();
-int afs_gn_create();
-int afs_gn_hold();
-int afs_gn_rele();
-int afs_gn_close();
-int afs_gn_map();
-int afs_gn_unmap();
-/* manipulate attributes of files */
-int afs_gn_access();
-int afs_gn_getattr();
-int afs_gn_setattr();
-/* data update operations */
-int afs_gn_fclear();
-int afs_gn_fsync();
-int afs_gn_ftrunc();
-int afs_gn_rdwr();
-int afs_gn_lockctl();
-/* extensions */
-int afs_gn_ioctl();
-int afs_gn_readlink();
-int afs_gn_select();
-int afs_gn_symlink();
-int afs_gn_readdir();
-/* buffer ops */
-int afs_gn_strategy();
-/* security things */
-int afs_gn_revoke();
-int afs_gn_getacl();
-int afs_gn_setacl();
-int afs_gn_getpcl();
-int afs_gn_setpcl();
-int afs_gn_enosys();
-
-
-/*
- * declare a struct vnodeops and initialize it with ptrs to all functions
- */
-struct vnodeops afs_gn_vnodeops = {
- /* creation/naming/deletion */
- afs_gn_link,
- afs_gn_mkdir,
- afs_gn_mknod,
- afs_gn_remove,
- afs_gn_rename,
- afs_gn_rmdir,
- /* lookup, file handle stuff */
- afs_gn_lookup,
- afs_gn_fid,
- /* access to files */
- afs_gn_open,
- afs_gn_create,
- afs_gn_hold,
- afs_gn_rele,
- afs_gn_close,
- afs_gn_map,
- afs_gn_unmap,
- /* manipulate attributes of files */
- afs_gn_access,
- afs_gn_getattr,
- afs_gn_setattr,
- /* data update operations */
- afs_gn_fclear,
- afs_gn_fsync,
- afs_gn_ftrunc,
- afs_gn_rdwr,
- afs_gn_lockctl,
- /* extensions */
- afs_gn_ioctl,
- afs_gn_readlink,
- afs_gn_select,
- afs_gn_symlink,
- afs_gn_readdir,
- /* buffer ops */
- afs_gn_strategy,
- /* security things */
- afs_gn_revoke,
- afs_gn_getacl,
- afs_gn_setacl,
- afs_gn_getpcl,
- afs_gn_setpcl,
- afs_gn_enosys, /* vn_seek */
- afs_gn_enosys, /* vn_fsync_range */
- afs_gn_enosys, /* vn_create_attr */
- afs_gn_enosys, /* vn_finfo */
- afs_gn_enosys, /* vn_map_lloff */
- afs_gn_enosys, /* vn_readdir_eofp */
- afs_gn_enosys, /* vn_rdwr_attr */
- afs_gn_enosys, /* vn_memcntl */
- afs_gn_enosys, /* vn_spare7 */
- afs_gn_enosys, /* vn_spare8 */
- afs_gn_enosys, /* vn_spare9 */
- afs_gn_enosys, /* vn_spareA */
- afs_gn_enosys, /* vn_spareB */
- afs_gn_enosys, /* vn_spareC */
- afs_gn_enosys, /* vn_spareD */
- afs_gn_enosys, /* vn_spareE */
- afs_gn_enosys /* vn_spareF */
-#ifdef AFS_AIX51_ENV
- , afs_gn_enosys, /* pagerBackRange */
- afs_gn_enosys, /* pagerGetFileSize */
- afs_gn_enosys, /* pagerReadAhead */
- afs_gn_enosys, /* pagerWriteBehind */
- afs_gn_enosys /* pagerEndCopy */
-#endif
-};
-struct vnodeops *afs_ops = &afs_gn_vnodeops;
-
-
int
-afs_gn_link(vp, dp, name, cred)
- struct vnode *vp;
- struct vnode *dp;
- char *name;
- struct ucred *cred;
+afs_gn_link(struct vnode *vp,
+ struct vnode *dp,
+ char *name,
+ struct ucred *cred)
{
int error;
int
-afs_gn_mkdir(dp, name, Mode, cred)
- struct vnode *dp;
- char *name;
-#ifdef AFS_AIX51_ENV
- int32long64_t Mode;
-#else
- int Mode;
-#endif
- struct ucred *cred;
+afs_gn_mkdir(struct vnode *dp,
+ char *name,
+ int32long64_t Mode,
+ struct ucred *cred)
{
struct vattr va;
struct vnode *vp;
int
-afs_gn_mknod(dp, name, Mode, dev, cred)
- struct vnode *dp;
- char *name;
-#ifdef AFS_AIX51_ENV
- int Mode;
-#else
- int Mode;
-#endif
- dev_t dev;
- struct ucred *cred;
+afs_gn_mknod(struct vnode *dp,
+ char *name,
+ int32long64_t Mode,
+ dev_t dev,
+ struct ucred *cred)
{
struct vattr va;
struct vnode *vp;
va.va_mode = (mode & 07777) & ~get_umask();
/**** I'm not sure if suser() should stay here since it makes no sense in AFS; however the documentation says that one "should be super-user unless making a FIFO file. Others systems such as SUN do this checking in the early stages of mknod (before the abstraction), so it's equivalently the same! *****/
- if (va.va_type != VFIFO && !suser(&error))
+ if (va.va_type != VFIFO && !suser((char *)&error))
return (EPERM);
switch (va.va_type) {
case VDIR:
case VBLK:
va.va_rdev = dev;
default:
- error = afs_create(dp, name, &va, NONEXCL, mode, &vp, cred);
+ error = afs_create(VTOAFS(dp), name, &va, NONEXCL, mode, (struct vcache **)&vp, cred);
}
if (!error) {
AFS_RELE(vp);
int
-afs_gn_remove(vp, dp, name, cred)
- struct vnode *vp; /* Ignored in AFS */
- struct vnode *dp;
- char *name;
- struct ucred *cred;
+afs_gn_remove(struct vnode *vp, /* Ignored in AFS */
+ struct vnode * dp,
+ char *name,
+ struct ucred *cred)
{
int error;
int
-afs_gn_rename(vp, dp, name, tp, tdp, tname, cred)
- struct vnode *dp;
- char *name;
- struct vnode *vp; /* Ignored in AFS */
- struct vnode *tp; /* Ignored in AFS */
- struct vnode *tdp;
- char *tname;
- struct ucred *cred;
+afs_gn_rename(struct vnode *vp, /* Ignored in AFS */
+ struct vnode *dp,
+ char *name,
+ struct vnode *tp, /* Ignored in AFS */
+ struct vnode *tdp,
+ char *tname,
+ struct ucred *cred)
{
int error;
int
-afs_gn_rmdir(vp, dp, name, cred)
- struct vnode *vp; /* Ignored in AFS */
- struct vnode *dp;
- char *name;
- struct ucred *cred;
+afs_gn_rmdir(struct vnode *vp, /* Ignored in AFS */
+ struct vnode *dp,
+ char *name,
+ struct ucred *cred)
{
int error;
int
-afs_gn_lookup(dp, vpp, name, Flags, vattrp, cred)
- struct vattr *vattrp;
- struct vnode *dp;
- struct vnode **vpp;
- char *name;
-#ifdef AFS_AIX51_ENV
- int32long64_t Flags; /* includes FOLLOW... */
-#else
- afs_uint32 Flags; /* includes FOLLOW... */
-#endif
- struct ucred *cred;
+afs_gn_lookup(struct vnode *dp,
+ struct vnode **vpp,
+ char *name,
+ int32long64_t Flags, /* includes FOLLOW... */
+ struct vattr *vattrp,
+ struct ucred *cred)
{
int error;
int flags = Flags;
int
-afs_gn_fid(vp, fidp, cred)
- struct vnode *vp;
- struct fid *fidp;
- struct ucred *cred;
+afs_gn_fid(struct vnode *vp,
+ struct fid *fidp,
+ struct ucred *cred)
{
int error;
int
-afs_gn_open(vp, Flags, ext, vinfop, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t Flags;
- ext_t ext; /* Ignored in AFS */
-#else
- int Flags;
- int ext; /* Ignored in AFS */
-#endif
- struct ucred **vinfop; /* return ptr for fp->f_vinfo, used as fp->f_cred */
- struct ucred *cred;
+afs_gn_open(struct vnode *vp,
+ int32long64_t Flags,
+ ext_t ext,
+ struct ucred **vinfop,
+ struct ucred *cred)
{
int error;
struct vattr va;
afs_osi_Sleep(&tvp->opens);
}
- error = afs_access(vp, modes, cred);
+ error = afs_access(VTOAFS(vp), modes, cred);
if (error) {
goto abort;
}
- error = afs_open(&vp, flags, cred);
+ error = afs_open((struct vcache **) &vp, flags, cred);
if (!error) {
if (flags & FTRUNC) {
VATTR_NULL(&va);
va.va_size = 0;
- error = afs_setattr(vp, &va, cred);
+ error = afs_setattr(VTOAFS(vp), &va, cred);
}
if (flags & FNSHARE)
int
-afs_gn_create(dp, vpp, Flags, name, Mode, vinfop, cred)
- struct vnode *dp;
- struct vnode **vpp;
- char *name;
-#ifdef AFS_AIX51_ENV
- int32long64_t Flags;
- int32long64_t Mode;
-#else
- int Flags;
- int Mode;
-#endif
- struct ucred **vinfop; /* return ptr for fp->f_vinfo, used as fp->f_cred */
- struct ucred *cred;
+afs_gn_create(struct vnode *dp,
+ struct vnode **vpp,
+ int32long64_t Flags,
+ char *name,
+ int32long64_t Mode,
+ struct ucred **vinfop, /* return ptr for fp->f_vinfo, used as fp->f_cred */
+ struct ucred *cred)
+
{
struct vattr va;
enum vcexcl exclusive;
modes |= X_ACC;
if ((flags & FWRITE) || (flags & FTRUNC))
modes |= W_ACC;
- error = afs_create(dp, name, &va, exclusive, modes, vpp, cred);
+ error = afs_create(VTOAFS(dp), name, &va, exclusive, modes, (struct vcache **)vpp, cred);
if (error) {
return error;
}
* execsOrWriters flag (else we'll be treated as the sun's "core"
* case). */
*vinfop = cred; /* save user creds in fp->f_vinfo */
- error = afs_open(vpp, flags, cred);
+ error = afs_open((struct vcache **)vpp, flags, cred);
}
afs_Trace4(afs_iclSetp, CM_TRACE_GCREATE, ICL_TYPE_POINTER, dp,
ICL_TYPE_STRING, name, ICL_TYPE_LONG, mode, ICL_TYPE_LONG,
int
-afs_gn_hold(vp)
- struct vnode *vp;
+afs_gn_hold(struct vnode *vp)
{
AFS_STATCNT(afs_gn_hold);
++(vp->v_count);
int vmPageHog = 0;
int
-afs_gn_rele(vp)
- struct vnode *vp;
+afs_gn_rele(struct vnode *vp)
{
struct vcache *vcp = VTOAFS(vp);
int error = 0;
int
-afs_gn_close(vp, Flags, vinfo, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t Flags;
-#else
- int Flags;
-#endif
- caddr_t vinfo; /* Ignored in AFS */
- struct ucred *cred;
+afs_gn_close(struct vnode *vp,
+ int32long64_t Flags,
+ caddr_t vinfo, /* Ignored in AFS */
+ struct ucred *cred)
{
int error;
struct vcache *tvp = VTOAFS(vp);
int
-afs_gn_map(vp, addr, Len, Off, Flag, cred)
- struct vnode *vp;
- caddr_t addr;
-#ifdef AFS_AIX51_ENV
- uint32long64_t Len, Off, Flag;
-#else
- u_int Len, Off, Flag;
-#endif
- struct ucred *cred;
+afs_gn_map(struct vnode *vp,
+ caddr_t addr,
+ uint32long64_t Len,
+ uint32long64_t Off,
+ uint32long64_t Flag,
+ struct ucred *cred)
{
struct vcache *vcp = VTOAFS(vp);
struct vrequest treq;
#endif
/* Consider V_INTRSEG too for interrupts */
if (error =
- vms_create(&vcp->segid, V_CLIENT, vcp->v.v_gnode, tlen, 0, 0)) {
+ vms_create(&vcp->segid, V_CLIENT, (dev_t) vcp->v.v_gnode, tlen, 0, 0)) {
ReleaseWriteLock(&vcp->lock);
return (EOPNOTSUPP);
}
int
-afs_gn_unmap(vp, flag, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t flag;
-#else
- int flag;
-#endif
- struct ucred *cred;
+afs_gn_unmap(struct vnode *vp,
+ int32long64_t flag,
+ struct ucred *cred)
{
struct vcache *vcp = VTOAFS(vp);
AFS_STATCNT(afs_gn_unmap);
int
-afs_gn_access(vp, Mode, Who, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t Mode;
- int32long64_t Who;
-#else
- int Mode;
- int Who;
-#endif
- struct ucred *cred;
+afs_gn_access(struct vnode *vp,
+ int32long64_t Mode,
+ int32long64_t Who,
+ struct ucred *cred)
{
int error;
struct vattr vattr;
goto out;
}
- error = afs_access(vp, mode, cred);
+ error = afs_access(VTOAFS(vp), mode, cred);
if (!error) {
/* Additional testing */
if (who == ACC_OTHERS || who == ACC_ANY) {
- error = afs_getattr(vp, &vattr, cred);
+ error = afs_getattr(VTOAFS(vp), &vattr, cred);
if (!error) {
if (who == ACC_ANY) {
if (((vattr.va_mode >> 6) & mode) == mode) {
error = EACCES;
}
} else if (who == ACC_ALL) {
- error = afs_getattr(vp, &vattr, cred);
+ error = afs_getattr(VTOAFS(vp), &vattr, cred);
if (!error) {
if ((!((vattr.va_mode >> 6) & mode))
|| (!((vattr.va_mode >> 3) & mode))
int
-afs_gn_getattr(vp, vattrp, cred)
- struct vnode *vp;
- struct vattr *vattrp;
- struct ucred *cred;
+afs_gn_getattr(struct vnode *vp,
+ struct vattr *vattrp,
+ struct ucred *cred)
{
int error;
AFS_STATCNT(afs_gn_getattr);
- error = afs_getattr(vp, vattrp, cred);
+ error = afs_getattr(VTOAFS(vp), vattrp, cred);
afs_Trace2(afs_iclSetp, CM_TRACE_GGETATTR, ICL_TYPE_POINTER, vp,
ICL_TYPE_LONG, error);
return (error);
int
-afs_gn_setattr(vp, op, arg1, arg2, arg3, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t op;
- int32long64_t arg1;
- int32long64_t arg2;
- int32long64_t arg3;
-#else
- int op;
- int arg1;
- int arg2;
- int arg3;
-#endif
- struct ucred *cred;
+afs_gn_setattr(struct vnode *vp,
+ int32long64_t op,
+ int32long64_t arg1,
+ int32long64_t arg2,
+ int32long64_t arg3,
+ struct ucred *cred)
{
struct vattr va;
int error = 0;
goto out;
}
- error = afs_setattr(vp, &va, cred);
+ error = afs_setattr(VTOAFS(vp), &va, cred);
out:
afs_Trace2(afs_iclSetp, CM_TRACE_GSETATTR, ICL_TYPE_POINTER, vp,
ICL_TYPE_LONG, error);
char zero_buffer[PAGESIZE];
int
-afs_gn_fclear(vp, flags, offset, length, vinfo, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t flags;
-#else
- int flags;
-#endif
- offset_t offset;
- offset_t length;
- caddr_t vinfo;
- struct ucred *cred;
+afs_gn_fclear(struct vnode *vp,
+ int32long64_t flags,
+ offset_t offset,
+ offset_t length,
+ caddr_t vinfo,
+ struct ucred *cred)
{
int i, len, error = 0;
struct iovec iov;
struct uio uio;
static int fclear_init = 0;
- register struct vcache *avc = VTOAFS(vp);
+ struct vcache *avc = VTOAFS(vp);
AFS_STATCNT(afs_gn_fclear);
if (!fclear_init) {
uio.afsio_iovcnt = 1;
uio.afsio_seg = AFS_UIOSYS;
uio.afsio_resid = iov.iov_len;
- if (error = afs_rdwr(vp, &uio, UIO_WRITE, 0, cred))
+ if (error = afs_rdwr(VTOAFS(vp), &uio, UIO_WRITE, 0, cred))
break;
}
afs_Trace4(afs_iclSetp, CM_TRACE_GFCLEAR, ICL_TYPE_POINTER, vp,
int
-afs_gn_fsync(vp, flags, vinfo, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t flags; /* Not used by AFS */
- int32long64_t vinfo; /* Not used by AFS */
-#else
- int flags; /* Not used by AFS */
- caddr_t vinfo; /* Not used by AFS */
-#endif
- struct ucred *cred;
+afs_gn_fsync(struct vnode *vp,
+ int32long64_t flags, /* Not used by AFS */
+ int32long64_t vinfo, /* Not used by AFS */
+ struct ucred *cred)
{
int error;
int
-afs_gn_ftrunc(vp, flags, length, vinfo, cred)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t flags; /* Ignored in AFS */
-#else
- int flags; /* Ignored in AFS */
-#endif
- offset_t length;
- caddr_t vinfo; /* Ignored in AFS */
- struct ucred *cred;
+afs_gn_ftrunc(struct vnode *vp,
+ int32long64_t flags,
+ offset_t length,
+ caddr_t vinfo,
+ struct ucred *cred)
{
struct vattr va;
int error;
AFS_STATCNT(afs_gn_ftrunc);
VATTR_NULL(&va);
va.va_size = length;
- error = afs_setattr(vp, &va, cred);
+ error = afs_setattr(VTOAFS(vp), &va, cred);
afs_Trace4(afs_iclSetp, CM_TRACE_GFTRUNC, ICL_TYPE_POINTER, vp,
ICL_TYPE_LONG, flags, ICL_TYPE_OFFSET,
ICL_HANDLE_OFFSET(length), ICL_TYPE_LONG, error);
#define MIN_PAGE_HOG_SIZE 8388608
int
-afs_gn_rdwr(vp, op, Flags, ubuf, ext, vinfo, vattrp, cred)
- struct vnode *vp;
- enum uio_rw op;
-#ifdef AFS_AIX51_ENV
- int32long64_t Flags;
- ext_t ext; /* Ignored in AFS */
-#else
- int Flags;
- int ext; /* Ignored in AFS */
-#endif
- struct uio *ubuf;
- caddr_t vinfo; /* Ignored in AFS */
- struct vattr *vattrp;
- struct ucred *cred;
+afs_gn_rdwr(struct vnode *vp,
+ enum uio_rw op,
+ int32long64_t Flags,
+ struct uio *ubuf,
+ ext_t ext, /* Ignored in AFS */
+ caddr_t vinfo, /* Ignored in AFS */
+ struct vattr *vattrp,
+ struct ucred *cred)
{
- register struct vcache *vcp = VTOAFS(vp);
+ struct vcache *vcp = VTOAFS(vp);
struct vrequest treq;
int error = 0;
int free_cred = 0;
if (op == UIO_WRITE) {
#ifdef AFS_64BIT_CLIENT
if (ubuf->afsio_offset < afs_vmMappingEnd) {
-#endif /* AFS_64BIT_ENV */
+#endif /* AFS_64BIT_CLIENT */
ObtainWriteLock(&vcp->lock, 240);
vcp->states |= CDirty; /* Set the dirty bit */
afs_FakeOpen(vcp);
ReleaseWriteLock(&vcp->lock);
#ifdef AFS_64BIT_CLIENT
}
-#endif /* AFS_64BIT_ENV */
+#endif /* AFS_64BIT_CLIENT */
}
error = afs_vm_rdwr(vp, ubuf, op, flags, cred);
if (op == UIO_WRITE) {
#ifdef AFS_64BIT_CLIENT
if (ubuf->afsio_offset < afs_vmMappingEnd) {
-#endif /* AFS_64BIT_ENV */
+#endif /* AFS_64BIT_CLIENT */
ObtainWriteLock(&vcp->lock, 241);
afs_FakeClose(vcp, cred); /* XXXX For nfs trans and cores XXXX */
ReleaseWriteLock(&vcp->lock);
#ifdef AFS_64BIT_CLIENT
}
-#endif /* AFS_64BIT_ENV */
+#endif /* AFS_64BIT_CLIENT */
}
if (vattrp != NULL && error == 0)
afs_gn_getattr(vp, vattrp, cred);
}
#define AFS_MAX_VM_CHUNKS 10
-afs_vm_rdwr(vp, uiop, rw, ioflag, credp)
- register struct vnode *vp;
- struct uio *uiop;
- enum uio_rw rw;
- int ioflag;
- struct ucred *credp;
-{
- register afs_int32 code = 0;
- register int i;
+static int
+afs_vm_rdwr(struct vnode *vp,
+ struct uio *uiop,
+ enum uio_rw rw,
+ int ioflag,
+ struct ucred *credp)
+{
+ afs_int32 code = 0;
+ int i;
afs_int32 blockSize;
afs_size_t fileSize, xfrOffset, offset, old_offset, xfrSize;
vmsize_t txfrSize;
int mixed = 0;
afs_size_t add2resid = 0;
#endif /* AFS_64BIT_CLIENT */
- register struct vcache *vcp = VTOAFS(vp);
+ struct vcache *vcp = VTOAFS(vp);
struct dcache *tdc;
afs_size_t start_offset;
afs_int32 save_resid = uiop->afsio_resid;
#endif
/* Consider V_INTRSEG too for interrupts */
if (code =
- vms_create(&vcp->segid, V_CLIENT, vcp->v.v_gnode, tlen, 0, 0)) {
+ vms_create(&vcp->segid, V_CLIENT, (dev_t) vcp->v.v_gnode, tlen, 0, 0)) {
goto fail;
}
#ifdef AFS_64BIT_KERNEL
}
-afs_direct_rdwr(vp, uiop, rw, ioflag, credp)
- register struct vnode *vp;
- struct uio *uiop;
- enum uio_rw rw;
- int ioflag;
- struct ucred *credp;
+static int
+afs_direct_rdwr(struct vnode *vp,
+ struct uio *uiop,
+ enum uio_rw rw,
+ int ioflag,
+ struct ucred *credp)
{
- register afs_int32 code = 0;
+ afs_int32 code = 0;
afs_size_t fileSize, xfrOffset, offset, old_offset, xfrSize;
struct vcache *vcp = VTOAFS(vp);
afs_int32 save_resid = uiop->afsio_resid;
afs_Trace3(afs_iclSetp, CM_TRACE_DIRECTRDWR, ICL_TYPE_POINTER, vp,
ICL_TYPE_OFFSET, ICL_HANDLE_OFFSET(uiop->afsio_offset),
ICL_TYPE_LONG, uiop->afsio_resid);
- code = afs_rdwr(vp, uiop, rw, ioflag, credp);
+ code = afs_rdwr(VTOAFS(vp), uiop, rw, ioflag, credp);
if (code != 0) {
uiop->afsio_resid = save_resid;
} else {
static int
-lock_normalize(vp, lckdat, offset, cred)
- struct vnode *vp;
- struct eflock *lckdat;
- offset_t offset;
- struct ucred *cred;
+lock_normalize(struct vnode *vp,
+ struct flock *lckdat,
+ offset_t offset,
+ struct ucred *cred)
{
struct vattr vattr;
int code;
lckdat->l_start += (off_t) offset;
break;
case 2:
- code = afs_getattr(vp, &vattr, cred);
+ code = afs_getattr(VTOAFS(vp), &vattr, cred);
if (code != 0)
return code;
lckdat->l_start += (off_t) vattr.va_size;
-afs_gn_lockctl(vp, offset, lckdat, cmd, ignored_fcn, ignored_id, cred)
- void (*ignored_fcn) ();
- void *ignored_id;
- struct vnode *vp;
- offset_t offset;
- struct eflock *lckdat;
- struct ucred *cred;
-#ifdef AFS_AIX51_ENV
- int32long64_t cmd;
-#else
- int cmd;
-#endif
+int
+afs_gn_lockctl(struct vnode *vp,
+ offset_t offset,
+ struct eflock *lckdat,
+ int32long64_t cmd,
+ int (*ignored_fcn) (),
+#ifdef AFS_AIX52_ENV /* Changed in AIX 5.2 and up */
+ ulong * ignored_id,
+#else /* AFS_AIX52_ENV */
+ ulong32int64_t * ignored_id,
+#endif /* AFS_AIX52_ENV */
+ struct ucred *cred)
{
int error, ncmd = 0;
struct flock flkd;
/* NOTE: In the nfs glue routine (nfs_gn2sun.c) the order was wrong (vp, flags, cmd, arg, ext); was that another typo? */
int
-afs_gn_ioctl(vp, Cmd, arg, flags, channel, ext)
- struct vnode *vp;
-#ifdef AFS_AIX51_ENV
- int32long64_t Cmd;
-#else
- int Cmd;
-#endif
- int arg;
- int flags; /* Ignored in AFS */
- int channel; /* Ignored in AFS */
- int ext; /* Ignored in AFS */
+afs_gn_ioctl(struct vnode *vp,
+ int32long64_t Cmd,
+ caddr_t arg,
+ size_t flags, /* Ignored in AFS */
+ ext_t ext, /* Ignored in AFS */
+ struct ucred *crp) /* Ignored in AFS */
{
int error;
int cmd = Cmd;
int
-afs_gn_readlink(vp, uiop, cred)
- struct vnode *vp;
- struct uio *uiop;
- struct ucred *cred;
+afs_gn_readlink(struct vnode *vp,
+ struct uio *uiop,
+ struct ucred *cred)
{
int error;
int
-afs_gn_select(vp, which, vinfo, mpx)
- struct vnode *vp;
- int which;
- caddr_t *vinfo;
- caddr_t *mpx;
+afs_gn_select(struct vnode *vp,
+ int32long64_t correl,
+ ushort e,
+ ushort *re,
+ void (* notify)(),
+ caddr_t vinfo,
+ struct ucred *crp)
{
AFS_STATCNT(afs_gn_select);
/* NO SUPPORT for this in afs YET! */
int
-afs_gn_symlink(vp, link, target, cred)
- struct vnode *vp;
- char *target;
- char *link;
- struct ucred *cred;
+afs_gn_symlink(struct vnode *vp,
+ char *link,
+ char *target,
+ struct ucred *cred)
{
struct vattr va;
int error;
int
-afs_gn_readdir(vp, uiop, cred)
- struct vnode *vp;
- struct uio *uiop;
- struct ucred *cred;
+afs_gn_readdir(struct vnode *vp,
+ struct uio *uiop,
+ struct ucred *cred)
{
int error;
extern Simple_lock afs_asyncbuf_lock;
+extern struct buf *afs_asyncbuf;
+extern int afs_asyncbuf_cv;
+
/*
* Buffers are ranked by age. A buffer's age is the value of afs_biotime
- * when the buffer is processed by naix_vmstrategy. afs_biotime is
+ * when the buffer is processed by afs_gn_strategy. afs_biotime is
* incremented for each buffer. A buffer's age is kept in its av_back field.
* The age ranking is used by the daemons, which favor older buffers.
*/
afs_int32 afs_biotime = 0;
-extern struct buf *afs_asyncbuf;
-extern int afs_asyncbuf_cv;
/* This function is called with a list of buffers, threaded through
* the av_forw field. Our goal is to copy the list of buffers into the
* afs_asyncbuf list, sorting buffers into sublists linked by the b_work field.
* be increased to cover all of the buffers in the b_work queue.
*/
#define AIX_VM_BLKSIZE 8192
-afs_gn_strategy(abp, cred)
- struct ucred *cred;
- register struct buf *abp;
+/* Note: This function seems to be called as ddstrategy entry point, ie
+ * has one argument. However, it also needs to be present as
+ * vn_strategy entry point which has three arguments, but it seems to never
+ * be called in that capacity (it would fail horribly due to the argument
+ * mismatch). I'm confused, but it obviously has to be this way, maybe
+ * some IBM people can shed som light on this
+ */
+int
+afs_gn_strategy(struct buf *abp)
{
- register struct buf **lbp, *tbp;
-#ifdef AFS_64BIT_KERNEL
- afs_int64 *lwbp; /* last quy in work chain */
-#else
- int *lwbp; /* last guy in work chain */
-#endif
+ struct buf **lbp, *tbp;
+ struct buf **lwbp;
struct buf *nbp, *qbp, *qnbp, *firstComparable;
int doMerge;
int oldPriority;
*/
continue;
}
+
/* we may have actually added the "new" firstComparable */
if (tbp->av_forw == firstComparable)
firstComparable = tbp;
doMerge = 1; /* both integral #s of blocks */
}
if (doMerge) {
- register struct buf *xbp;
+ struct buf *xbp;
/* merge both of these blocks together */
/* first set age to the older of the two */
-#ifdef AFS_64BIT_KERNEL
- if ((afs_int64) qnbp->av_back - (afs_int64) qbp->av_back <
- 0)
-#else
- if ((int)qnbp->av_back - (int)qbp->av_back < 0)
-#endif
+ if ((int32long64_t) qnbp->av_back -
+ (int32long64_t) qbp->av_back < 0) {
qbp->av_back = qnbp->av_back;
- lwbp = &qbp->b_work;
+ }
+ lwbp = (struct buf **) &qbp->b_work;
/* find end of qbp's work queue */
- for (xbp = (struct buf *)(*lwbp); xbp;
- lwbp = &xbp->b_work, xbp = (struct buf *)(*lwbp));
+ for (xbp = *lwbp; xbp;
+ lwbp = (struct buf **) &xbp->b_work, xbp = *lwbp);
/*
* now setting *lwbp will change the last ptr in the qbp's
* work chain
*/
qbp->av_forw = qnbp->av_forw; /* splice out qnbp */
qbp->b_bcount += qnbp->b_bcount; /* fix count */
-#ifdef AFS_64BIT_KERNEL
- *lwbp = (afs_int64) qnbp; /* append qnbp to end */
-#else
- *lwbp = (int)qnbp; /* append qnbp to end */
-#endif
+ *lwbp = qnbp; /* append qnbp to end */
/*
* note that qnbp is bogus, but it doesn't matter because
* we're going to restart the for loop now.
}
-afs_inactive(avc, acred)
- register struct vcache *avc;
- struct AFS_UCRED *acred;
+int
+afs_inactive(struct vcache *avc,
+ struct AFS_UCRED *acred)
{
afs_InactiveVCache(avc, acred);
}
int
-afs_gn_revoke(vp)
- struct vnode *vp;
+afs_gn_revoke(struct vnode *vp,
+ int32long64_t cmd,
+ int32long64_t flag,
+ struct vattr *vinfop,
+ struct ucred *crp)
{
AFS_STATCNT(afs_gn_revoke);
/* NO SUPPORT for this in afs YET! */
}
int
-afs_gn_getacl(vp, uiop, cred)
- struct vnode *vp;
- struct uio *uiop;
- struct ucred *cred;
+afs_gn_getacl(struct vnode *vp,
+ struct uio *uiop,
+ struct ucred *cred)
{
return ENOSYS;
};
int
-afs_gn_setacl(vp, uiop, cred)
- struct vnode *vp;
- struct uio *uiop;
- struct ucred *cred;
+afs_gn_setacl(struct vnode *vp,
+ struct uio *uiop,
+ struct ucred *cred)
{
return ENOSYS;
};
int
-afs_gn_getpcl(vp, uiop, cred)
- struct vnode *vp;
- struct uio *uiop;
- struct ucred *cred;
+afs_gn_getpcl(struct vnode *vp,
+ struct uio *uiop,
+ struct ucred *cred)
{
return ENOSYS;
};
int
-afs_gn_setpcl(vp, uiop, cred)
- struct vnode *vp;
- struct uio *uiop;
- struct ucred *cred;
+afs_gn_setpcl(struct vnode *vp,
+ struct uio *uiop,
+ struct ucred *cred)
{
return ENOSYS;
};
+
+
+int
+afs_gn_seek(struct vnode* vp, offset_t * offp, struct ucred * crp)
+{
+/*
+ * File systems which do not wish to do offset validation can simply
+ * return 0. File systems which do not provide the vn_seek entry point
+ * will have a maximum offset of OFF_MAX (2 gigabytes minus 1) enforced
+ * by the logical file system.
+ */
+ return 0;
+}
+
+
int
afs_gn_enosys()
{
return ENOSYS;
}
+/*
+ * declare a struct vnodeops and initialize it with ptrs to all functions
+ */
+struct vnodeops afs_gn_vnodeops = {
+ /* creation/naming/deletion */
+ afs_gn_link,
+ afs_gn_mkdir,
+ afs_gn_mknod,
+ afs_gn_remove,
+ afs_gn_rename,
+ afs_gn_rmdir,
+ /* lookup, file handle stuff */
+ afs_gn_lookup,
+ (int(*)(struct vnode*,struct fileid*,struct ucred*))
+ afs_gn_fid,
+ /* access to files */
+ (int(*)(struct vnode *, int32long64_t, ext_t, caddr_t *,struct ucred *))
+ afs_gn_open,
+ (int(*)(struct vnode *, struct vnode **, int32long64_t,caddr_t, int32long64_t, caddr_t *, struct ucred *))
+ afs_gn_create,
+ afs_gn_hold,
+ afs_gn_rele,
+ afs_gn_close,
+ afs_gn_map,
+ afs_gn_unmap,
+ /* manipulate attributes of files */
+ afs_gn_access,
+ afs_gn_getattr,
+ afs_gn_setattr,
+ /* data update operations */
+ afs_gn_fclear,
+ afs_gn_fsync,
+ afs_gn_ftrunc,
+ afs_gn_rdwr,
+ afs_gn_lockctl,
+ /* extensions */
+ afs_gn_ioctl,
+ afs_gn_readlink,
+ afs_gn_select,
+ afs_gn_symlink,
+ afs_gn_readdir,
+ /* buffer ops */
+ (int(*)(struct vnode*,struct buf*,struct ucred*))
+ afs_gn_strategy,
+ /* security things */
+ afs_gn_revoke,
+ afs_gn_getacl,
+ afs_gn_setacl,
+ afs_gn_getpcl,
+ afs_gn_setpcl,
+ afs_gn_seek,
+ (int(*)(struct vnode *, int32long64_t, int32long64_t, offset_t, offset_t, struct ucred *))
+ afs_gn_enosys, /* vn_fsync_range */
+ (int(*)(struct vnode *, struct vnode **, int32long64_t, char *, struct vattr *, int32long64_t, caddr_t *, struct ucred *))
+ afs_gn_enosys, /* vn_create_attr */
+ (int(*)(struct vnode *, int32long64_t, void *, size_t, struct ucred *))
+ afs_gn_enosys, /* vn_finfo */
+ (int(*)(struct vnode *, caddr_t, offset_t, offset_t, uint32long64_t, uint32long64_t, struct ucred *))
+ afs_gn_enosys, /* vn_map_lloff */
+ (int(*)(struct vnode*,struct uio*,int*,struct ucred*))
+ afs_gn_enosys, /* vn_readdir_eofp */
+ (int(*)(struct vnode *, enum uio_rw, int32long64_t, struct uio *, ext_t , caddr_t, struct vattr *, struct vattr *, struct ucred *))
+ afs_gn_enosys, /* vn_rdwr_attr */
+ (int(*)(struct vnode*,int,void*,struct ucred*))
+ afs_gn_enosys, /* vn_memcntl */
+#ifdef AFS_AIX53_ENV /* Present in AIX 5.3 and up */
+ (int(*)(struct vnode*,const char*,struct uio*,struct ucred*))
+ afs_gn_enosys, /* vn_getea */
+ (int(*)(struct vnode*,const char*,struct uio*,int,struct ucred*))
+ afs_gn_enosys, /* vn_setea */
+ (int(*)(struct vnode *, struct uio *, struct ucred *))
+ afs_gn_enosys, /* vn_listea */
+ (int(*)(struct vnode *, const char *, struct ucred *))
+ afs_gn_enosys, /* vn_removeea */
+ (int(*)(struct vnode *, const char *, struct vattr *, struct ucred *))
+ afs_gn_enosys, /* vn_statea */
+ (int(*)(struct vnode *, uint64_t, acl_type_t *, struct uio *, size_t *, mode_t *, struct ucred *))
+ afs_gn_enosys, /* vn_getxacl */
+ (int(*)(struct vnode *, uint64_t, acl_type_t, struct uio *, mode_t, struct ucred *))
+ afs_gn_enosys, /* vn_setxacl */
+#else /* AFS_AIX53_ENV */
+ afs_gn_enosys, /* vn_spare7 */
+ afs_gn_enosys, /* vn_spare8 */
+ afs_gn_enosys, /* vn_spare9 */
+ afs_gn_enosys, /* vn_spareA */
+ afs_gn_enosys, /* vn_spareB */
+ afs_gn_enosys, /* vn_spareC */
+ afs_gn_enosys, /* vn_spareD */
+#endif /* AFS_AIX53_ENV */
+ afs_gn_enosys, /* vn_spareE */
+ afs_gn_enosys /* vn_spareF */
+#ifdef AFS_AIX51_ENV
+ ,(int(*)(struct gnode*,long long,char*,unsigned long*, unsigned long*,unsigned int*))
+ afs_gn_enosys, /* pagerBackRange */
+ (int64_t(*)(struct gnode*))
+ afs_gn_enosys, /* pagerGetFileSize */
+ (void(*)(struct gnode *, vpn_t, vpn_t *, vpn_t *, vpn_t *, boolean_t))
+ afs_gn_enosys, /* pagerReadAhead */
+ (void(*)(struct gnode *, int64_t, int64_t, uint))
+ afs_gn_enosys, /* pagerReadWriteBehind */
+ (void(*)(struct gnode*,long long,unsigned long,unsigned long,unsigned int))
+ afs_gn_enosys /* pagerEndCopy */
+#endif
+};
+struct vnodeops *afs_ops = &afs_gn_vnodeops;
+
+
+
extern struct vfsops Afs_vfsops;
-extern struct vnodeops afs_gn_vnodeops;
extern int Afs_init();
#define AFS_CALLOUT_TBL_SIZE 256
static
vfs_mount(struct vfs *a, struct ucred *b)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_unmount(struct vfs *a, int b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_root(struct vfs *a, struct vnode **b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_statfs(struct vfs *a, struct statfs *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_sync(struct gfs *a)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_vget(struct vfs *a, struct vnode **b, struct fileid *c, struct ucred *d)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_cntl(struct vfs *a, int b, caddr_t c, size_t d, struct ucred *e)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_quotactl(struct vfs *a, int b, uid_t c, caddr_t d, struct ucred *e)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vfs_syncvfs(struct gfs *a, struct vfs *b, int c, struct ucred *d)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_link(struct vnode *a, struct vnode *b, char *c, struct ucred *d)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_mkdir(struct vnode *a, char *b, int32long64_t c, struct ucred *d)
{
-#else
-vn_mkdir(struct vnode *a, char *b, int c, struct ucred *d)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_mknod(struct vnode *a, caddr_t b, int32long64_t c, dev_t d,
struct ucred *e)
{
-#else
-vn_mknod(struct vnode *a, caddr_t b, int c, dev_t d, struct ucred *e)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_remove(struct vnode *a, struct vnode *b, char *c, struct ucred *d)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
vn_rename(struct vnode *a, struct vnode *b, caddr_t c, struct vnode *d,
struct vnode *e, caddr_t f, struct ucred *g)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_rmdir(struct vnode *a, struct vnode *b, char *c, struct ucred *d)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
- vn_lookup(struct vnode *a, struct vnode **b, char *c, int32long64_t d,
-#else
-vn_lookup(struct vnode *a, struct vnode **b, char *c, int d,
-#endif
+vn_lookup(struct vnode *a, struct vnode **b, char *c, int32long64_t d,
struct vattr *v, struct ucred *e)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_fid(struct vnode *a, struct fileid *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
-vn_open(struct vnode *a, int b, int c, caddr_t * d, struct ucred *e)
-{
-#else
-vn_open(struct vnode *a, int32long64_t b, ext_t c, caddr_t * d,
+vn_open(struct vnode *a,
+ int32long64_t b,
+ ext_t c,
+ caddr_t * d,
struct ucred *e)
{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_create(struct vnode *a, struct vnode **b, int32long64_t c, caddr_t d,
int32long64_t e, caddr_t * f, struct ucred *g)
{
-#else
-vn_create(struct vnode *a, struct vnode **b, int c, caddr_t d, int e,
- caddr_t * f, struct ucred *g)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_hold(struct vnode *a)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_rele(struct vnode *a)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_close(struct vnode *a, int32long64_t b, caddr_t c, struct ucred *d)
{
-#else
-vn_close(struct vnode *a, int b, caddr_t c, struct ucred *d)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_map(struct vnode *a, caddr_t b, uint32long64_t c, uint32long64_t d,
uint32long64_t e, struct ucred *f)
{
-#else
-vn_map(struct vnode *a, caddr_t b, uint c, uint d, uint e, struct ucred *f)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_unmap(struct vnode *a, int32long64_t b, struct ucred *c)
{
-#else
-vn_unmap(struct vnode *a, int b, struct ucred *c)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_access(struct vnode *a, int32long64_t b, int32long64_t c, struct ucred *d)
{
-#else
-vn_access(struct vnode *a, int b, int c, struct ucred *d)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_getattr(struct vnode *a, struct vattr *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_setattr(struct vnode *a, int32long64_t b, int32long64_t c, int32long64_t d,
int32long64_t e, struct ucred *f)
{
-#else
-vn_setattr(struct vnode *a, int b, int c, int d, int e, struct ucred *f)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
- vn_fclear(struct vnode *a, int32long64_t b, offset_t c, offset_t d
-#else
-vn_fclear(struct vnode *a, int b, offset_t c, offset_t d
-#endif
+vn_fclear(struct vnode *a, int32long64_t b, offset_t c, offset_t d
, caddr_t e, struct ucred *f)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_fsync(struct vnode *a, int32long64_t b, int32long64_t c, struct ucred *d)
{
-#else
-vn_fsync(struct vnode *a, int b, int c, struct ucred *d)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_ftrunc(struct vnode *a, int32long64_t b, offset_t c, caddr_t d,
struct ucred *e)
{
-#else
-vn_ftrunc(struct vnode *a, int b, offset_t c, caddr_t d, struct ucred *e)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_rdwr(struct vnode *a, enum uio_rw b, int32long64_t c, struct uio *d,
ext_t e, caddr_t f, struct vattr *v, struct ucred *g)
{
-#else
-vn_rdwr(struct vnode *a, enum uio_rw b, int c, struct uio *d, int e,
- caddr_t f, struct vattr *v, struct ucred *g)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
-vn_lockctl(struct vnode *a, offset_t b, struct eflock *c, int32long64_t d,
- int (*e) (), ulong32int64_t * f, struct ucred *g)
-{
-#else
-vn_lockctl(struct vnode *a, offset_t b, struct eflock *c, int d, int (*e) (),
- ulong * f, struct ucred *g)
-{
-#endif
- register glockOwner, ret;
+vn_lockctl(struct vnode *a,
+ offset_t b,
+ struct eflock *c,
+ int32long64_t d,
+ int (*e) (),
+#ifdef AFS_AIX52_ENV /* Changed in AIX 5.2 and up */
+ ulong * f,
+#else /* AFS_AIX52_ENV */
+ ulong32int64_t * f,
+#endif /* AFS_AIX52_ENV */
+ struct ucred *g)
+{
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_ioctl(struct vnode *a, int32long64_t b, caddr_t c, size_t d, ext_t e,
struct ucred *f)
{
-#else
-vn_ioctl(struct vnode *a, int b, caddr_t c, size_t d, int e, struct ucred *f)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_readlink(struct vnode *a, struct uio *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
- vn_select(struct vnode *a, int32long64_t b, ushort c, ushort * d,
- void (*e) ()
-#else
-vn_select(struct vnode *a, int b, ushort c, ushort * d, void (*e) ()
-#endif
- , caddr_t f, struct ucred *g)
+vn_select(struct vnode *a, int32long64_t b, ushort c, ushort * d,
+ void (*e) (), caddr_t f, struct ucred *g)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_symlink(struct vnode *a, char *b, char *c, struct ucred *d)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_readdir(struct vnode *a, struct uio *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
}
static
-#ifdef AFS_AIX51_ENV
vn_revoke(struct vnode *a, int32long64_t b, int32long64_t c, struct vattr *d,
struct ucred *e)
{
-#else
-vn_revoke(struct vnode *a, int b, int c, struct vattr *d, struct ucred *e)
-{
-#endif
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_getacl(struct vnode *a, struct uio *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_setacl(struct vnode *a, struct uio *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_getpcl(struct vnode *a, struct uio *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
static
vn_setpcl(struct vnode *a, struct uio *b, struct ucred *c)
{
- register glockOwner, ret;
+ int glockOwner, ret;
glockOwner = ISAFS_GLOCK();
if (!glockOwner)
return ret;
}
-extern int afs_gn_strategy();
struct vnodeops locked_afs_gn_vnodeops = {
vn_link,
vn_select,
vn_symlink,
vn_readdir,
- afs_gn_strategy, /* no locking!!! (discovered the hard way) */
+ (int(*)(struct vnode*,struct buf*,struct ucred*))
+ afs_gn_strategy, /* no locking!!! (discovered the hard way) */
vn_revoke,
vn_getacl,
vn_setacl,
vn_getpcl,
vn_setpcl,
- afs_gn_enosys, /* vn_seek */
- afs_gn_enosys, /* vn_fsync_range */
- afs_gn_enosys, /* vn_create_attr */
- afs_gn_enosys, /* vn_finfo */
- afs_gn_enosys, /* vn_map_lloff */
- afs_gn_enosys, /* vn_readdir_eofp */
- afs_gn_enosys, /* vn_rdwr_attr */
- afs_gn_enosys, /* vn_memcntl */
+ afs_gn_seek,
+ (int(*)(struct vnode *, int32long64_t, int32long64_t, offset_t, offset_t, struct ucred *))
+ afs_gn_enosys, /* vn_fsync_range */
+ (int(*)(struct vnode *, struct vnode **, int32long64_t, char *, struct vattr *, int32long64_t, caddr_t *, struct ucred *))
+ afs_gn_enosys, /* vn_create_attr */
+ (int(*)(struct vnode *, int32long64_t, void *, size_t, struct ucred *))
+ afs_gn_enosys, /* vn_finfo */
+ (int(*)(struct vnode *, caddr_t, offset_t, offset_t, uint32long64_t, uint32long64_t, struct ucred *))
+ afs_gn_enosys, /* vn_map_lloff */
+ (int(*)(struct vnode*,struct uio*,int*,struct ucred*))
+ afs_gn_enosys, /* vn_readdir_eofp */
+ (int(*)(struct vnode *, enum uio_rw, int32long64_t, struct uio *, ext_t , caddr_t, struct vattr *, struct vattr *, struct ucred *))
+ afs_gn_enosys, /* vn_rdwr_attr */
+ (int(*)(struct vnode*,int,void*,struct ucred*))
+ afs_gn_enosys, /* vn_memcntl */
+#ifdef AFS_AIX53_ENV /* Present in AIX 5.3 and up */
+ (int(*)(struct vnode*,const char*,struct uio*,struct ucred*))
+ afs_gn_enosys, /* vn_getea */
+ (int(*)(struct vnode*,const char*,struct uio*,int,struct ucred*))
+ afs_gn_enosys, /* vn_setea */
+ (int(*)(struct vnode *, struct uio *, struct ucred *))
+ afs_gn_enosys, /* vn_listea */
+ (int(*)(struct vnode *, const char *, struct ucred *))
+ afs_gn_enosys, /* vn_removeea */
+ (int(*)(struct vnode *, const char *, struct vattr *, struct ucred *))
+ afs_gn_enosys, /* vn_statea */
+ (int(*)(struct vnode *, uint64_t, acl_type_t *, struct uio *, size_t *, mode_t *, struct ucred *))
+ afs_gn_enosys, /* vn_getxacl */
+ (int(*)(struct vnode *, uint64_t, acl_type_t, struct uio *, mode_t, struct ucred *))
+ afs_gn_enosys, /* vn_setxacl */
+#else /* AFS_AIX53_ENV */
afs_gn_enosys, /* vn_spare7 */
afs_gn_enosys, /* vn_spare8 */
afs_gn_enosys, /* vn_spare9 */
afs_gn_enosys, /* vn_spareB */
afs_gn_enosys, /* vn_spareC */
afs_gn_enosys, /* vn_spareD */
+#endif /* AFS_AIX53_ENV */
afs_gn_enosys, /* vn_spareE */
afs_gn_enosys /* vn_spareF */
#ifdef AFS_AIX51_ENV
- , afs_gn_enosys, /* pagerBackRange */
- afs_gn_enosys, /* pagerGetFileSize */
- afs_gn_enosys, /* pagerReadAhead */
- afs_gn_enosys, /* pagerWriteBehind */
- afs_gn_enosys /* pagerEndCopy */
+ ,(int(*)(struct gnode*,long long,char*,unsigned long*, unsigned long*,unsigned int*))
+ afs_gn_enosys, /* pagerBackRange */
+ (int64_t(*)(struct gnode*))
+ afs_gn_enosys, /* pagerGetFileSize */
+ (void(*)(struct gnode *, vpn_t, vpn_t *, vpn_t *, vpn_t *, boolean_t))
+ afs_gn_enosys, /* pagerReadAhead */
+ (void(*)(struct gnode *, int64_t, int64_t, uint))
+ afs_gn_enosys, /* pagerReadWriteBehind */
+ (void(*)(struct gnode*,long long,unsigned long,unsigned long,unsigned int))
+ afs_gn_enosys /* pagerEndCopy */
#endif
};
AFS_MOUNT_AFS,
"afs",
Afs_init,
- GFS_VERSION4 | GFS_REMOTE,
+ GFS_VERSION4 | GFS_VERSION42 | GFS_REMOTE,
NULL
};