#include "../h/chownx.h"
#include "../h/systm.h"
#include "../h/access.h"
+#ifdef AFS_AIX51_ENV
+#include "../h/acl.h"
+#endif
#include "../rpc/types.h"
#include "../afs/osi_vfs.h"
#include "../netinet/in.h"
afs_gn_getpcl,
afs_gn_setpcl,
afs_gn_enosys, /* vn_seek */
- afs_gn_enosys, /* vn_spare0 */
- afs_gn_enosys, /* vn_spare1 */
- afs_gn_enosys, /* vn_spare2 */
- afs_gn_enosys, /* vn_spare3 */
- afs_gn_enosys, /* vn_spare4 */
- afs_gn_enosys, /* vn_spare5 */
- afs_gn_enosys, /* vn_spare6 */
+ 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_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_mkdir(dp, name, mode, cred)
+afs_gn_mkdir(dp, name, Mode, cred)
struct vnode *dp;
char *name;
-int mode;
+#ifdef AFS_AIX51_ENV
+int32long64_t Mode;
+#else
+int Mode;
+#endif
struct ucred *cred;
{
struct vattr va;
struct vnode *vp;
int error;
+ int mode = Mode;
AFS_STATCNT(afs_gn_mkdir);
VATTR_NULL(&va);
int
-afs_gn_mknod(dp, name, mode, dev, cred)
+afs_gn_mknod(dp, name, Mode, dev, cred)
struct vnode *dp;
char *name;
-int mode;
+#ifdef AFS_AIX51_ENV
+int Mode;
+#else
+int Mode;
+#endif
dev_t dev;
struct ucred *cred;
{
struct vattr va;
struct vnode *vp;
int error;
+ int mode = Mode;
AFS_STATCNT(afs_gn_mknod);
VATTR_NULL(&va);
int
-afs_gn_lookup(dp, vpp, name, flags, vattrp, cred)
+afs_gn_lookup(dp, vpp, name, Flags, vattrp, cred)
struct vattr *vattrp;
struct vnode *dp;
struct vnode **vpp;
char *name;
-afs_uint32 flags; /* includes FOLLOW... */
+#ifdef AFS_AIX51_ENV
+int32long64_t Flags; /* includes FOLLOW... */
+#else
+afs_uint32 Flags; /* includes FOLLOW... */
+#endif
struct ucred *cred;
{
int error;
+ int flags = Flags;
AFS_STATCNT(afs_gn_lookup);
error = afs_lookup(dp, name, vpp, cred);
int
-afs_gn_open(vp, flags, ext, vinfop, cred)
+afs_gn_open(vp, Flags, ext, vinfop, cred)
struct vnode *vp;
-int flags;
+#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;
{
struct vattr va;
struct vcache *tvp = VTOAFS(vp);
afs_int32 modes;
+ int flags = Flags;
AFS_STATCNT(afs_gn_open);
modes = 0;
int
-afs_gn_create(dp, vpp, flags, name, mode, vinfop, cred)
+afs_gn_create(dp, vpp, Flags, name, Mode, vinfop, cred)
struct vnode *dp;
struct vnode **vpp;
-int flags;
char *name;
-int mode;
+#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;
{
struct vattr va;
enum vcexcl exclusive;
int error, modes=0;
+ int flags = Flags;
+ int mode = Mode;
AFS_STATCNT(afs_gn_create);
if ((flags & (O_EXCL|O_CREAT)) == (O_EXCL|O_CREAT))
int
-afs_gn_close(vp, flags, vinfo, cred)
+afs_gn_close(vp, Flags, vinfo, cred)
struct vnode *vp;
-int flags;
+#ifdef AFS_AIX51_ENV
+int32long64_t Flags;
+#else
+int Flags;
+#endif
caddr_t vinfo; /* Ignored in AFS */
struct ucred *cred;
{
int error;
struct vcache *tvp = VTOAFS(vp);
+ int flags = Flags;
AFS_STATCNT(afs_gn_close);
int
-afs_gn_map(vp, addr, len, off, flag, cred)
+afs_gn_map(vp, addr, Len, Off, Flag, cred)
struct vnode *vp;
caddr_t addr;
-u_int len, off, flag;
+#ifdef AFS_AIX51_ENV
+uint32long64_t Len, Off, Flag;
+#else
+u_int Len, Off, Flag;
+#endif
struct ucred *cred;
{
struct vcache *vcp = VTOAFS(vp);
struct vrequest treq;
afs_int32 error;
+ afs_int32 len = Len;
+ afs_int32 off = Off;
+ afs_int32 flag = Flag;
+
AFS_STATCNT(afs_gn_map);
#ifdef notdef
if (error = afs_InitReq(&treq, cred)) return error;
int
afs_gn_unmap(vp, flag, cred)
struct vnode *vp;
+#ifdef AFS_AIX51_ENV
+int32long64_t flag;
+#else
int flag;
+#endif
struct ucred *cred;
{
struct vcache *vcp = VTOAFS(vp);
int
-afs_gn_access(vp, mode, who, cred)
+afs_gn_access(vp, Mode, Who, cred)
struct vnode *vp;
-int mode;
-int who;
+#ifdef AFS_AIX51_ENV
+int32long64_t Mode;
+int32long64_t Who;
+#else
+int Mode;
+int Who;
+#endif
struct ucred *cred;
{
int error;
struct vattr vattr;
+ int mode = Mode;
+ int who = Who;
AFS_STATCNT(afs_gn_access);
- if (mode & ~0x7)
- return(EINVAL);
+ if (mode & ~0x7) {
+ error = EINVAL;
+ goto out;
+ }
error = afs_access(vp, mode, cred);
if (!error) {
int
-afs_gn_setattr(vp, op, arg1, arg2, arg3, cred)
+afs_gn_setattr(vp, Op, Arg1, Arg2, Arg3, cred)
struct vnode *vp;
-int op;
-int arg1;
-int arg2;
-int arg3;
+#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;
{
struct vattr va;
int error = 0;
+ int op = Op;
+ int arg1 = Arg1;
+ int arg2 = Arg2;
+ int arg3 = Arg3;
AFS_STATCNT(afs_gn_setattr);
VATTR_NULL(&va);
#ifdef notdef
error = afs_access(vp, VWRITE, cred);
if (error)
- return(error);
+ goto out;
#endif
if (arg1 & T_SETTIME) {
va.va_atime.tv_sec = time;
}
break;
default:
- return(EINVAL);
+ error = EINVAL;
+ goto out;
}
error = afs_setattr(vp, &va, cred);
+out:
afs_Trace2(afs_iclSetp, CM_TRACE_GSETATTR, ICL_TYPE_POINTER, (afs_int32)vp,
ICL_TYPE_LONG, error);
return(error);
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;
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;
{
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;
/* Min size of a file which is dumping core before we declare it a page hog. */
#define MIN_PAGE_HOG_SIZE 8388608
-int afs_gn_rdwr(vp, op, flags, ubuf, ext, vinfo, vattrp, cred)
+int afs_gn_rdwr(vp, op, Flags, ubuf, ext, vinfo, vattrp, cred)
struct vnode *vp;
enum uio_rw op;
-int flags;
-struct uio *ubuf;
+#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;
struct vrequest treq;
int error=0;
int free_cred = 0;
+ int flags = Flags;
AFS_STATCNT(afs_gn_rdwr);
*/
if (counter > 0 && code == 0 && xfrOffset == offset) {
ObtainWriteLock(&vcp->lock,403);
+ if (xfrOffset > vcp->m.Length)
+ vcp->m.Length = xfrOffset;
code = afs_DoPartialWrite(vcp, &treq);
vcp->states |= CDirty;
ReleaseWriteLock(&vcp->lock);
if (code != 0) return code;
lckdat->l_start += (off_t) vattr.va_size;
break;
- default: return EINVAL;
+ default:
+ return EINVAL;
}
lckdat->l_whence = 0;
return 0;
offset_t offset;
struct eflock *lckdat;
struct ucred *cred;
+#ifdef AFS_AIX51_ENV
+int32long64_t cmd;
+#else
+int cmd;
+#endif
{
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)
+int afs_gn_ioctl(vp, Cmd, arg, flags, channel, ext)
struct vnode *vp;
-int cmd;
+#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 */
{
int error;
+ int cmd = Cmd;
+
AFS_STATCNT(afs_gn_ioctl);
/* This seems to be a perfect fit for our ioctl redirection (afs_xioctl hack); thus the ioctl(2) entry in sysent.c is unaffected in the aix/afs port. */
error = afs_ioctl(vp, cmd, arg);
return ret;
}
+#ifdef AFS_AIX51_ENV
+static
+vfs_syncvfs(struct gfs *a, struct vfs *b, int c, struct ucred *d)
+{
+ register glockOwner, ret;
+
+ glockOwner = ISAFS_GLOCK();
+ if (!glockOwner)
+ AFS_GLOCK();
+ ret = (*Afs_vfsops.vfs_syncvfs)(a, b, c, d);
+ if (!glockOwner)
+ AFS_GUNLOCK();
+
+ return ret;
+}
+#endif
+
struct vfsops locked_Afs_vfsops = {
vfs_mount,
vfs_vget,
vfs_cntl,
vfs_quotactl,
+#ifdef AFS_AIX51_ENV
+ vfs_syncvfs
+#endif
};
static
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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
struct vattr *v, struct ucred *e) {
register glockOwner, ret;
}
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, struct ucred *e) {
+#endif
register glockOwner, ret;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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
, caddr_t e, struct ucred *f) {
register glockOwner, ret;
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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;
glockOwner = ISAFS_GLOCK();
}
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) {
register glockOwner, ret;
}
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;
glockOwner = ISAFS_GLOCK();
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_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 gfs afs_gfs = {