summaryrefslogtreecommitdiffstats
path: root/sys/coda/coda_venus.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/coda/coda_venus.c')
-rw-r--r--sys/coda/coda_venus.c103
1 files changed, 57 insertions, 46 deletions
diff --git a/sys/coda/coda_venus.c b/sys/coda/coda_venus.c
index f1eac62..8067226 100644
--- a/sys/coda/coda_venus.c
+++ b/sys/coda/coda_venus.c
@@ -93,6 +93,7 @@ __FBSDID("$FreeBSD$");
((char*)inp + (int)inp->struc)[len++] = 0; \
Isize += len
+#ifdef CODA_COMPAT_5
#define INIT_IN(in, op, ident, p) \
(in)->opcode = (op); \
sx_slock(&proctree_lock); \
@@ -107,8 +108,18 @@ __FBSDID("$FreeBSD$");
bzero(&((in)->cred),sizeof(struct coda_cred)); \
(in)->cred.cr_uid = -1; \
(in)->cred.cr_groupid = -1; \
- } \
-
+ }
+#else
+#define INIT_IN(in, op, ident, p) \
+ (in)->opcode = (op); \
+ (in)->pid = p ? p->p_pid : -1; \
+ (in)->pgid = p ? p->p_pgid : -1; \
+ if (ident != NOCRED) { \
+ (in)->uid = ident->cr_uid; \
+ } else { \
+ (in)->uid = -1; \
+ }
+#endif
#define CNV_OFLAG(to, from) \
do { \
to = 0; \
@@ -168,7 +179,7 @@ int coda_kernel_version = CODA_KERNEL_VERSION;
int
venus_root(void *mdp,
struct ucred *cred, struct proc *p,
-/*out*/ ViceFid *VFid)
+/*out*/ CodaFid *VFid)
{
DECL_NO_IN(coda_root); /* sets Isize & Osize */
ALLOC_NO_IN(coda_root); /* sets inp & outp */
@@ -178,14 +189,14 @@ venus_root(void *mdp,
error = coda_call(mdp, Isize, &Osize, (char *)inp);
if (!error)
- *VFid = outp->VFid;
+ *VFid = outp->Fid;
CODA_FREE(inp, coda_root_size);
return error;
}
int
-venus_open(void *mdp, ViceFid *fid, int flag,
+venus_open(void *mdp, CodaFid *fid, int flag,
struct ucred *cred, struct proc *p,
/*out*/ dev_t *dev, ino_t *inode)
{
@@ -195,7 +206,7 @@ venus_open(void *mdp, ViceFid *fid, int flag,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_OPEN, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
CNV_OFLAG(cflag, flag);
inp->flags = cflag;
@@ -211,7 +222,7 @@ venus_open(void *mdp, ViceFid *fid, int flag,
}
int
-venus_close(void *mdp, ViceFid *fid, int flag,
+venus_close(void *mdp, CodaFid *fid, int flag,
struct ucred *cred, struct proc *p)
{
int cflag;
@@ -219,7 +230,7 @@ venus_close(void *mdp, ViceFid *fid, int flag,
ALLOC_NO_OUT(coda_close); /* sets inp & outp */
INIT_IN(&inp->ih, CODA_CLOSE, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
CNV_OFLAG(cflag, flag);
inp->flags = cflag;
@@ -248,7 +259,7 @@ venus_write(void)
* normal files.
*/
int
-venus_ioctl(void *mdp, ViceFid *fid,
+venus_ioctl(void *mdp, CodaFid *fid,
int com, int flag, caddr_t data,
struct ucred *cred, struct proc *p)
{
@@ -260,7 +271,7 @@ venus_ioctl(void *mdp, ViceFid *fid,
ALLOC(coda_ioctl); /* sets inp & outp */
INIT_IN(&inp->ih, CODA_IOCTL, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
/* command was mutated by increasing its size field to reflect the
* path and follow args. we need to subtract that out before sending
@@ -299,7 +310,7 @@ venus_ioctl(void *mdp, ViceFid *fid,
}
int
-venus_getattr(void *mdp, ViceFid *fid,
+venus_getattr(void *mdp, CodaFid *fid,
struct ucred *cred, struct proc *p,
/*out*/ struct vattr *vap)
{
@@ -308,7 +319,7 @@ venus_getattr(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_GETATTR, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
error = coda_call(mdp, Isize, &Osize, (char *)inp);
if (!error) {
@@ -320,7 +331,7 @@ venus_getattr(void *mdp, ViceFid *fid,
}
int
-venus_setattr(void *mdp, ViceFid *fid, struct vattr *vap,
+venus_setattr(void *mdp, CodaFid *fid, struct vattr *vap,
struct ucred *cred, struct proc *p)
{
DECL_NO_OUT(coda_setattr); /* sets Isize & Osize */
@@ -328,7 +339,7 @@ venus_setattr(void *mdp, ViceFid *fid, struct vattr *vap,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_SETATTR, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
CNV_V2VV_ATTR(&inp->attr, vap);
error = coda_call(mdp, Isize, &Osize, (char *)inp);
@@ -338,7 +349,7 @@ venus_setattr(void *mdp, ViceFid *fid, struct vattr *vap,
}
int
-venus_access(void *mdp, ViceFid *fid, int mode,
+venus_access(void *mdp, CodaFid *fid, int mode,
struct ucred *cred, struct proc *p)
{
DECL_NO_OUT(coda_access); /* sets Isize & Osize */
@@ -346,7 +357,7 @@ venus_access(void *mdp, ViceFid *fid, int mode,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_ACCESS, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
/* NOTE:
* NetBSD and Venus internals use the "data" in the low 3 bits.
* Hence, the conversion.
@@ -360,7 +371,7 @@ venus_access(void *mdp, ViceFid *fid, int mode,
}
int
-venus_readlink(void *mdp, ViceFid *fid,
+venus_readlink(void *mdp, CodaFid *fid,
struct ucred *cred, struct proc *p,
/*out*/ char **str, int *len)
{
@@ -370,7 +381,7 @@ venus_readlink(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_READLINK, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
Osize += CODA_MAXPATHLEN;
error = coda_call(mdp, Isize, &Osize, (char *)inp);
@@ -385,7 +396,7 @@ venus_readlink(void *mdp, ViceFid *fid,
}
int
-venus_fsync(void *mdp, ViceFid *fid,
+venus_fsync(void *mdp, CodaFid *fid,
struct ucred *cred, struct proc *p)
{
DECL_NO_OUT(coda_fsync); /* sets Isize & Osize */
@@ -393,7 +404,7 @@ venus_fsync(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_FSYNC, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
error = coda_call(mdp, Isize, &Osize, (char *)inp);
@@ -402,10 +413,10 @@ venus_fsync(void *mdp, ViceFid *fid,
}
int
-venus_lookup(void *mdp, ViceFid *fid,
+venus_lookup(void *mdp, CodaFid *fid,
const char *nm, int len,
struct ucred *cred, struct proc *p,
-/*out*/ ViceFid *VFid, int *vtype)
+/*out*/ CodaFid *VFid, int *vtype)
{
DECL(coda_lookup); /* sets Isize & Osize */
coda_lookup_size += len + 1;
@@ -413,7 +424,7 @@ venus_lookup(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_LOOKUP, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
/* NOTE:
* Between version 1 and version 2 we have added an extra flag field
@@ -430,7 +441,7 @@ venus_lookup(void *mdp, ViceFid *fid,
error = coda_call(mdp, Isize, &Osize, (char *)inp);
if (!error) {
- *VFid = outp->VFid;
+ *VFid = outp->Fid;
*vtype = outp->vtype;
}
@@ -439,10 +450,10 @@ venus_lookup(void *mdp, ViceFid *fid,
}
int
-venus_create(void *mdp, ViceFid *fid,
+venus_create(void *mdp, CodaFid *fid,
const char *nm, int len, int exclusive, int mode, struct vattr *va,
struct ucred *cred, struct proc *p,
-/*out*/ ViceFid *VFid, struct vattr *attr)
+/*out*/ CodaFid *VFid, struct vattr *attr)
{
DECL(coda_create); /* sets Isize & Osize */
coda_create_size += len + 1;
@@ -450,7 +461,7 @@ venus_create(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_CREATE, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
inp->excl = exclusive ? C_O_EXCL : 0;
inp->mode = mode;
CNV_V2VV_ATTR(&inp->attr, va);
@@ -460,7 +471,7 @@ venus_create(void *mdp, ViceFid *fid,
error = coda_call(mdp, Isize, &Osize, (char *)inp);
if (!error) {
- *VFid = outp->VFid;
+ *VFid = outp->Fid;
CNV_VV2V_ATTR(attr, &outp->attr);
}
@@ -469,7 +480,7 @@ venus_create(void *mdp, ViceFid *fid,
}
int
-venus_remove(void *mdp, ViceFid *fid,
+venus_remove(void *mdp, CodaFid *fid,
const char *nm, int len,
struct ucred *cred, struct proc *p)
{
@@ -479,7 +490,7 @@ venus_remove(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_REMOVE, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
inp->name = Isize;
STRCPY(name, nm, len); /* increments Isize */
@@ -491,7 +502,7 @@ venus_remove(void *mdp, ViceFid *fid,
}
int
-venus_link(void *mdp, ViceFid *fid, ViceFid *tfid,
+venus_link(void *mdp, CodaFid *fid, CodaFid *tfid,
const char *nm, int len,
struct ucred *cred, struct proc *p)
{
@@ -514,7 +525,7 @@ venus_link(void *mdp, ViceFid *fid, ViceFid *tfid,
}
int
-venus_rename(void *mdp, ViceFid *fid, ViceFid *tfid,
+venus_rename(void *mdp, CodaFid *fid, CodaFid *tfid,
const char *nm, int len, const char *tnm, int tlen,
struct ucred *cred, struct proc *p)
{
@@ -540,10 +551,10 @@ venus_rename(void *mdp, ViceFid *fid, ViceFid *tfid,
}
int
-venus_mkdir(void *mdp, ViceFid *fid,
+venus_mkdir(void *mdp, CodaFid *fid,
const char *nm, int len, struct vattr *va,
struct ucred *cred, struct proc *p,
-/*out*/ ViceFid *VFid, struct vattr *ova)
+/*out*/ CodaFid *VFid, struct vattr *ova)
{
DECL(coda_mkdir); /* sets Isize & Osize */
coda_mkdir_size += len + 1;
@@ -551,7 +562,7 @@ venus_mkdir(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_MKDIR, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
CNV_V2VV_ATTR(&inp->attr, va);
inp->name = Isize;
@@ -559,7 +570,7 @@ venus_mkdir(void *mdp, ViceFid *fid,
error = coda_call(mdp, Isize, &Osize, (char *)inp);
if (!error) {
- *VFid = outp->VFid;
+ *VFid = outp->Fid;
CNV_VV2V_ATTR(ova, &outp->attr);
}
@@ -568,7 +579,7 @@ venus_mkdir(void *mdp, ViceFid *fid,
}
int
-venus_rmdir(void *mdp, ViceFid *fid,
+venus_rmdir(void *mdp, CodaFid *fid,
const char *nm, int len,
struct ucred *cred, struct proc *p)
{
@@ -578,7 +589,7 @@ venus_rmdir(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_RMDIR, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
inp->name = Isize;
STRCPY(name, nm, len); /* increments Isize */
@@ -590,7 +601,7 @@ venus_rmdir(void *mdp, ViceFid *fid,
}
int
-venus_symlink(void *mdp, ViceFid *fid,
+venus_symlink(void *mdp, CodaFid *fid,
const char *lnm, int llen, const char *nm, int len, struct vattr *va,
struct ucred *cred, struct proc *p)
{
@@ -600,7 +611,7 @@ venus_symlink(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_SYMLINK, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
CNV_V2VV_ATTR(&inp->attr, va);
inp->srcname = Isize;
@@ -616,7 +627,7 @@ venus_symlink(void *mdp, ViceFid *fid,
}
int
-venus_readdir(void *mdp, ViceFid *fid,
+venus_readdir(void *mdp, CodaFid *fid,
int count, int offset,
struct ucred *cred, struct proc *p,
/*out*/ char *buffer, int *len)
@@ -627,7 +638,7 @@ venus_readdir(void *mdp, ViceFid *fid,
/* send the open to venus. */
INIT_IN(&inp->ih, CODA_READDIR, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
inp->count = count;
inp->offset = offset;
@@ -643,20 +654,20 @@ venus_readdir(void *mdp, ViceFid *fid,
}
int
-venus_fhtovp(void *mdp, ViceFid *fid,
+venus_fhtovp(void *mdp, CodaFid *fid,
struct ucred *cred, struct proc *p,
-/*out*/ ViceFid *VFid, int *vtype)
+/*out*/ CodaFid *VFid, int *vtype)
{
DECL(coda_vget); /* sets Isize & Osize */
ALLOC(coda_vget); /* sets inp & outp */
/* Send the open to Venus. */
INIT_IN(&inp->ih, CODA_VGET, cred, p);
- inp->VFid = *fid;
+ inp->Fid = *fid;
error = coda_call(mdp, Isize, &Osize, (char *)inp);
if (!error) {
- *VFid = outp->VFid;
+ *VFid = outp->Fid;
*vtype = outp->vtype;
}
OpenPOWER on IntegriCloud