summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/fs/nfs/nfs4_srv.c455
-rw-r--r--usr/src/uts/common/fs/nfs/nfs4_state.c83
-rw-r--r--usr/src/uts/common/fs/nfs/nfs_srv.c552
-rw-r--r--usr/src/uts/common/fs/vnode.c298
-rw-r--r--usr/src/uts/common/sys/vnode.h20
5 files changed, 821 insertions, 587 deletions
diff --git a/usr/src/uts/common/fs/nfs/nfs4_srv.c b/usr/src/uts/common/fs/nfs/nfs4_srv.c
index 909ddd840c..4857af785b 100644
--- a/usr/src/uts/common/fs/nfs/nfs4_srv.c
+++ b/usr/src/uts/common/fs/nfs/nfs4_srv.c
@@ -145,6 +145,7 @@ time_t rfs4_start_time; /* Initialized in rfs4_srvrinit */
static sysid_t lockt_sysid; /* dummy sysid for all LOCKT calls */
u_longlong_t nfs4_srv_caller_id;
+uint_t nfs4_srv_vkey = 0;
verifier4 Write4verf;
verifier4 Readdir4verf;
@@ -547,7 +548,7 @@ rfs4_srvrinit(void)
rfs4_disable_delegation();
} else {
error = fem_create("deleg_wrops", nfs4_wr_deleg_tmpl,
- &deleg_wrops);
+ &deleg_wrops);
if (error != 0) {
rfs4_disable_delegation();
fem_free(deleg_rdops);
@@ -558,6 +559,8 @@ rfs4_srvrinit(void)
lockt_sysid = lm_alloc_sysidt();
+ vsd_create(&nfs4_srv_vkey, NULL);
+
return (0);
}
@@ -868,6 +871,7 @@ do_rfs4_op_secinfo(struct compound_state *cs, char *nm, SECINFO4res *resp)
uint_t count, i;
secinfo4 *resok_val;
struct secinfo *secp;
+ seconfig_t *si;
bool_t did_traverse;
int dotdot, walk;
@@ -1017,25 +1021,25 @@ do_rfs4_op_secinfo(struct compound_state *cs, char *nm, SECINFO4res *resp)
secp = exi->exi_export.ex_secinfo;
for (i = 0; i < count; i++) {
- resok_val[i].flavor = secp[i].s_secinfo.sc_rpcnum;
- if (resok_val[i].flavor == RPCSEC_GSS) {
- rpcsec_gss_info *info;
-
- info = &resok_val[i].flavor_info;
- info->qop = secp[i].s_secinfo.sc_qop;
- info->service =
- (rpc_gss_svc_t)secp[i].s_secinfo.sc_service;
-
- /* get oid opaque data */
- info->oid.sec_oid4_len =
- secp[i].s_secinfo.sc_gss_mech_type->length;
- info->oid.sec_oid4_val =
- kmem_alloc(
- secp[i].s_secinfo.sc_gss_mech_type->length,
- KM_SLEEP);
- bcopy(secp[i].s_secinfo.sc_gss_mech_type->elements,
- info->oid.sec_oid4_val, info->oid.sec_oid4_len);
- }
+ si = &secp[i].s_secinfo;
+ resok_val[i].flavor = si->sc_rpcnum;
+ if (resok_val[i].flavor == RPCSEC_GSS) {
+ rpcsec_gss_info *info;
+
+ info = &resok_val[i].flavor_info;
+ info->qop = si->sc_qop;
+ info->service = (rpc_gss_svc_t)si->sc_service;
+
+ /* get oid opaque data */
+ info->oid.sec_oid4_len =
+ si->sc_gss_mech_type->length;
+ info->oid.sec_oid4_val = kmem_alloc(
+ si->sc_gss_mech_type->length, KM_SLEEP);
+ bcopy(
+ si->sc_gss_mech_type->elements,
+ info->oid.sec_oid4_val,
+ info->oid.sec_oid4_len);
+ }
}
resp->SECINFO4resok_len = count;
resp->SECINFO4resok_val = resok_val;
@@ -1055,7 +1059,7 @@ do_rfs4_op_secinfo(struct compound_state *cs, char *nm, SECINFO4res *resp)
perm = secp[i].s_flags;
access = nfsauth4_secinfo_access(exi, cs->req,
- flavor, perm);
+ flavor, perm);
if (! (access & NFSAUTH_DENIED) &&
! (access & NFSAUTH_WRONGSEC)) {
@@ -1069,30 +1073,31 @@ do_rfs4_op_secinfo(struct compound_state *cs, char *nm, SECINFO4res *resp)
for (i = 0; i < count; i++) {
/* If the flavor is in the flavor list, fill in resok_val. */
- if (in_flavor_list(secp[i].s_secinfo.sc_nfsnum,
- flavor_list, ret_cnt)) {
- resok_val[k].flavor = secp[i].s_secinfo.sc_rpcnum;
- if (resok_val[k].flavor == RPCSEC_GSS) {
- rpcsec_gss_info *info;
-
- info = &resok_val[k].flavor_info;
- info->qop = secp[i].s_secinfo.sc_qop;
- info->service =
- (rpc_gss_svc_t)secp[i].s_secinfo.sc_service;
-
- /* get oid opaque data */
- info->oid.sec_oid4_len =
- secp[i].s_secinfo.sc_gss_mech_type->length;
- info->oid.sec_oid4_val =
- kmem_alloc(
- secp[i].s_secinfo.sc_gss_mech_type->length,
- KM_SLEEP);
- bcopy(secp[i].s_secinfo.sc_gss_mech_type->elements,
- info->oid.sec_oid4_val, info->oid.sec_oid4_len);
+ si = &secp[i].s_secinfo;
+ if (in_flavor_list(si->sc_nfsnum,
+ flavor_list, ret_cnt)) {
+ resok_val[k].flavor = si->sc_rpcnum;
+ if (resok_val[k].flavor == RPCSEC_GSS) {
+ rpcsec_gss_info *info;
+
+ info = &resok_val[k].flavor_info;
+ info->qop = si->sc_qop;
+ info->service = (rpc_gss_svc_t)
+ si->sc_service;
+
+ /* get oid opaque data */
+ info->oid.sec_oid4_len =
+ si->sc_gss_mech_type->length;
+ info->oid.sec_oid4_val = kmem_alloc(
+ si->sc_gss_mech_type->length,
+ KM_SLEEP);
+ bcopy(si->sc_gss_mech_type->elements,
+ info->oid.sec_oid4_val,
+ info->oid.sec_oid4_len);
+ }
+ k++;
}
- k++;
- }
- if (k >= ret_cnt)
+ if (k >= ret_cnt)
break;
}
resp->SECINFO4resok_len = ret_cnt;
@@ -1140,8 +1145,8 @@ rfs4_op_secinfo(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
*/
if (!utf8_dir_verify(utfnm)) {
if (utfnm->utf8string_len != 2 ||
- utfnm->utf8string_val[0] != '.' ||
- utfnm->utf8string_val[1] != '.') {
+ utfnm->utf8string_val[0] != '.' ||
+ utfnm->utf8string_val[1] != '.') {
*cs->statusp = resp->status = NFS4ERR_INVAL;
return;
}
@@ -1184,12 +1189,13 @@ rfs4_op_secinfo_free(nfs_resop4 *resop)
resok_val = resp->SECINFO4resok_val;
for (i = 0; i < count; i++) {
- if (resok_val[i].flavor == RPCSEC_GSS) {
- rpcsec_gss_info *info;
+ if (resok_val[i].flavor == RPCSEC_GSS) {
+ rpcsec_gss_info *info;
- info = &resok_val[i].flavor_info;
- kmem_free(info->oid.sec_oid4_val, info->oid.sec_oid4_len);
- }
+ info = &resok_val[i].flavor_info;
+ kmem_free(info->oid.sec_oid4_val,
+ info->oid.sec_oid4_len);
+ }
}
kmem_free(resok_val, count * sizeof (secinfo4));
resp->SECINFO4resok_len = 0;
@@ -1234,7 +1240,7 @@ rfs4_op_access(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
* permissions are sent back to the client for interpretation.
*/
if (rdonly4(cs->exi, cs->vp, req) &&
- (vp->v_type == VREG || vp->v_type == VDIR))
+ (vp->v_type == VREG || vp->v_type == VDIR))
checkwriteperm = 0;
else
checkwriteperm = 1;
@@ -1423,7 +1429,7 @@ do_rfs4_op_mknod(CREATE4args *args, CREATE4res *resp, struct svc_req *req,
else
vap->va_type = VBLK;
vap->va_rdev = makedevice(args->ftype4_u.devdata.specdata1,
- args->ftype4_u.devdata.specdata2);
+ args->ftype4_u.devdata.specdata2);
vap->va_mask |= AT_RDEV;
break;
case NF4SOCK:
@@ -1550,8 +1556,7 @@ rfs4_op_create(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
nfs4_ntov_table_init(&ntov);
status = do_rfs4_set_attrs(&resp->attrset,
- &args->createattrs, cs, &sarg,
- &ntov, NFS4ATTR_SETIT);
+ &args->createattrs, cs, &sarg, &ntov, NFS4ATTR_SETIT);
if (sarg.vap->va_mask == 0 && status == NFS4_OK)
status = NFS4ERR_INVAL;
@@ -1664,7 +1669,7 @@ rfs4_op_create(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
*/
iva2.va_mask = AT_SEQ;
if (VOP_GETATTR(dvp, &iva2, 0, cs->cr) ||
- iva2.va_seq != iva.va_seq)
+ iva2.va_seq != iva.va_seq)
iva.va_seq = 0;
break;
default:
@@ -1764,8 +1769,7 @@ rfs4_op_create(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
* or VOP_FSYNC.
*/
if (!error && bva.va_seq && iva.va_seq && ava.va_seq &&
- iva.va_seq == (bva.va_seq + 1) &&
- iva.va_seq == ava.va_seq)
+ iva.va_seq == (bva.va_seq + 1) && iva.va_seq == ava.va_seq)
resp->cinfo.atomic = TRUE;
else
resp->cinfo.atomic = FALSE;
@@ -1920,7 +1924,7 @@ bitmap4_to_attrmask(bitmap4 breq, struct nfs4_svgetit_arg *sargp)
sargp->mntdfid_set = FALSE;
if (sargp->cs->vp)
sargp->xattr = get_fh4_flag(&sargp->cs->fh,
- FH4_ATTRDIR | FH4_NAMEDATTR);
+ FH4_ATTRDIR | FH4_NAMEDATTR);
else
sargp->xattr = 0;
@@ -1959,7 +1963,7 @@ bitmap4_to_attrmask(bitmap4 breq, struct nfs4_svgetit_arg *sargp)
va_mask = 0;
for (i = 0; i < nfs4_ntov_map_size; i++) {
if ((breq & nfs4_ntov_map[i].fbit) &&
- nfs4_ntov_map[i].vbit)
+ nfs4_ntov_map[i].vbit)
va_mask |= nfs4_ntov_map[i].vbit;
}
@@ -2001,7 +2005,7 @@ static void
nfs4_ntov_table_init(struct nfs4_ntov_table *ntovp)
{
ntovp->na = kmem_zalloc(sizeof (union nfs4_attr_u) * nfs4_ntov_map_size,
- KM_SLEEP);
+ KM_SLEEP);
ntovp->attrcnt = 0;
ntovp->vfsstat = FALSE;
}
@@ -2018,16 +2022,16 @@ nfs4_ntov_table_free(struct nfs4_ntov_table *ntovp,
* XXX Should do the same checks for whether the bit is set
*/
for (i = 0, na = ntovp->na, amap = ntovp->amap;
- i < ntovp->attrcnt; i++, na++, amap++) {
+ i < ntovp->attrcnt; i++, na++, amap++) {
(void) (*nfs4_ntov_map[*amap].sv_getit)(
- NFS4ATTR_FREEIT, sargp, na);
+ NFS4ATTR_FREEIT, sargp, na);
}
if ((sargp->op == NFS4ATTR_SETIT) || (sargp->op == NFS4ATTR_VERIT)) {
/*
* xdr_free for getattr will be done later
*/
for (i = 0, na = ntovp->na, amap = ntovp->amap;
- i < ntovp->attrcnt; i++, na++, amap++) {
+ i < ntovp->attrcnt; i++, na++, amap++) {
xdr_free(nfs4_ntov_map[*amap].xfunc, (caddr_t)na);
}
}
@@ -2079,10 +2083,10 @@ do_rfs4_op_getattr(bitmap4 breq, fattr4 *fattrp,
for (i = 0; i < nfs4_ntov_map_size; i++) {
if (breq & nfs4_ntov_map[i].fbit) {
if ((*nfs4_ntov_map[i].sv_getit)(
- NFS4ATTR_SUPPORTED, sargp, NULL) == 0) {
+ NFS4ATTR_SUPPORTED, sargp, NULL) == 0) {
error = (*nfs4_ntov_map[i].sv_getit)(
- NFS4ATTR_GETIT, sargp, na);
+ NFS4ATTR_GETIT, sargp, na);
/*
* Possible error values:
@@ -2098,13 +2102,13 @@ do_rfs4_op_getattr(bitmap4 breq, fattr4 *fattrp,
*/
if (error == 0) {
fattrp->attrmask |=
- nfs4_ntov_map[i].fbit;
+ nfs4_ntov_map[i].fbit;
*amap++ =
- (uint8_t)nfs4_ntov_map[i].nval;
+ (uint8_t)nfs4_ntov_map[i].nval;
na++;
(ntov.attrcnt)++;
} else if ((error > 0) &&
- (sargp->rdattr_error == NFS4_OK)) {
+ (sargp->rdattr_error == NFS4_OK)) {
sargp->rdattr_error = puterrno4(error);
}
error = 0;
@@ -2126,10 +2130,10 @@ do_rfs4_op_getattr(bitmap4 breq, fattr4 *fattrp,
}
if ((k == FATTR4_RDATTR_ERROR) &&
((*nfs4_ntov_map[k].sv_getit)(
- NFS4ATTR_SUPPORTED, sargp, NULL) == 0)) {
+ NFS4ATTR_SUPPORTED, sargp, NULL) == 0)) {
(void) (*nfs4_ntov_map[k].sv_getit)(
- NFS4ATTR_GETIT, sargp, na);
+ NFS4ATTR_GETIT, sargp, na);
}
break;
}
@@ -2154,8 +2158,7 @@ do_rfs4_op_getattr(bitmap4 breq, fattr4 *fattrp,
for (i = 0; i < ntov.attrcnt; i++, na++, amap++) {
if (!(*nfs4_ntov_map[*amap].xfunc)(&xdr, na)) {
cmn_err(CE_WARN, "do_rfs4_op_getattr: xdr "
- "encode of attribute %d failed\n",
- *amap);
+ "encode of attribute %d failed\n", *amap);
status = NFS4ERR_SERVERFAULT;
break;
}
@@ -2203,7 +2206,7 @@ rfs4_op_getattr(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
status = bitmap4_get_sysattrs(&sarg);
if (status == NFS4_OK)
status = do_rfs4_op_getattr(args->attr_request,
- &resp->obj_attributes, &sarg);
+ &resp->obj_attributes, &sarg);
}
*cs->statusp = resp->status = status;
}
@@ -2233,7 +2236,7 @@ rfs4_op_getfh(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
}
resp->object.nfs_fh4_val =
- kmem_alloc(cs->fh.nfs_fh4_len, KM_SLEEP);
+ kmem_alloc(cs->fh.nfs_fh4_len, KM_SLEEP);
nfs_fh4_copy(&cs->fh, &resp->object);
*cs->statusp = resp->status = NFS4_OK;
}
@@ -2403,8 +2406,7 @@ rfs4_op_link(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
* during the VOP_LINK and it didn't change during the VOP_FSYNC.
*/
if (bdva.va_seq && idva.va_seq && adva.va_seq &&
- idva.va_seq == (bdva.va_seq + 1) &&
- idva.va_seq == adva.va_seq)
+ idva.va_seq == (bdva.va_seq + 1) && idva.va_seq == adva.va_seq)
resp->cinfo.atomic = TRUE;
else
resp->cinfo.atomic = FALSE;
@@ -2959,7 +2961,7 @@ rfs4_op_read(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
}
if ((stat = rfs4_check_stateid(FREAD, vp, &args->stateid, FALSE,
- deleg, TRUE)) != NFS4_OK) {
+ deleg, TRUE)) != NFS4_OK) {
*cs->statusp = resp->status = stat;
goto out;
}
@@ -2978,7 +2980,7 @@ rfs4_op_read(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
if (vp->v_type != VREG) {
*cs->statusp = resp->status =
- ((vp->v_type == VDIR) ? NFS4ERR_ISDIR : NFS4ERR_INVAL);
+ ((vp->v_type == VDIR) ? NFS4ERR_ISDIR : NFS4ERR_INVAL);
goto out;
}
@@ -3035,7 +3037,7 @@ rfs4_op_read(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
if (args->count > MAXBSIZE)
args->count = MAXBSIZE;
mp = allocb_wait(RNDUP(args->count), BPRI_MED,
- STR_NOSIG, &alloc_err);
+ STR_NOSIG, &alloc_err);
}
ASSERT(mp != NULL);
ASSERT(alloc_err == 0);
@@ -3167,7 +3169,7 @@ rfs4_op_putpubfh(nfs_argop4 *args, nfs_resop4 *resop, struct svc_req *req,
* actually a mostly empty struct.
*/
exi = checkexport4(&fh_fmtp->fh4_fsid,
- (fid_t *)&fh_fmtp->fh4_xlen, NULL);
+ (fid_t *)&fh_fmtp->fh4_xlen, NULL);
cs->exi = ((exi != NULL) ? exi : exi_public);
} else {
/*
@@ -3232,7 +3234,7 @@ rfs4_op_putfh(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
fh_fmtp = (nfs_fh4_fmt_t *)args->object.nfs_fh4_val;
cs->exi = checkexport4(&fh_fmtp->fh4_fsid, (fid_t *)&fh_fmtp->fh4_xlen,
- NULL);
+ NULL);
if (cs->exi == NULL) {
*cs->statusp = resp->status = NFS4ERR_STALE;
@@ -3559,7 +3561,7 @@ rfs4_op_release_lockowner(nfs_argop4 *argop, nfs_resop4 *resop,
if (cp == NULL) {
*cs->statusp = resp->status =
- rfs4_check_clientid(&ap->lock_owner.clientid, 0);
+ rfs4_check_clientid(&ap->lock_owner.clientid, 0);
return;
}
rfs4_client_rele(cp);
@@ -3778,7 +3780,7 @@ rfs4_op_remove(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
*/
if (fp = rfs4_lookup_and_findfile(dvp, nm, &vp, &error, cs->cr)) {
if (rfs4_check_delegated_byfp(FWRITE, fp, TRUE, TRUE, TRUE,
- NULL)) {
+ NULL)) {
VN_RELE(vp);
rfs4_file_rele(fp);
*cs->statusp = resp->status = NFS4ERR_DELAY;
@@ -3859,12 +3861,12 @@ rfs4_op_remove(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
* transmit over the wire.
*/
if ((error = VOP_RMDIR(dvp, nm, rootdir, cs->cr))
- == EEXIST)
+ == EEXIST)
error = ENOTEMPTY;
}
} else {
if ((error = VOP_REMOVE(dvp, nm, cs->cr)) == 0 &&
- fp != NULL) {
+ fp != NULL) {
struct vattr va;
vnode_t *tvp;
@@ -3881,7 +3883,7 @@ rfs4_op_remove(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
*/
va.va_mask = AT_NLINK;
if (!VOP_GETATTR(tvp, &va, 0, cs->cr) &&
- va.va_nlink == 0) {
+ va.va_nlink == 0) {
/* Remove state on file remove */
if (in_crit) {
nbl_end_crit(vp);
@@ -3940,8 +3942,7 @@ rfs4_op_remove(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
* the VOP_FSYNC.
*/
if (bdva.va_seq && idva.va_seq && adva.va_seq &&
- idva.va_seq == (bdva.va_seq + 1) &&
- idva.va_seq == adva.va_seq)
+ idva.va_seq == (bdva.va_seq + 1) && idva.va_seq == adva.va_seq)
resp->cinfo.atomic = TRUE;
else
resp->cinfo.atomic = FALSE;
@@ -4089,7 +4090,7 @@ rfs4_op_rename(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
*/
if (sfp = rfs4_lookup_and_findfile(odvp, onm, &srcvp, &error, cs->cr)) {
if (rfs4_check_delegated_byfp(FWRITE, sfp, TRUE, TRUE, TRUE,
- NULL)) {
+ NULL)) {
*cs->statusp = resp->status = NFS4ERR_DELAY;
goto err_out;
}
@@ -4107,7 +4108,7 @@ rfs4_op_rename(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
/* Does the destination exist and a file and have a delegation? */
if (fp = rfs4_lookup_and_findfile(ndvp, nnm, &targvp, NULL, cs->cr)) {
if (rfs4_check_delegated_byfp(FWRITE, fp, TRUE, TRUE, TRUE,
- NULL)) {
+ NULL)) {
*cs->statusp = resp->status = NFS4ERR_DELAY;
goto err_out;
}
@@ -4150,7 +4151,7 @@ rfs4_op_rename(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
NFS4_SET_FATTR4_CHANGE(resp->target_cinfo.before, nbdva.va_ctime)
if ((error = VOP_RENAME(odvp, onm, ndvp, nnm, cs->cr)) == 0 &&
- fp != NULL) {
+ fp != NULL) {
struct vattr va;
vnode_t *tvp;
@@ -4163,7 +4164,7 @@ rfs4_op_rename(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
if (tvp) {
va.va_mask = AT_NLINK;
if (!VOP_GETATTR(tvp, &va, 0, cs->cr) &&
- va.va_nlink == 0) {
+ va.va_nlink == 0) {
/* The file is gone and so should the state */
if (in_crit_targ) {
nbl_end_crit(targvp);
@@ -4255,15 +4256,13 @@ rfs4_op_rename(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
* during the VOP_RENAME and it didn't change during the VOP_FSYNC.
*/
if (obdva.va_seq && oidva.va_seq && oadva.va_seq &&
- oidva.va_seq == (obdva.va_seq + 1) &&
- oidva.va_seq == oadva.va_seq)
+ oidva.va_seq == (obdva.va_seq + 1) && oidva.va_seq == oadva.va_seq)
resp->source_cinfo.atomic = TRUE;
else
resp->source_cinfo.atomic = FALSE;
if (nbdva.va_seq && nidva.va_seq && nadva.va_seq &&
- nidva.va_seq == (nbdva.va_seq + 1) &&
- nidva.va_seq == nadva.va_seq)
+ nidva.va_seq == (nbdva.va_seq + 1) && nidva.va_seq == nadva.va_seq)
resp->target_cinfo.atomic = TRUE;
else
resp->target_cinfo.atomic = FALSE;
@@ -4325,7 +4324,7 @@ rfs4_op_renew(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
if ((cp = rfs4_findclient_by_id(args->clientid, FALSE)) == NULL) {
*cs->statusp = resp->status =
- rfs4_check_clientid(&args->clientid, 0);
+ rfs4_check_clientid(&args->clientid, 0);
return;
}
@@ -4436,7 +4435,7 @@ rfs4_verify_attr(struct nfs4_svgetit_arg *sargp,
* on the incoming values.
*/
ret_error = VOP_GETATTR(sargp->cs->vp, sargp->vap, 0,
- sargp->cs->cr);
+ sargp->cs->cr);
if (ret_error) {
if (resp == NULL)
return (ret_error);
@@ -4493,8 +4492,7 @@ rfs4_verify_attr(struct nfs4_svgetit_arg *sargp,
} else if (!(getsb && nfs4_ntov_map[k].vfsstat)) {
continue;
}
- error = (*nfs4_ntov_map[k].sv_getit)(
- NFS4ATTR_VERIT, sargp, na);
+ error = (*nfs4_ntov_map[k].sv_getit)(NFS4ATTR_VERIT, sargp, na);
if (resp != NULL) {
if (error)
ret_error = -1; /* not all match */
@@ -4554,7 +4552,7 @@ decode_fattr4_attr(nfs4_attr_cmd_t cmd, struct nfs4_svgetit_arg *sargp,
} else {
#ifdef DEBUG
cmn_err(CE_NOTE, "decode_fattr4_attr: error "
- "decoding attribute %d\n", k);
+ "decoding attribute %d\n", k);
#endif
error = EINVAL;
}
@@ -4633,7 +4631,7 @@ do_rfs4_set_attrs(bitmap4 *resp, fattr4 *fattrp, struct compound_state *cs,
* If verify/nverify, must be a readable attr.
*/
if ((error = (*nfs4_ntov_map[i].sv_getit)(
- NFS4ATTR_SUPPORTED, sargp, NULL)) != 0) {
+ NFS4ATTR_SUPPORTED, sargp, NULL)) != 0) {
/*
* Client tries to set/verify an
* unsupported attribute, tries to set
@@ -4646,7 +4644,7 @@ do_rfs4_set_attrs(bitmap4 *resp, fattr4 *fattrp, struct compound_state *cs,
* Decode the attribute to set/verify
*/
error = decode_fattr4_attr(cmd, sargp, nfs4_ntov_map[i].nval,
- &xdr, resp ? resp : NULL, na);
+ &xdr, resp ? resp : NULL, na);
if (error)
break;
*amap++ = (uint8_t)nfs4_ntov_map[i].nval;
@@ -4657,8 +4655,8 @@ do_rfs4_set_attrs(bitmap4 *resp, fattr4 *fattrp, struct compound_state *cs,
}
if (error != 0)
- status = (error == ENOTSUP ? NFS4ERR_ATTRNOTSUPP :
- puterrno4(error));
+ status = (error == ENOTSUP ? NFS4ERR_ATTRNOTSUPP :
+ puterrno4(error));
/* xdrmem_destroy(&xdrs); */ /* NO-OP */
return (status);
}
@@ -4686,7 +4684,7 @@ do_rfs4_op_setattr(bitmap4 *resp, fattr4 *fattrp, struct compound_state *cs,
sarg.sbp = &sb;
nfs4_ntov_table_init(&ntov);
status = do_rfs4_set_attrs(resp, fattrp, cs, &sarg, &ntov,
- NFS4ATTR_SETIT);
+ NFS4ATTR_SETIT);
if (status != NFS4_OK) {
/*
* failed set attrs
@@ -4728,7 +4726,7 @@ do_rfs4_op_setattr(bitmap4 *resp, fattr4 *fattrp, struct compound_state *cs,
if (sarg.vap->va_mask & AT_SIZE) {
trunc = (sarg.vap->va_size == 0);
status = rfs4_check_stateid(FWRITE, cs->vp, stateid,
- trunc, &cs->deleg, sarg.vap->va_mask & AT_SIZE);
+ trunc, &cs->deleg, sarg.vap->va_mask & AT_SIZE);
if (status != NFS4_OK)
goto done;
}
@@ -4806,7 +4804,7 @@ do_rfs4_op_setattr(bitmap4 *resp, fattr4 *fattrp, struct compound_state *cs,
bf.l_sysid = 0;
bf.l_pid = 0;
error = VOP_SPACE(vp, F_FREESP, &bf, FWRITE,
- (offset_t)sarg.vap->va_size, cr, &ct);
+ (offset_t)sarg.vap->va_size, cr, &ct);
}
}
@@ -4933,8 +4931,8 @@ rfs4_op_setattr(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
}
*cs->statusp = resp->status =
- do_rfs4_op_setattr(&resp->attrsset, &args->obj_attributes, cs,
- &args->stateid);
+ do_rfs4_op_setattr(&resp->attrsset, &args->obj_attributes, cs,
+ &args->stateid);
}
/* ARGSUSED */
@@ -4964,7 +4962,7 @@ rfs4_op_verify(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
sarg.sbp = &sb;
nfs4_ntov_table_init(&ntov);
resp->status = do_rfs4_set_attrs(NULL, &args->obj_attributes, cs,
- &sarg, &ntov, NFS4ATTR_VERIT);
+ &sarg, &ntov, NFS4ATTR_VERIT);
if (resp->status != NFS4_OK) {
/*
* do_rfs4_set_attrs will try to verify systemwide attrs,
@@ -5017,7 +5015,7 @@ rfs4_op_nverify(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
sarg.sbp = &sb;
nfs4_ntov_table_init(&ntov);
resp->status = do_rfs4_set_attrs(NULL, &args->obj_attributes, cs,
- &sarg, &ntov, NFS4ATTR_VERIT);
+ &sarg, &ntov, NFS4ATTR_VERIT);
if (resp->status != NFS4_OK) {
/*
* do_rfs4_set_attrs will try to verify systemwide attrs,
@@ -5090,14 +5088,14 @@ rfs4_op_write(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
nbl_start_crit(vp, RW_READER);
in_crit = 1;
if (nbl_conflict(vp, NBL_WRITE,
- args->offset, args->data_len, 0)) {
+ args->offset, args->data_len, 0)) {
*cs->statusp = resp->status = NFS4ERR_LOCKED;
goto out;
}
}
if ((stat = rfs4_check_stateid(FWRITE, vp, &args->stateid, FALSE,
- deleg, TRUE)) != NFS4_OK) {
+ deleg, TRUE)) != NFS4_OK) {
*cs->statusp = resp->status = stat;
goto out;
}
@@ -5121,7 +5119,7 @@ rfs4_op_write(nfs_argop4 *argop, nfs_resop4 *resop, struct svc_req *req,
if (vp->v_type != VREG) {
*cs->statusp = resp->status =
- ((vp->v_type == VDIR) ? NFS4ERR_ISDIR : NFS4ERR_INVAL);
+ ((vp->v_type == VDIR) ? NFS4ERR_ISDIR : NFS4ERR_INVAL);
goto out;
}
@@ -5254,10 +5252,10 @@ rfs4_compound(COMPOUND4args *args, COMPOUND4res *resp, struct exportinfo *exi,
* Form a reply tag by copying over the reqeuest tag.
*/
resp->tag.utf8string_val =
- kmem_alloc(args->tag.utf8string_len, KM_SLEEP);
+ kmem_alloc(args->tag.utf8string_len, KM_SLEEP);
resp->tag.utf8string_len = args->tag.utf8string_len;
bcopy(args->tag.utf8string_val, resp->tag.utf8string_val,
- resp->tag.utf8string_len);
+ resp->tag.utf8string_len);
cs.statusp = &resp->status;
@@ -5273,7 +5271,7 @@ rfs4_compound(COMPOUND4args *args, COMPOUND4res *resp, struct exportinfo *exi,
resp->array_len = args->array_len;
resp->array = kmem_zalloc(args->array_len * sizeof (nfs_resop4),
- KM_SLEEP);
+ KM_SLEEP);
ASSERT(exi == NULL);
ASSERT(cr == NULL);
@@ -5334,11 +5332,10 @@ rfs4_compound(COMPOUND4args *args, COMPOUND4res *resp, struct exportinfo *exi,
rfsproccnt_v4_ptr[op].value.ui64++;
NFS4_DEBUG(rfs4_debug > 1,
- (CE_NOTE, "Executing %s", rfs4_op_string[op]));
+ (CE_NOTE, "Executing %s", rfs4_op_string[op]));
(*rfsv4disptab[op].dis_proc)(argop, resop, req, &cs);
- NFS4_DEBUG(rfs4_debug > 1,
- (CE_NOTE, "%s returned %d",
- rfs4_op_string[op], *cs.statusp));
+ NFS4_DEBUG(rfs4_debug > 1, (CE_NOTE, "%s returned %d",
+ rfs4_op_string[op], *cs.statusp));
if (*cs.statusp != NFS4_OK)
cs.cont = FALSE;
} else {
@@ -5361,11 +5358,11 @@ rfs4_compound(COMPOUND4args *args, COMPOUND4res *resp, struct exportinfo *exi,
*/
if ((i + 1) < args->array_len && !cs.cont) {
nfs_resop4 *new_res = kmem_alloc(
- (i+1) * sizeof (nfs_resop4), KM_SLEEP);
+ (i+1) * sizeof (nfs_resop4), KM_SLEEP);
bcopy(resp->array,
- new_res, (i+1) * sizeof (nfs_resop4));
+ new_res, (i+1) * sizeof (nfs_resop4));
kmem_free(resp->array,
- args->array_len * sizeof (nfs_resop4));
+ args->array_len * sizeof (nfs_resop4));
resp->array_len = i + 1;
resp->array = new_res;
@@ -5463,7 +5460,7 @@ rfs4_client_sysid(rfs4_client_t *cp, sysid_t *sp)
e = NFS4_OK;
NFS4_DEBUG(rfs4_debug, (CE_NOTE,
- "rfs4_client_sysid: allocated 0x%x\n", *sp));
+ "rfs4_client_sysid: allocated 0x%x\n", *sp));
} else
e = NFS4ERR_DELAY;
@@ -5497,10 +5494,8 @@ static void lock_print(char *str, int operation, struct flock64 *flk)
ASSERT(flk->l_whence == 0);
cmn_err(CE_NOTE, "%s: %s, type = %s, off = %llx len = %llx pid = %d",
- str, op, type,
- (longlong_t)flk->l_start,
- flk->l_len ? (longlong_t)flk->l_len : ~0LL,
- flk->l_pid);
+ str, op, type, (longlong_t)flk->l_start,
+ flk->l_len ? (longlong_t)flk->l_len : ~0LL, flk->l_pid);
}
#define LOCK_PRINT(d, s, t, f) if (d) lock_print(s, t, f)
@@ -5848,8 +5843,8 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
*attrset = 0;
status = do_rfs4_set_attrs(attrset,
- &args->createhow4_u.createattrs,
- cs, &sarg, &ntov, NFS4ATTR_SETIT);
+ &args->createhow4_u.createattrs,
+ cs, &sarg, &ntov, NFS4ATTR_SETIT);
if (status == NFS4_OK && (sarg.vap->va_mask & AT_TYPE) &&
sarg.vap->va_type != VREG) {
@@ -5916,7 +5911,7 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
}
status = create_vnode(dvp, nm, vap, args->mode, mtime,
- cs->cr, &vp, &created);
+ cs->cr, &vp, &created);
kmem_free(nm, buflen);
if (status != NFS4_OK) {
@@ -5987,7 +5982,7 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
*/
if (!created) {
if (bva.va_seq && iva.va_seq &&
- bva.va_seq == iva.va_seq)
+ bva.va_seq == iva.va_seq)
cinfo->atomic = TRUE;
else
cinfo->atomic = FALSE;
@@ -6018,8 +6013,7 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
* change during the VOP_FSYNC.
*/
if (bva.va_seq && iva.va_seq && ava.va_seq &&
- iva.va_seq == (bva.va_seq + 1) &&
- iva.va_seq == ava.va_seq)
+ iva.va_seq == (bva.va_seq + 1) && iva.va_seq == ava.va_seq)
cinfo->atomic = TRUE;
else
cinfo->atomic = FALSE;
@@ -6053,9 +6047,7 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
rfs4_hold_deleg_policy();
if ((fp = rfs4_findfile(vp, NULL, &create)) != NULL) {
if (rfs4_check_delegated_byfp(FWRITE, fp,
- (reqsize == 0), FALSE, FALSE,
- &clientid)) {
-
+ (reqsize == 0), FALSE, FALSE, &clientid)) {
rfs4_file_rele(fp);
rfs4_rele_deleg_policy();
VN_RELE(vp);
@@ -6073,7 +6065,7 @@ rfs4_createfile(OPEN4args *args, struct svc_req *req, struct compound_state *cs,
nbl_start_crit(vp, RW_READER);
if (nbl_conflict(vp, NBL_WRITE, 0,
- cva.va_size, 0)) {
+ cva.va_size, 0)) {
in_crit = 0;
nbl_end_crit(vp);
VN_RELE(vp);
@@ -6157,7 +6149,7 @@ rfs4_do_open(struct compound_state *cs, struct svc_req *req,
file = rfs4_findfile_withlock(cs->vp, &cs->fh, &fcreate);
if (file == NULL) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_do_open: can't find file"));
+ (CE_NOTE, "rfs4_do_open: can't find file"));
resp->status = NFS4ERR_SERVERFAULT;
return;
}
@@ -6165,7 +6157,7 @@ rfs4_do_open(struct compound_state *cs, struct svc_req *req,
state = rfs4_findstate_by_owner_file(oo, file, &screate);
if (state == NULL) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_do_open: can't find state"));
+ (CE_NOTE, "rfs4_do_open: can't find state"));
resp->status = NFS4ERR_RESOURCE;
/* No need to keep any reference */
rfs4_file_rele_withunlock(file);
@@ -6220,7 +6212,7 @@ rfs4_do_open(struct compound_state *cs, struct svc_req *req,
if ((err = vop_shrlock(cs->vp, F_SHARE, &shr, fflags)) != 0) {
resp->status = err == EAGAIN ?
- NFS4ERR_SHARE_DENIED : puterrno4(err);
+ NFS4ERR_SHARE_DENIED : puterrno4(err);
rfs4_file_rele(file);
/* Not a fully formed open; "close" it */
@@ -6320,7 +6312,7 @@ rfs4_do_opennull(struct compound_state *cs, struct svc_req *req,
if (args->opentype == OPEN4_NOCREATE)
resp->status = rfs4_lookupfile(&args->open_claim4_u.file,
- req, cs, args->share_access, cinfo);
+ req, cs, args->share_access, cinfo);
else {
/* inhibit delegation grants during exclusive create */
@@ -6328,7 +6320,7 @@ rfs4_do_opennull(struct compound_state *cs, struct svc_req *req,
rfs4_disable_delegation();
resp->status = rfs4_createfile(args, req, cs, cinfo, attrset,
- oo->client->clientid);
+ oo->client->clientid);
}
if (resp->status == NFS4_OK) {
@@ -6336,7 +6328,7 @@ rfs4_do_opennull(struct compound_state *cs, struct svc_req *req,
/* cs->vp cs->fh now reference the desired file */
rfs4_do_open(cs, req, oo, DELEG_ANY, args->share_access,
- args->share_deny, resp);
+ args->share_deny, resp);
/*
* If rfs4_createfile set attrset, we must
@@ -6405,8 +6397,8 @@ rfs4_do_openprev(struct compound_state *cs, struct svc_req *req,
cinfo->atomic = FALSE;
rfs4_do_open(cs, req, oo,
- NFS4_DELEG4TYPE2REQTYPE(args->open_claim4_u.delegate_type),
- args->share_access, args->share_deny, resp);
+ NFS4_DELEG4TYPE2REQTYPE(args->open_claim4_u.delegate_type),
+ args->share_access, args->share_deny, resp);
}
static void
@@ -6416,7 +6408,7 @@ rfs4_do_opendelcur(struct compound_state *cs, struct svc_req *req,
int error;
nfsstat4 status;
stateid4 stateid =
- args->open_claim4_u.delegate_cur_info.delegate_stateid;
+ args->open_claim4_u.delegate_cur_info.delegate_stateid;
rfs4_deleg_state_t *dsp;
/*
@@ -6460,7 +6452,7 @@ rfs4_do_opendelcur(struct compound_state *cs, struct svc_req *req,
dsp->finfo->dinfo->time_lastwrite = gethrestime_sec();
rfs4_deleg_state_rele(dsp);
rfs4_do_open(cs, req, oo, DELEG_NONE,
- args->share_access, args->share_deny, resp);
+ args->share_access, args->share_deny, resp);
}
/*ARGSUSED*/
@@ -6488,7 +6480,7 @@ rfs4_do_opendelprev(struct compound_state *cs, struct svc_req *req,
/* Note we ignore oflags */
resp->status = rfs4_lookupfile(&args->open_claim4_u.file_delegate_prev,
- req, cs, args->share_access, &resp->cinfo);
+ req, cs, args->share_access, &resp->cinfo);
if (resp->status != NFS4_OK) {
return;
@@ -6498,7 +6490,7 @@ rfs4_do_opendelprev(struct compound_state *cs, struct svc_req *req,
file = rfs4_findfile_withlock(cs->vp, NULL, &create);
if (file == NULL) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_do_opendelprev: can't find file"));
+ (CE_NOTE, "rfs4_do_opendelprev: can't find file"));
resp->status = NFS4ERR_SERVERFAULT;
return;
}
@@ -6506,7 +6498,7 @@ rfs4_do_opendelprev(struct compound_state *cs, struct svc_req *req,
state = rfs4_findstate_by_owner_file(oo, file, &create);
if (state == NULL) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_do_opendelprev: can't find state"));
+ (CE_NOTE, "rfs4_do_opendelprev: can't find state"));
resp->status = NFS4ERR_SERVERFAULT;
rfs4_file_rele_withunlock(file);
return;
@@ -6515,10 +6507,10 @@ rfs4_do_opendelprev(struct compound_state *cs, struct svc_req *req,
rfs4_dbe_lock(state->dbe);
rfs4_dbe_lock(file->dbe);
if (args->share_access != state->share_access ||
- args->share_deny != state->share_deny ||
- state->finfo->dinfo->dtype == OPEN_DELEGATE_NONE) {
+ args->share_deny != state->share_deny ||
+ state->finfo->dinfo->dtype == OPEN_DELEGATE_NONE) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_do_opendelprev: state mixup"));
+ (CE_NOTE, "rfs4_do_opendelprev: state mixup"));
rfs4_dbe_unlock(file->dbe);
rfs4_dbe_unlock(state->dbe);
rfs4_file_rele(file);
@@ -6545,14 +6537,14 @@ rfs4_do_opendelprev(struct compound_state *cs, struct svc_req *req,
if (dsp->dtype == OPEN_DELEGATE_READ) {
open_read_delegation4 *rv =
- &resp->delegation.open_delegation4_u.read;
+ &resp->delegation.open_delegation4_u.read;
rv->stateid = dsp->delegid.stateid;
rv->recall = FALSE; /* no policy in place to set to TRUE */
ace = &rv->permissions;
} else {
open_write_delegation4 *rv =
- &resp->delegation.open_delegation4_u.write;
+ &resp->delegation.open_delegation4_u.write;
rv->stateid = dsp->delegid.stateid;
rv->recall = FALSE; /* no policy in place to set to TRUE */
@@ -6593,7 +6585,7 @@ rfs4_check_seqid(seqid4 seqid, nfs_resop4 *lastop,
rfs4_copy_reply(resop, lastop);
}
NFS4_DEBUG(rfs4_debug, (CE_NOTE,
- "Replayed SEQID %d\n", seqid));
+ "Replayed SEQID %d\n", seqid));
return (NFS4_CHKSEQ_REPLAY);
}
@@ -6601,14 +6593,14 @@ rfs4_check_seqid(seqid4 seqid, nfs_resop4 *lastop,
if (rqst_seq != seqid + 1) {
if (rqst_seq == seqid) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "BAD SEQID: Replayed sequence id "
- "but last op was %d current op is %d\n",
- lastop->resop, resop->resop));
+ (CE_NOTE, "BAD SEQID: Replayed sequence id "
+ "but last op was %d current op is %d\n",
+ lastop->resop, resop->resop));
return (NFS4_CHKSEQ_BAD);
}
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "BAD SEQID: got %u expecting %u\n",
- rqst_seq, seqid));
+ (CE_NOTE, "BAD SEQID: got %u expecting %u\n",
+ rqst_seq, seqid));
return (NFS4_CHKSEQ_BAD);
}
@@ -6640,7 +6632,7 @@ rfs4_check_olo_seqid(seqid4 olo_seqid, rfs4_openowner_t *op,
rfs4_dbe_lock(op->dbe);
rc = rfs4_check_seqid(op->open_seqid, op->reply,
- olo_seqid, resop, FALSE);
+ olo_seqid, resop, FALSE);
rfs4_dbe_unlock(op->dbe);
return (rc);
@@ -6653,8 +6645,7 @@ rfs4_check_lock_seqid(seqid4 seqid, rfs4_lo_state_t *lp, nfs_resop4 *resop)
rfs4_dbe_lock(lp->dbe);
if (!lp->skip_seqid_check)
- rc = rfs4_check_seqid(lp->seqid, lp->reply,
- seqid, resop, TRUE);
+ rc = rfs4_check_seqid(lp->seqid, lp->reply, seqid, resop, TRUE);
rfs4_dbe_unlock(lp->dbe);
return (rc);
@@ -6687,7 +6678,7 @@ rfs4_op_open(nfs_argop4 *argop, nfs_resop4 *resop,
cp = rfs4_findclient_by_id(owner->clientid, FALSE);
if (cp == NULL) {
*cs->statusp = resp->status =
- rfs4_check_clientid(&owner->clientid, 0);
+ rfs4_check_clientid(&owner->clientid, 0);
return;
}
@@ -6723,7 +6714,7 @@ retry:
switch (rfs4_check_open_seqid(args->seqid, oo, resop)) {
case NFS4_CHKSEQ_BAD:
if ((args->seqid > oo->open_seqid) &&
- oo->need_confirm) {
+ oo->need_confirm) {
rfs4_free_opens(oo, TRUE, FALSE);
rfs4_sw_exit(&oo->oo_sw);
rfs4_openowner_rele(oo);
@@ -6820,16 +6811,16 @@ retry:
switch (claim) {
case CLAIM_NULL:
rfs4_do_opennull(cs, req, args, oo, resp);
- break;
+ break;
case CLAIM_PREVIOUS:
rfs4_do_openprev(cs, req, args, oo, resp);
- break;
+ break;
case CLAIM_DELEGATE_CUR:
rfs4_do_opendelcur(cs, req, args, oo, resp);
- break;
+ break;
case CLAIM_DELEGATE_PREV:
rfs4_do_opendelprev(cs, req, args, oo, resp);
- break;
+ break;
default:
resp->status = NFS4ERR_INVAL;
break;
@@ -6877,10 +6868,10 @@ out:
* it.
*/
nfs_fh4_fmt_t *fh_fmtp =
- (nfs_fh4_fmt_t *)oo->reply_fh.nfs_fh4_val;
+ (nfs_fh4_fmt_t *)oo->reply_fh.nfs_fh4_val;
cs->exi = checkexport4(&fh_fmtp->fh4_fsid,
- (fid_t *)&fh_fmtp->fh4_xlen, NULL);
+ (fid_t *)&fh_fmtp->fh4_xlen, NULL);
if (cs->exi == NULL) {
resp->status = NFS4ERR_STALE;
@@ -6890,7 +6881,7 @@ out:
VN_RELE(cs->vp);
cs->vp = nfs4_fhtovp(&oo->reply_fh, cs->exi,
- &resp->status);
+ &resp->status);
if (cs->vp == NULL)
goto finish;
@@ -6971,7 +6962,7 @@ rfs4_op_open_confirm(nfs_argop4 *argop, nfs_resop4 *resop,
switch (rfs4_check_stateid_seqid(sp, &args->open_stateid)) {
case NFS4_CHECK_STATEID_OKAY:
if (rfs4_check_open_seqid(args->seqid, sp->owner,
- resop) != 0) {
+ resop) != 0) {
*cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
break;
}
@@ -7018,7 +7009,7 @@ rfs4_op_open_confirm(nfs_argop4 *argop, nfs_resop4 *resop,
break;
case NFS4_CHECK_STATEID_UNCONFIRMED:
if (rfs4_check_open_seqid(args->seqid, sp->owner,
- resop) != NFS4_CHKSEQ_OKAY) {
+ resop) != NFS4_CHKSEQ_OKAY) {
*cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
break;
}
@@ -7077,7 +7068,7 @@ rfs4_op_open_downgrade(nfs_argop4 *argop, nfs_resop4 *resop,
switch (rfs4_check_stateid_seqid(sp, &args->open_stateid)) {
case NFS4_CHECK_STATEID_OKAY:
if (rfs4_check_open_seqid(args->seqid, sp->owner,
- resop) != NFS4_CHKSEQ_OKAY) {
+ resop) != NFS4_CHKSEQ_OKAY) {
*cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
goto end;
}
@@ -7304,7 +7295,7 @@ retry:
*cs->statusp = res->status = NFS4_OK;
res->SETCLIENTID4res_u.resok4.clientid = cp->clientid;
res->SETCLIENTID4res_u.resok4.setclientid_confirm =
- cp->confirm_verf;
+ cp->confirm_verf;
/* Setup callback information; CB_NULL confirmation later */
rfs4_client_setcb(cp, &args->callback, args->callback_ident);
@@ -7371,20 +7362,20 @@ retry:
* be an update of the callback info
*/
if (cp_confirmed->nfs_client.verifier ==
- args->client.verifier) {
+ args->client.verifier) {
/* Setup callback information */
rfs4_client_setcb(cp_confirmed, &args->callback,
- args->callback_ident);
+ args->callback_ident);
/* everything okay -- move ahead */
*cs->statusp = res->status = NFS4_OK;
res->SETCLIENTID4res_u.resok4.clientid =
- cp_confirmed->clientid;
+ cp_confirmed->clientid;
/* update the confirm_verifier and return it */
rfs4_client_scv_next(cp_confirmed);
res->SETCLIENTID4res_u.resok4.setclientid_confirm =
- cp_confirmed->confirm_verf;
+ cp_confirmed->confirm_verf;
rfs4_client_rele(cp_confirmed);
return;
@@ -7397,7 +7388,7 @@ retry:
*/
create = FALSE;
cp_unconfirmed = rfs4_findclient(&args->client, &create,
- cp_confirmed);
+ cp_confirmed);
}
/*
@@ -7456,11 +7447,9 @@ retry:
*cs->statusp = res->status = NFS4_OK;
res->SETCLIENTID4res_u.resok4.clientid = newcp->clientid;
- res->SETCLIENTID4res_u.resok4.setclientid_confirm =
- newcp->confirm_verf;
+ res->SETCLIENTID4res_u.resok4.setclientid_confirm = newcp->confirm_verf;
/* Setup callback information; CB_NULL confirmation later */
- rfs4_client_setcb(newcp, &args->callback,
- args->callback_ident);
+ rfs4_client_setcb(newcp, &args->callback, args->callback_ident);
newcp->cp_confirmed = cp_confirmed;
@@ -7473,9 +7462,9 @@ rfs4_op_setclientid_confirm(nfs_argop4 *argop, nfs_resop4 *resop,
struct svc_req *req, struct compound_state *cs)
{
SETCLIENTID_CONFIRM4args *args =
- &argop->nfs_argop4_u.opsetclientid_confirm;
+ &argop->nfs_argop4_u.opsetclientid_confirm;
SETCLIENTID_CONFIRM4res *res =
- &resop->nfs_resop4_u.opsetclientid_confirm;
+ &resop->nfs_resop4_u.opsetclientid_confirm;
rfs4_client_t *cp, *cptoclose = NULL;
*cs->statusp = res->status = NFS4_OK;
@@ -7484,7 +7473,7 @@ rfs4_op_setclientid_confirm(nfs_argop4 *argop, nfs_resop4 *resop,
if (cp == NULL) {
*cs->statusp = res->status =
- rfs4_check_clientid(&args->clientid, 1);
+ rfs4_check_clientid(&args->clientid, 1);
return;
}
@@ -7576,7 +7565,7 @@ rfs4_op_close(nfs_argop4 *argop, nfs_resop4 *resop,
switch (rfs4_check_stateid_seqid(sp, &args->open_stateid)) {
case NFS4_CHECK_STATEID_OKAY:
if (rfs4_check_open_seqid(args->seqid, sp->owner,
- resop) != NFS4_CHKSEQ_OKAY) {
+ resop) != NFS4_CHKSEQ_OKAY) {
*cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
goto end;
}
@@ -7701,7 +7690,7 @@ rfs4_release_share_lock_state(rfs4_state_t *sp, cred_t *cr,
if (close_of_client) {
if (sp->owner->client->unlksys_completed == FALSE &&
sp->lockownerlist.next->lsp != NULL &&
- sp->owner->client->sysidt != LM_NOSYSID) {
+ sp->owner->client->sysidt != LM_NOSYSID) {
/* Is the PxFS kernel module loaded? */
if (lm_remove_file_locks != NULL) {
int new_sysid;
@@ -7742,7 +7731,7 @@ rfs4_release_share_lock_state(rfs4_state_t *sp, cred_t *cr,
* least mark the locks as having been released
*/
for (lsp = sp->lockownerlist.next->lsp; lsp != NULL;
- lsp = lsp->lockownerlist.next->lsp) {
+ lsp = lsp->lockownerlist.next->lsp) {
lsp->locks_cleaned = TRUE;
@@ -7750,7 +7739,7 @@ rfs4_release_share_lock_state(rfs4_state_t *sp, cred_t *cr,
if (!close_of_client &&
sp->owner->client->sysidt != LM_NOSYSID)
(void) cleanlocks(sp->finfo->vp, lsp->locker->pid,
- lsp->locker->client->sysidt);
+ lsp->locker->client->sysidt);
}
/*
@@ -7837,7 +7826,7 @@ retry:
for (i = 0; i < rfs4_maxlock_tries; i++) {
LOCK_PRINT(rfs4_debug, "setlock", F_SETLK, flock);
error = VOP_FRLOCK(vp, F_SETLK,
- flock, flag, (u_offset_t)0, NULL, cred);
+ flock, flag, (u_offset_t)0, NULL, cred);
if (error != EAGAIN && error != EACCES)
break;
@@ -7853,14 +7842,14 @@ retry:
flk = *flock;
LOCK_PRINT(rfs4_debug, "setlock", F_GETLK, &flk);
if (VOP_FRLOCK(vp, F_GETLK,
- &flk, flag, (u_offset_t)0, NULL, cred) == 0) {
+ &flk, flag, (u_offset_t)0, NULL, cred) == 0) {
if (flk.l_type == F_UNLCK) {
/* No longer locked, retry */
goto retry;
}
*flock = flk;
LOCK_PRINT(rfs4_debug, "setlock(blocking lock)",
- F_GETLK, &flk);
+ F_GETLK, &flk);
}
}
@@ -7969,7 +7958,7 @@ retry:
lres = &resop->nfs_resop4_u.oplock;
status = NFS4ERR_DENIED;
if (lock_denied(&lres->LOCK4res_u.denied, &flock)
- == NFS4ERR_EXPIRED)
+ == NFS4ERR_EXPIRED)
goto retry;
break;
case ENOLCK:
@@ -7982,8 +7971,7 @@ retry:
status = NFS4ERR_NOTSUPP;
break;
default:
- cmn_err(CE_WARN, "rfs4_do_lock: unexpected errno (%d)",
- error);
+ cmn_err(CE_WARN, "rfs4_do_lock: unexpected errno (%d)", error);
status = NFS4ERR_SERVERFAULT;
break;
}
@@ -8026,8 +8014,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
status = rfs4_get_state(stateid, &sp, RFS4_DBS_VALID);
if (status != NFS4_OK) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "Get state failed in lock %d",
- status));
+ (CE_NOTE, "Get state failed in lock %d", status));
*cs->statusp = resp->status = status;
return;
}
@@ -8061,7 +8048,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
case NFS4_CHECK_STATEID_OKAY:
case NFS4_CHECK_STATEID_REPLAY:
switch (rfs4_check_olo_seqid(olo->open_seqid,
- sp->owner, resop)) {
+ sp->owner, resop)) {
case NFS4_CHKSEQ_OKAY:
if (rc == NFS4_CHECK_STATEID_OKAY)
break;
@@ -8072,8 +8059,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
*/
/* FALLTHROUGH */
case NFS4_CHKSEQ_BAD:
- *cs->statusp = resp->status =
- NFS4ERR_BAD_SEQID;
+ *cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
goto end;
case NFS4_CHKSEQ_REPLAY:
/* This is a duplicate LOCK request */
@@ -8093,7 +8079,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
lo = rfs4_findlockowner(&olo->lock_owner, &lcreate);
if (lo == NULL) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_op_lock: no lock owner"));
+ (CE_NOTE, "rfs4_op_lock: no lock owner"));
*cs->statusp = resp->status = NFS4ERR_RESOURCE;
goto end;
}
@@ -8110,7 +8096,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
}
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_op_lock: no state"));
+ (CE_NOTE, "rfs4_op_lock: no state"));
*cs->statusp = resp->status = NFS4ERR_SERVERFAULT;
rfs4_update_open_resp(sp->owner, resop, NULL);
rfs4_lockowner_rele(lo);
@@ -8130,7 +8116,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
if (dup_lock == FALSE && create == FALSE) {
if (lsp->lock_completed == TRUE) {
*cs->statusp =
- resp->status = NFS4ERR_BAD_SEQID;
+ resp->status = NFS4ERR_BAD_SEQID;
rfs4_lockowner_rele(lo);
goto end;
}
@@ -8154,9 +8140,9 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
/* verify that lock_seqid's match */
if (lsp->seqid != olo->lock_seqid) {
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "rfs4_op_lock: Dup-Lock seqid bad"
- "lsp->seqid=%d old->seqid=%d",
- lsp->seqid, olo->lock_seqid));
+ (CE_NOTE, "rfs4_op_lock: Dup-Lock seqid bad"
+ "lsp->seqid=%d old->seqid=%d",
+ lsp->seqid, olo->lock_seqid));
*cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
} else {
rfs4_copy_reply(resop, lsp->reply);
@@ -8177,7 +8163,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
lsp->seqid = olo->lock_seqid;
NFS4_DEBUG(rfs4_debug,
- (CE_NOTE, "Lock seqid established as %d", lsp->seqid));
+ (CE_NOTE, "Lock seqid established as %d", lsp->seqid));
/*
* This is used to signify the newly created lockowner
@@ -8240,8 +8226,8 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
* replay but it is okay.
*/
switch (rfs4_check_lock_seqid(
- args->locker.locker4_u.lock_owner.lock_seqid,
- lsp, resop)) {
+ args->locker.locker4_u.lock_owner.lock_seqid,
+ lsp, resop)) {
case NFS4_CHKSEQ_REPLAY:
if (resp->status != NFS4_OK) {
/*
@@ -8260,8 +8246,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
*/
/*FALLTHROUGH*/
case NFS4_CHKSEQ_BAD:
- *cs->statusp = resp->status =
- NFS4ERR_BAD_SEQID;
+ *cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
goto end;
case NFS4_CHKSEQ_OKAY:
/* Everything looks okay move ahead */
@@ -8282,8 +8267,8 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
goto end;
case NFS4_CHECK_STATEID_REPLAY:
switch (rfs4_check_lock_seqid(
- args->locker.locker4_u.lock_owner.lock_seqid,
- lsp, resop)) {
+ args->locker.locker4_u.lock_owner.lock_seqid,
+ lsp, resop)) {
case NFS4_CHKSEQ_OKAY:
/*
* This is a replayed stateid; if
@@ -8291,8 +8276,7 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
* then client is using wrong seqid.
*/
case NFS4_CHKSEQ_BAD:
- *cs->statusp = resp->status =
- NFS4ERR_BAD_SEQID;
+ *cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
goto end;
case NFS4_CHKSEQ_REPLAY:
rfs4_update_lease(lsp->locker->client);
@@ -8342,9 +8326,8 @@ rfs4_op_lock(nfs_argop4 *argop, nfs_resop4 *resop,
cs->deleg = TRUE;
status = rfs4_do_lock(lsp, args->locktype,
- args->locker.locker4_u.lock_owner.lock_seqid,
- args->offset,
- args->length, cs->cr, resop);
+ args->locker.locker4_u.lock_owner.lock_seqid,
+ args->offset, args->length, cs->cr, resop);
out:
lsp->skip_seqid_check = FALSE;
@@ -8467,8 +8450,7 @@ rfs4_op_locku(nfs_argop4 *argop, nfs_resop4 *resop,
* then client is using wrong seqid.
*/
case NFS4_CHKSEQ_BAD:
- *cs->statusp = resp->status =
- NFS4ERR_BAD_SEQID;
+ *cs->statusp = resp->status = NFS4ERR_BAD_SEQID;
goto end;
case NFS4_CHKSEQ_REPLAY:
rfs4_update_lease(lsp->locker->client);
@@ -8502,8 +8484,7 @@ rfs4_op_locku(nfs_argop4 *argop, nfs_resop4 *resop,
}
status = rfs4_do_lock(lsp, args->locktype,
- args->seqid, args->offset,
- args->length, cs->cr, resop);
+ args->seqid, args->offset, args->length, cs->cr, resop);
out:
*cs->statusp = resp->status = status;
@@ -8566,7 +8547,7 @@ rfs4_op_lockt(nfs_argop4 *argop, nfs_resop4 *resop,
if ((cp = rfs4_findclient_by_id(args->owner.clientid, FALSE))
== NULL) {
*cs->statusp = resp->status =
- rfs4_check_clientid(&args->owner.clientid, 0);
+ rfs4_check_clientid(&args->owner.clientid, 0);
return;
}
if (rfs4_lease_expired(cp)) {
@@ -8614,7 +8595,7 @@ rfs4_op_lockt(nfs_argop4 *argop, nfs_resop4 *resop,
if (lo) {
pid = lo->pid;
if ((resp->status =
- rfs4_client_sysid(lo->client, &sysid)) != NFS4_OK)
+ rfs4_client_sysid(lo->client, &sysid)) != NFS4_OK)
goto out;
} else {
pid = 0;
@@ -8661,7 +8642,7 @@ retry:
break;
default:
cmn_err(CE_WARN, "rfs4_op_lockt: unexpected errno (%d)",
- error);
+ error);
resp->status = NFS4ERR_SERVERFAULT;
break;
}
@@ -8683,10 +8664,10 @@ vop_shrlock(vnode_t *vp, int cmd, struct shrlock *sp, int fflags)
err = VOP_SHRLOCK(vp, cmd, sp, fflags, CRED());
NFS4_DEBUG(rfs4_shrlock_debug,
- (CE_NOTE, "rfs4_shrlock %s vp=%p acc=%d dny=%d sysid=%d "
- "pid=%d err=%d\n", cmd == F_SHARE ? "SHARE" : "UNSHR",
- (void *) vp, sp->s_access, sp->s_deny, sp->s_sysid, sp->s_pid,
- err));
+ (CE_NOTE, "rfs4_shrlock %s vp=%p acc=%d dny=%d sysid=%d "
+ "pid=%d err=%d\n", cmd == F_SHARE ? "SHARE" : "UNSHR",
+ (void *) vp, sp->s_access, sp->s_deny, sp->s_sysid, sp->s_pid,
+ err));
return (err);
}
diff --git a/usr/src/uts/common/fs/nfs/nfs4_state.c b/usr/src/uts/common/fs/nfs/nfs4_state.c
index 44cc1563f4..fc774158ed 100644
--- a/usr/src/uts/common/fs/nfs/nfs4_state.c
+++ b/usr/src/uts/common/fs/nfs/nfs4_state.c
@@ -43,6 +43,7 @@
extern time_t rfs4_start_time;
+extern uint_t nfs4_srv_vkey;
stateid4 special0 = {
0,
@@ -2198,7 +2199,12 @@ rfs4_file_destroy(rfs4_entry_t u_entry)
fp->filehandle.nfs_fh4_len);
cv_destroy(fp->dinfo->recall_cv);
if (fp->vp) {
- VN_RELE(fp->vp);
+ vnode_t *vp = fp->vp;
+
+ mutex_enter(&vp->v_lock);
+ (void) vsd_set(vp, nfs4_srv_vkey, NULL);
+ mutex_exit(&vp->v_lock);
+ VN_RELE(vp);
fp->vp = NULL;
}
rw_destroy(&fp->file_rwlock);
@@ -2264,6 +2270,13 @@ rfs4_file_create(rfs4_entry_t u_entry, void *arg)
rw_init(&fp->file_rwlock, NULL, RW_DEFAULT, NULL);
+ mutex_enter(&vp->v_lock);
+ if (vsd_set(vp, nfs4_srv_vkey, (void *)fp)) {
+ ASSERT(FALSE);
+ cmn_err(CE_WARN, "rfs4_file_create: vsd_set failed.");
+ }
+ mutex_exit(&vp->v_lock);
+
return (TRUE);
}
@@ -2276,8 +2289,24 @@ rfs4_findfile(vnode_t *vp, nfs_fh4 *fh, bool_t *create)
arg.vp = vp;
arg.fh = fh;
- fp = (rfs4_file_t *)rfs4_dbsearch(rfs4_file_idx, vp, create,
- &arg, RFS4_DBS_VALID);
+ if (*create == TRUE)
+ fp = (rfs4_file_t *)rfs4_dbsearch(rfs4_file_idx, vp, create,
+ &arg, RFS4_DBS_VALID);
+ else {
+ mutex_enter(&vp->v_lock);
+ fp = (rfs4_file_t *)vsd_get(vp, nfs4_srv_vkey);
+ mutex_exit(&vp->v_lock);
+ if (fp) {
+ rfs4_dbe_lock(fp->dbe);
+ if (rfs4_dbe_is_invalid(fp->dbe)) {
+ rfs4_dbe_unlock(fp->dbe);
+ fp = NULL;
+ } else {
+ rfs4_dbe_hold(fp->dbe);
+ rfs4_dbe_unlock(fp->dbe);
+ }
+ }
+ }
return (fp);
}
@@ -2296,19 +2325,36 @@ rfs4_findfile_withlock(vnode_t *vp, nfs_fh4 *fh, bool_t *create)
rfs4_fcreate_arg arg;
bool_t screate = *create;
+ if (screate == FALSE) {
+ mutex_enter(&vp->v_lock);
+ fp = (rfs4_file_t *)vsd_get(vp, nfs4_srv_vkey);
+ mutex_exit(&vp->v_lock);
+ if (fp) {
+ rfs4_dbe_lock(fp->dbe);
+ if (rfs4_dbe_is_invalid(fp->dbe)) {
+ rfs4_dbe_unlock(fp->dbe);
+ fp = NULL;
+ } else {
+ rfs4_dbe_hold(fp->dbe);
+ rfs4_dbe_unlock(fp->dbe);
+ rw_enter(&fp->file_rwlock, RW_WRITER);
+ }
+ }
+ } else {
retry:
- arg.vp = vp;
- arg.fh = fh;
-
- fp = (rfs4_file_t *)rfs4_dbsearch(rfs4_file_idx, vp, create,
- &arg, RFS4_DBS_VALID);
- if (fp != NULL) {
- rw_enter(&fp->file_rwlock, RW_WRITER);
- if (fp->vp == NULL) {
- rw_exit(&fp->file_rwlock);
- rfs4_file_rele(fp);
- *create = screate;
- goto retry;
+ arg.vp = vp;
+ arg.fh = fh;
+
+ fp = (rfs4_file_t *)rfs4_dbsearch(rfs4_file_idx, vp, create,
+ &arg, RFS4_DBS_VALID);
+ if (fp != NULL) {
+ rw_enter(&fp->file_rwlock, RW_WRITER);
+ if (fp->vp == NULL) {
+ rw_exit(&fp->file_rwlock);
+ rfs4_file_rele(fp);
+ *create = screate;
+ goto retry;
+ }
}
}
@@ -3642,7 +3688,12 @@ rfs4_close_all_state(rfs4_file_t *fp)
*/
rfs4_dbe_lock(fp->dbe);
if (fp->vp) {
- VN_RELE(fp->vp);
+ vnode_t *vp = fp->vp;
+
+ mutex_enter(&vp->v_lock);
+ (void) vsd_set(vp, nfs4_srv_vkey, NULL);
+ mutex_exit(&vp->v_lock);
+ VN_RELE(vp);
fp->vp = NULL;
}
rfs4_dbe_unlock(fp->dbe);
diff --git a/usr/src/uts/common/fs/nfs/nfs_srv.c b/usr/src/uts/common/fs/nfs/nfs_srv.c
index ea81a14ba1..e75bd68a7c 100644
--- a/usr/src/uts/common/fs/nfs/nfs_srv.c
+++ b/usr/src/uts/common/fs/nfs/nfs_srv.c
@@ -100,14 +100,13 @@ rfs_getattr(fhandle_t *fhp, struct nfsattrstat *ns, struct exportinfo *exi,
vnode_t *vp;
struct vattr va;
- TRACE_0(TR_FAC_NFS, TR_RFS_GETATTR_START,
- "rfs_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_GETATTR_START, "rfs_getattr_start:");
vp = nfs_fhtovp(fhp, exi);
if (vp == NULL) {
ns->ns_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_GETATTR_END,
- "rfs_getattr_end:(%S)", "stale");
+ "rfs_getattr_end:(%S)", "stale");
return;
}
@@ -115,11 +114,9 @@ rfs_getattr(fhandle_t *fhp, struct nfsattrstat *ns, struct exportinfo *exi,
* Do the getattr.
*/
va.va_mask = AT_ALL; /* we want all the attributes */
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = rfs4_delegated_getattr(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
/* check for overflows */
if (!error) {
@@ -131,8 +128,7 @@ rfs_getattr(fhandle_t *fhp, struct nfsattrstat *ns, struct exportinfo *exi,
ns->ns_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_GETATTR_END,
- "rfs_getattr_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_GETATTR_END, "rfs_getattr_end:(%S)", "done");
}
void *
rfs_getattr_getfh(fhandle_t *fhp)
@@ -157,14 +153,13 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
struct vattr bva;
struct flock64 bf;
- TRACE_0(TR_FAC_NFS, TR_RFS_SETATTR_START,
- "rfs_setattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_SETATTR_START, "rfs_setattr_start:");
vp = nfs_fhtovp(&args->saa_fh, exi);
if (vp == NULL) {
ns->ns_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END,
- "rfs_setattr_end:(%S)", "stale");
+ "rfs_setattr_end:(%S)", "stale");
return;
}
@@ -172,7 +167,7 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
VN_RELE(vp);
ns->ns_status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END,
- "rfs_setattr_end:(%S)", "rofs");
+ "rfs_setattr_end:(%S)", "rofs");
return;
}
@@ -181,7 +176,7 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
VN_RELE(vp);
ns->ns_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END,
- "rfs_setattr_end:(%S)", "sattr");
+ "rfs_setattr_end:(%S)", "sattr");
return;
}
@@ -244,7 +239,7 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
VN_RELE(vp);
curthread->t_flag |= T_WOULDBLOCK;
TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END,
- "rfs_setattr_end:(%S)", "delegated");
+ "rfs_setattr_end:(%S)", "delegated");
return;
}
if (nbl_need_check(vp)) {
@@ -253,18 +248,16 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
}
bva.va_mask = AT_UID | AT_SIZE;
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &bva, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
if (error) {
if (in_crit)
nbl_end_crit(vp);
VN_RELE(vp);
ns->ns_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END,
- "rfs_setattr_end:(%S)", "getattr");
+ "rfs_setattr_end:(%S)", "getattr");
return;
}
@@ -285,7 +278,7 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
}
if (crgetuid(cr) == bva.va_uid && !error &&
- va.va_size != bva.va_size) {
+ va.va_size != bva.va_size) {
va.va_mask &= ~AT_SIZE;
bf.l_type = F_WRLCK;
bf.l_whence = 0;
@@ -294,11 +287,10 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
bf.l_sysid = 0;
bf.l_pid = 0;
TRACE_0(TR_FAC_NFS, TR_VOP_SPACE_START,
- "vop_space_start:");
+ "vop_space_start:");
error = VOP_SPACE(vp, F_FREESP, &bf, FWRITE,
- (offset_t)va.va_size, cr, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_SPACE_END,
- "vop_space_end:");
+ (offset_t)va.va_size, cr, NULL);
+ TRACE_0(TR_FAC_NFS, TR_VOP_SPACE_END, "vop_space_end:");
}
if (in_crit)
nbl_end_crit(vp);
@@ -309,20 +301,16 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
* Do the setattr.
*/
if (!error && va.va_mask) {
- TRACE_0(TR_FAC_NFS, TR_VOP_SETATTR_START,
- "vop_setattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_SETATTR_START, "vop_setattr_start:");
error = VOP_SETATTR(vp, &va, flag, cr, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_SETATTR_END,
- "vop_setattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_SETATTR_END, "vop_setattr_end:");
}
if (!error) {
va.va_mask = AT_ALL; /* get everything */
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = rfs4_delegated_getattr(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
/* check for overflows */
if (!error) {
@@ -340,8 +328,7 @@ rfs_setattr(struct nfssaargs *args, struct nfsattrstat *ns,
ns->ns_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END,
- "rfs_setattr_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_SETATTR_END, "rfs_setattr_end:(%S)", "done");
}
void *
rfs_setattr_getfh(struct nfssaargs *args)
@@ -366,8 +353,7 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
struct sec_ol sec = {0, 0};
bool_t publicfh_flag = FALSE, auth_weak = FALSE;
- TRACE_0(TR_FAC_NFS, TR_RFS_LOOKUP_START,
- "rfs_lookup_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_LOOKUP_START, "rfs_lookup_start:");
/*
* Trusted Extension doesn't support NFSv2. MOUNT
@@ -377,7 +363,7 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
if (is_system_labeled() && req->rq_vers == 2) {
dr->dr_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_LOOKUP_END,
- "rfs_lookup_end:(%S)", "access");
+ "rfs_lookup_end:(%S)", "access");
return;
}
@@ -387,7 +373,7 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
if (da->da_name == NULL || *da->da_name == '\0') {
dr->dr_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_LOOKUP_END,
- "rfs_lookup_end:(%S)", "access");
+ "rfs_lookup_end:(%S)", "access");
return;
}
@@ -403,7 +389,7 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
if (dvp == NULL) {
dr->dr_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_LOOKUP_END,
- "rfs_lookup_end:(%S)", "stale");
+ "rfs_lookup_end:(%S)", "stale");
return;
}
}
@@ -418,7 +404,7 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
VN_RELE(dvp);
dr->dr_status = NFSERR_NOENT;
TRACE_1(TR_FAC_NFS, TR_RFS_LOOKUP_END,
- "rfs_lookup_end:(%S)", "noent");
+ "rfs_lookup_end:(%S)", "noent");
return;
}
@@ -434,25 +420,21 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
if (PUBLIC_FH2(fhp)) {
publicfh_flag = TRUE;
error = rfs_publicfh_mclookup(da->da_name, dvp, cr, &vp, &exi,
- &sec);
+ &sec);
} else {
/*
* Do a normal single component lookup.
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_START,
- "vop_lookup_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_START, "vop_lookup_start:");
error = VOP_LOOKUP(dvp, da->da_name, &vp, NULL, 0, NULL, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_END,
- "vop_lookup_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_END, "vop_lookup_end:");
}
if (!error) {
va.va_mask = AT_ALL; /* we want everything */
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = rfs4_delegated_getattr(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
/* check for overflows */
if (!error) {
acl_perm(vp, exi, &va, cr);
@@ -460,12 +442,12 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
if (!error) {
if (sec.sec_flags & SEC_QUERY)
error = makefh_ol(&dr->dr_fhandle, exi,
- sec.sec_index);
+ sec.sec_index);
else {
error = makefh(&dr->dr_fhandle, vp,
- exi);
+ exi);
if (!error && publicfh_flag &&
- !chk_clnt_sec(exi, req))
+ !chk_clnt_sec(exi, req))
auth_weak = TRUE;
}
}
@@ -494,8 +476,7 @@ rfs_lookup(struct nfsdiropargs *da, struct nfsdiropres *dr,
else
dr->dr_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_LOOKUP_END,
- "rfs_lookup_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_LOOKUP_END, "rfs_lookup_end:(%S)", "done");
}
void *
rfs_lookup_getfh(struct nfsdiropargs *da)
@@ -518,31 +499,28 @@ rfs_readlink(fhandle_t *fhp, struct nfsrdlnres *rl, struct exportinfo *exi,
vnode_t *vp;
struct vattr va;
- TRACE_0(TR_FAC_NFS, TR_RFS_READLINK_START,
- "rfs_readlink_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_READLINK_START, "rfs_readlink_start:");
vp = nfs_fhtovp(fhp, exi);
if (vp == NULL) {
rl->rl_data = NULL;
rl->rl_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_READLINK_END,
- "rfs_readlink_end:(%S)", "stale");
+ "rfs_readlink_end:(%S)", "stale");
return;
}
va.va_mask = AT_MODE;
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
if (error) {
VN_RELE(vp);
rl->rl_data = NULL;
rl->rl_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_READLINK_END,
- "rfs_readlink_end:(%S)", "getattr error");
+ "rfs_readlink_end:(%S)", "getattr error");
return;
}
@@ -551,7 +529,7 @@ rfs_readlink(fhandle_t *fhp, struct nfsrdlnres *rl, struct exportinfo *exi,
rl->rl_data = NULL;
rl->rl_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_READLINK_END,
- "rfs_readlink_end:(%S)", "access");
+ "rfs_readlink_end:(%S)", "access");
return;
}
@@ -564,7 +542,7 @@ rfs_readlink(fhandle_t *fhp, struct nfsrdlnres *rl, struct exportinfo *exi,
rl->rl_data = NULL;
rl->rl_status = NFSERR_NXIO;
TRACE_1(TR_FAC_NFS, TR_RFS_READLINK_END,
- "rfs_readlink_end:(%S)", "nxio");
+ "rfs_readlink_end:(%S)", "nxio");
return;
}
@@ -588,11 +566,9 @@ rfs_readlink(fhandle_t *fhp, struct nfsrdlnres *rl, struct exportinfo *exi,
/*
* Do the readlink.
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_READLINK_START,
- "vop_readlink_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_READLINK_START, "vop_readlink_start:");
error = VOP_READLINK(vp, &uio, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_READLINK_END,
- "vop_readlink_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_READLINK_END, "vop_readlink_end:");
#if 0 /* notyet */
/*
@@ -621,7 +597,7 @@ rfs_readlink(fhandle_t *fhp, struct nfsrdlnres *rl, struct exportinfo *exi,
rl->rl_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_READLINK_END,
- "rfs_readlink_end:(%S)", "done");
+ "rfs_readlink_end:(%S)", "done");
}
void *
rfs_readlink_getfh(fhandle_t *fhp)
@@ -656,15 +632,14 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
int alloc_err = 0;
int in_crit = 0;
- TRACE_0(TR_FAC_NFS, TR_RFS_READ_START,
- "rfs_read_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_READ_START, "rfs_read_start:");
vp = nfs_fhtovp(&ra->ra_fhandle, exi);
if (vp == NULL) {
rr->rr_data = NULL;
rr->rr_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "stale");
+ "rfs_read_end:(%S)", "stale");
return;
}
@@ -673,7 +648,7 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
rr->rr_data = NULL;
rr->rr_status = NFSERR_ISDIR;
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "isdir");
+ "rfs_read_end:(%S)", "isdir");
return;
}
@@ -687,7 +662,7 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
curthread->t_flag |= T_WOULDBLOCK;
rr->rr_data = NULL;
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "delegated");
+ "rfs_read_end:(%S)", "delegated");
return;
}
@@ -704,38 +679,33 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
rr->rr_data = NULL;
rr->rr_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", " csf access error");
+ "rfs_read_end:(%S)", " csf access error");
return;
}
in_crit = 1;
}
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START,
- "vop_rwlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START, "vop_rwlock_start:");
(void) VOP_RWLOCK(vp, V_WRITELOCK_FALSE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END,
- "vop_rwlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END, "vop_rwlock_end:");
va.va_mask = AT_ALL;
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
if (error) {
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
if (in_crit)
nbl_end_crit(vp);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
VN_RELE(vp);
rr->rr_data = NULL;
rr->rr_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "getattr error");
+ "rfs_read_end:(%S)", "getattr error");
return;
}
@@ -745,52 +715,49 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
* is always allowed to read it.
*/
if (crgetuid(cr) != va.va_uid) {
- TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START,
- "vop_access_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START, "vop_access_start:");
error = VOP_ACCESS(vp, VREAD, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END,
- "vop_access_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END, "vop_access_end:");
if (error) {
/*
* Exec is the same as read over the net because
* of demand loading.
*/
TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START,
- "vop_access_start:");
+ "vop_access_start:");
error = VOP_ACCESS(vp, VEXEC, 0, cr);
TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END,
- "vop_access_end:");
+ "vop_access_end:");
}
if (error) {
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
if (in_crit)
nbl_end_crit(vp);
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ "vop_rwunlock_end:");
VN_RELE(vp);
rr->rr_data = NULL;
rr->rr_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "access error");
+ "rfs_read_end:(%S)", "access error");
return;
}
}
if (MANDLOCK(vp, va.va_mode)) {
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
if (in_crit)
nbl_end_crit(vp);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
VN_RELE(vp);
rr->rr_data = NULL;
rr->rr_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "mand lock");
+ "rfs_read_end:(%S)", "mand lock");
return;
}
@@ -831,26 +798,23 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
uio.uio_loffset = (offset_t)ra->ra_offset;
uio.uio_resid = ra->ra_count;
- TRACE_0(TR_FAC_NFS, TR_VOP_READ_START,
- "vop_read_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_READ_START, "vop_read_start:");
error = VOP_READ(vp, &uio, 0, cr, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_READ_END,
- "vop_read_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_READ_END, "vop_read_end:");
if (error) {
freeb(mp);
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
if (in_crit)
nbl_end_crit(vp);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
VN_RELE(vp);
rr->rr_data = NULL;
rr->rr_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "read error");
+ "rfs_read_end:(%S)", "read error");
return;
}
@@ -859,25 +823,23 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
* time to the client side for his cache.
*/
va.va_mask = AT_ALL;
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
if (error) {
freeb(mp);
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
if (in_crit)
nbl_end_crit(vp);
TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ "vop_rwunlock_end:");
VN_RELE(vp);
rr->rr_data = NULL;
rr->rr_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "read error");
+ "rfs_read_end:(%S)", "read error");
return;
}
@@ -886,13 +848,11 @@ rfs_read(struct nfsreadargs *ra, struct nfsrdresult *rr,
rr->rr_data = (char *)mp->b_datap->db_base;
done:
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START, "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
if (in_crit)
nbl_end_crit(vp);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
acl_perm(vp, exi, &va, cr);
@@ -915,8 +875,7 @@ done:
rr->rr_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_read_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_READ_END, "rfs_read_end:(%S)", "done");
}
/*
@@ -970,14 +929,13 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
cred_t *savecred;
int in_crit = 0;
- TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_START,
- "rfs_write_start:(%S)", "sync");
+ TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_START, "rfs_write_start:(%S)", "sync");
vp = nfs_fhtovp(&wa->wa_fhandle, exi);
if (vp == NULL) {
ns->ns_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "stale");
+ "rfs_write_end:(%S)", "stale");
return;
}
@@ -985,7 +943,7 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
VN_RELE(vp);
ns->ns_status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "rofs");
+ "rfs_write_end:(%S)", "rofs");
return;
}
@@ -993,7 +951,7 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
VN_RELE(vp);
ns->ns_status = NFSERR_ISDIR;
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "isdir");
+ "rfs_write_end:(%S)", "isdir");
return;
}
@@ -1006,22 +964,20 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
VN_RELE(vp);
curthread->t_flag |= T_WOULDBLOCK;
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_write_end:(%S)", "delegated");
+ "rfs_write_end:(%S)", "delegated");
return;
}
va.va_mask = AT_UID|AT_MODE;
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
if (error) {
VN_RELE(vp);
ns->ns_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "getattr error");
+ "rfs_write_end:(%S)", "getattr error");
return;
}
@@ -1031,16 +987,14 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
* with read only permission. The owner of the file
* is always allowed to write it.
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START,
- "vop_access_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START, "vop_access_start:");
error = VOP_ACCESS(vp, VWRITE, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END,
- "vop_access_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END, "vop_access_end:");
if (error) {
VN_RELE(vp);
ns->ns_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "access error");
+ "rfs_write_end:(%S)", "access error");
return;
}
}
@@ -1054,7 +1008,7 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
VN_RELE(vp);
ns->ns_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "mand lock");
+ "rfs_write_end:(%S)", "mand lock");
return;
}
@@ -1072,11 +1026,9 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
}
}
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START,
- "vop_rwlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START, "vop_rwlock_start:");
(void) VOP_RWLOCK(vp, V_WRITELOCK_TRUE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END,
- "vop_rwlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END, "vop_rwlock_end:");
if (wa->wa_data) {
iov[0].iov_base = wa->wa_data;
@@ -1100,7 +1052,7 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
* for now we assume no append mode
*/
TRACE_1(TR_FAC_NFS, TR_VOP_WRITE_START,
- "vop_write_start:(%S)", "sync");
+ "vop_write_start:(%S)", "sync");
/*
* We're changing creds because VM may fault and we need
* the cred of the current thread to be used if quota
@@ -1110,8 +1062,7 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
curthread->t_cred = cr;
error = VOP_WRITE(vp, &uio, FSYNC, cr, NULL);
curthread->t_cred = savecred;
- TRACE_0(TR_FAC_NFS, TR_VOP_WRITE_END,
- "vop_write_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_WRITE_END, "vop_write_end:");
} else {
iovcnt = 0;
for (m = wa->wa_mblk; m != NULL; m = m->b_cont)
@@ -1147,7 +1098,7 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
* For now we assume no append mode.
*/
TRACE_1(TR_FAC_NFS, TR_VOP_WRITE_START,
- "vop_write_start:(%S)", "iov sync");
+ "vop_write_start:(%S)", "iov sync");
/*
* We're changing creds because VM may fault and we need
* the cred of the current thread to be used if quota
@@ -1157,18 +1108,15 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
curthread->t_cred = cr;
error = VOP_WRITE(vp, &uio, FSYNC, cr, NULL);
curthread->t_cred = savecred;
- TRACE_0(TR_FAC_NFS, TR_VOP_WRITE_END,
- "vop_write_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_WRITE_END, "vop_write_end:");
if (iovp != iov)
kmem_free(iovp, sizeof (*iovp) * iovcnt);
}
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START, "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_TRUE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
if (!error) {
/*
@@ -1176,11 +1124,9 @@ rfs_write_sync(struct nfswriteargs *wa, struct nfsattrstat *ns,
* time to the client side for his cache.
*/
va.va_mask = AT_ALL; /* now we want everything */
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
/* check for overflows */
if (!error) {
acl_perm(vp, exi, &va, cr);
@@ -1195,8 +1141,7 @@ out:
ns->ns_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "sync");
+ TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END, "rfs_write_end:(%S)", "sync");
}
struct rfs_async_write {
@@ -1268,7 +1213,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
}
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_START,
- "rfs_write_start:(%S)", "async");
+ "rfs_write_start:(%S)", "async");
/*
* Initialize status to RFSWRITE_INITVAL instead of 0, since value of 0
@@ -1319,7 +1264,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
cv_wait(&lp->cv, &rfs_async_write_lock);
mutex_exit(&rfs_async_write_lock);
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "cluster child");
+ "rfs_write_end:(%S)", "cluster child");
return;
}
@@ -1368,7 +1313,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
cv_broadcast(&nlp->cv);
mutex_exit(&rfs_async_write_lock);
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "stale");
+ "rfs_write_end:(%S)", "stale");
return;
}
@@ -1395,7 +1340,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
cv_broadcast(&nlp->cv);
mutex_exit(&rfs_async_write_lock);
TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "isdir");
+ "rfs_write_end:(%S)", "isdir");
return;
}
@@ -1412,11 +1357,9 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
* Lock the file for writing. This operation provides
* the delay which allows clusters to grow.
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START,
- "vop_wrlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START, "vop_wrlock_start:");
(void) VOP_RWLOCK(vp, V_WRITELOCK_TRUE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END,
- "vop_wrlock_end");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END, "vop_wrlock_end");
/*
* Disconnect this cluster from the list of clusters.
@@ -1469,11 +1412,9 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
}
va.va_mask = AT_UID|AT_MODE;
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, rp->cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
if (!error) {
if (crgetuid(rp->cr) != va.va_uid) {
/*
@@ -1483,10 +1424,10 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
* write it.
*/
TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START,
- "vop_access_start:");
+ "vop_access_start:");
error = VOP_ACCESS(vp, VWRITE, 0, rp->cr);
TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END,
- "vop_access_end:");
+ "vop_access_end:");
}
if (!error && MANDLOCK(vp, va.va_mode))
error = EACCES;
@@ -1618,7 +1559,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
* For now we assume no append mode.
*/
TRACE_1(TR_FAC_NFS, TR_VOP_WRITE_START,
- "vop_write_start:(%S)", "async");
+ "vop_write_start:(%S)", "async");
/*
* Check to see if the v4 side of the server has
@@ -1629,7 +1570,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
curthread->t_flag |= T_WOULDBLOCK;
error = EACCES; /* just to have an error */
TRACE_1(TR_FAC_NFS, TR_RFS_READ_END,
- "rfs_write_end:(%S)", "delegated");
+ "rfs_write_end:(%S)", "delegated");
} else {
/*
* We're changing creds because VM may fault
@@ -1642,7 +1583,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
error = VOP_WRITE(vp, &uio, 0, rp->cr, NULL);
curthread->t_cred = savecred;
TRACE_0(TR_FAC_NFS, TR_VOP_WRITE_END,
- "vop_write_end:");
+ "vop_write_end:");
}
if (niovp != iov)
@@ -1656,10 +1597,10 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
*/
va.va_mask = AT_ALL; /* now we want everything */
TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, rp->cr);
TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ "vop_getattr_end:");
if (!error)
acl_perm(vp, exi, &va, rp->cr);
}
@@ -1687,25 +1628,20 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
* the data and metadata to stable storage.
*/
if (data_written) {
- TRACE_0(TR_FAC_NFS, TR_VOP_PUTPAGE_START,
- "vop_putpage_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_PUTPAGE_START, "vop_putpage_start:");
error = VOP_PUTPAGE(vp, (u_offset_t)off, len, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_PUTPAGE_END,
- "vop_putpage_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_PUTPAGE_END, "vop_putpage_end:");
if (!error) {
TRACE_0(TR_FAC_NFS, TR_VOP_FSYNC_START,
- "vop_fsync_start:");
+ "vop_fsync_start:");
error = VOP_FSYNC(vp, FNODSYNC, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_FSYNC_END,
- "vop_fsync_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_FSYNC_END, "vop_fsync_end:");
}
}
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START, "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_TRUE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
if (in_crit)
nbl_end_crit(vp);
@@ -1722,8 +1658,7 @@ rfs_write(struct nfswriteargs *wa, struct nfsattrstat *ns,
cv_broadcast(&nlp->cv);
mutex_exit(&rfs_async_write_lock);
- TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END,
- "rfs_write_end:(%S)", "async");
+ TRACE_1(TR_FAC_NFS, TR_RFS_WRITE_END, "rfs_write_end:(%S)", "async");
}
void *
@@ -1753,8 +1688,7 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
int lookup_ok;
bool_t trunc;
- TRACE_0(TR_FAC_NFS, TR_RFS_CREATE_START,
- "rfs_create_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_CREATE_START, "rfs_create_start:");
/*
* Disallow NULL paths
@@ -1762,7 +1696,7 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
if (name == NULL || *name == '\0') {
dr->dr_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_CREATE_END,
- "rfs_create_end:(%S)", "access");
+ "rfs_create_end:(%S)", "access");
return;
}
@@ -1770,7 +1704,7 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
if (dvp == NULL) {
dr->dr_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_CREATE_END,
- "rfs_create_end:(%S)", "stale");
+ "rfs_create_end:(%S)", "stale");
return;
}
@@ -1778,7 +1712,7 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
if (error) {
dr->dr_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_CREATE_END,
- "rfs_create_end:(%S)", "sattr");
+ "rfs_create_end:(%S)", "sattr");
return;
}
@@ -1789,7 +1723,7 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
VN_RELE(dvp);
dr->dr_status = NFSERR_INVAL;
TRACE_1(TR_FAC_NFS, TR_RFS_CREATE_END,
- "rfs_create_end:(%S)", "no mode");
+ "rfs_create_end:(%S)", "no mode");
return;
}
@@ -1842,21 +1776,19 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
lookup_ok = 0;
mode = VWRITE;
if (!(va.va_mask & AT_SIZE) || va.va_type != VREG) {
- TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_START,
- "vop_lookup_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_START, "vop_lookup_start:");
error = VOP_LOOKUP(dvp, name, &tvp, NULL, 0, NULL, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_END,
- "vop_lookup_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_END, "vop_lookup_end:");
if (!error) {
struct vattr at;
lookup_ok = 1;
at.va_mask = AT_MODE;
TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ "vop_getattr_start:");
error = VOP_GETATTR(tvp, &at, 0, cr);
TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ "vop_getattr_end:");
if (!error)
mode = (at.va_mode & S_IWUSR) ? VWRITE : VREAD;
VN_RELE(tvp);
@@ -1916,7 +1848,7 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
}
if (length) {
if (nbl_conflict(tvp, NBL_WRITE,
- offset, length, 0)) {
+ offset, length, 0)) {
error = EACCES;
}
}
@@ -1940,11 +1872,9 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
exi->exi_export.ex_flags & EX_NOSUID)
va.va_mode &= ~(VSUID | VSGID);
- TRACE_0(TR_FAC_NFS, TR_VOP_CREATE_START,
- "vop_create_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_CREATE_START, "vop_create_start:");
error = VOP_CREATE(dvp, name, &va, NONEXCL, mode, &vp, cr, 0);
- TRACE_0(TR_FAC_NFS, TR_VOP_CREATE_END,
- "vop_create_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_CREATE_END, "vop_create_end:");
if (!error) {
@@ -1953,24 +1883,24 @@ rfs_create(struct nfscreatargs *args, struct nfsdiropres *dr,
else
trunc = FALSE;
- if (rfs4_check_delegated(FWRITE, tvp, trunc)) {
- VN_RELE(tvp);
+ if (rfs4_check_delegated(FWRITE, vp, trunc)) {
+ VN_RELE(vp);
curthread->t_flag |= T_WOULDBLOCK;
goto out;
}
va.va_mask = AT_ALL;
TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ "vop_getattr_start:");
error = VOP_GETATTR(vp, &va, 0, cr);
TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ "vop_getattr_end:");
/* check for overflows */
if (!error) {
acl_perm(vp, exi, &va, cr);
error = vattr_to_nattr(&va, &dr->dr_attr);
if (!error) {
error = makefh(&dr->dr_fhandle, vp,
- exi);
+ exi);
}
}
/*
@@ -1997,8 +1927,7 @@ out:
dr->dr_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_CREATE_END,
- "rfs_create_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_CREATE_END, "rfs_create_end:(%S)", "done");
}
void *
rfs_create_getfh(struct nfscreatargs *args)
@@ -2019,8 +1948,7 @@ rfs_remove(struct nfsdiropargs *da, enum nfsstat *status,
vnode_t *targvp;
int in_crit = 0;
- TRACE_0(TR_FAC_NFS, TR_RFS_REMOVE_START,
- "rfs_remove_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_REMOVE_START, "rfs_remove_start:");
/*
* Disallow NULL paths
@@ -2028,7 +1956,7 @@ rfs_remove(struct nfsdiropargs *da, enum nfsstat *status,
if (da->da_name == NULL || *da->da_name == '\0') {
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_REMOVE_END,
- "rfs_remove_end:(%S)", "access");
+ "rfs_remove_end:(%S)", "access");
return;
}
@@ -2036,7 +1964,7 @@ rfs_remove(struct nfsdiropargs *da, enum nfsstat *status,
if (vp == NULL) {
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_REMOVE_END,
- "rfs_remove_end:(%S)", "stale");
+ "rfs_remove_end:(%S)", "stale");
return;
}
@@ -2044,15 +1972,14 @@ rfs_remove(struct nfsdiropargs *da, enum nfsstat *status,
VN_RELE(vp);
*status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_REMOVE_END,
- "rfs_remove_end:(%S)", "rofs");
+ "rfs_remove_end:(%S)", "rofs");
return;
}
/*
* Check for a conflict with a non-blocking mandatory share reservation.
*/
- error = VOP_LOOKUP(vp, da->da_name, &targvp, NULL, 0,
- NULL, cr);
+ error = VOP_LOOKUP(vp, da->da_name, &targvp, NULL, 0, NULL, cr);
if (error != 0) {
VN_RELE(vp);
*status = puterrno(error);
@@ -2083,11 +2010,9 @@ rfs_remove(struct nfsdiropargs *da, enum nfsstat *status,
}
}
- TRACE_0(TR_FAC_NFS, TR_VOP_REMOVE_START,
- "vop_remove_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_REMOVE_START, "vop_remove_start:");
error = VOP_REMOVE(vp, da->da_name, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_REMOVE_END,
- "vop_remove_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_REMOVE_END, "vop_remove_end:");
/*
* Force modified data and metadata out to stable storage.
@@ -2102,8 +2027,7 @@ out:
*status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_REMOVE_END,
- "rfs_remove_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_REMOVE_END, "rfs_remove_end:(%S)", "done");
}
void *
@@ -2129,14 +2053,13 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
vnode_t *targvp;
int in_crit = 0;
- TRACE_0(TR_FAC_NFS, TR_RFS_RENAME_START,
- "rfs_rename_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_RENAME_START, "rfs_rename_start:");
fromvp = nfs_fhtovp(args->rna_from.da_fhandle, exi);
if (fromvp == NULL) {
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "from stale");
+ "rfs_rename_end:(%S)", "from stale");
return;
}
@@ -2146,7 +2069,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "cross device");
+ "rfs_rename_end:(%S)", "cross device");
return;
}
exi_rele(to_exi);
@@ -2155,7 +2078,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_XDEV;
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "from stale");
+ "rfs_rename_end:(%S)", "from stale");
return;
}
@@ -2164,7 +2087,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "to stale");
+ "rfs_rename_end:(%S)", "to stale");
return;
}
@@ -2172,7 +2095,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
VN_RELE(tovp);
VN_RELE(fromvp);
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "not dir");
+ "rfs_rename_end:(%S)", "not dir");
*status = NFSERR_NOTDIR;
return;
}
@@ -2186,7 +2109,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "access");
+ "rfs_rename_end:(%S)", "access");
return;
}
@@ -2195,7 +2118,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "rofs");
+ "rfs_rename_end:(%S)", "rofs");
return;
}
@@ -2203,7 +2126,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
* Check for a conflict with a non-blocking mandatory share reservation.
*/
error = VOP_LOOKUP(fromvp, args->rna_from.da_name, &srcvp, NULL, 0,
- NULL, cr);
+ NULL, cr);
if (error != 0) {
VN_RELE(tovp);
VN_RELE(fromvp);
@@ -2248,12 +2171,10 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
}
}
- TRACE_0(TR_FAC_NFS, TR_VOP_RENAME_START,
- "vop_rename_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RENAME_START, "vop_rename_start:");
error = VOP_RENAME(fromvp, args->rna_from.da_name,
tovp, args->rna_to.da_name, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_RENAME_END,
- "vop_rename_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RENAME_END, "vop_rename_end:");
if (error == 0) {
char *tmp;
@@ -2264,7 +2185,7 @@ rfs_rename(struct nfsrnmargs *args, enum nfsstat *status,
srcvp->v_path = NULL;
mutex_exit(&srcvp->v_lock);
vn_setpath(rootdir, tovp, srcvp, args->rna_to.da_name,
- strlen(args->rna_to.da_name));
+ strlen(args->rna_to.da_name));
if (tmp != NULL)
kmem_free(tmp, strlen(tmp) + 1);
}
@@ -2284,8 +2205,7 @@ out:
*status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END,
- "rfs_rename_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_RENAME_END, "rfs_rename_end:(%S)", "done");
}
void *
rfs_rename_getfh(struct nfsrnmargs *args)
@@ -2307,14 +2227,13 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
struct exportinfo *to_exi;
fhandle_t *fh;
- TRACE_0(TR_FAC_NFS, TR_RFS_LINK_START,
- "rfs_link_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_LINK_START, "rfs_link_start:");
fromvp = nfs_fhtovp(args->la_from, exi);
if (fromvp == NULL) {
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "from stale");
+ "rfs_link_end:(%S)", "from stale");
return;
}
@@ -2324,7 +2243,7 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "cross device");
+ "rfs_link_end:(%S)", "cross device");
return;
}
exi_rele(to_exi);
@@ -2333,7 +2252,7 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_XDEV;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "cross device");
+ "rfs_link_end:(%S)", "cross device");
return;
}
@@ -2342,7 +2261,7 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "to stale");
+ "rfs_link_end:(%S)", "to stale");
return;
}
@@ -2351,7 +2270,7 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_NOTDIR;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "not dir");
+ "rfs_link_end:(%S)", "not dir");
return;
}
/*
@@ -2362,7 +2281,7 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "access");
+ "rfs_link_end:(%S)", "access");
return;
}
@@ -2371,15 +2290,13 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
VN_RELE(fromvp);
*status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "rofs");
+ "rfs_link_end:(%S)", "rofs");
return;
}
- TRACE_0(TR_FAC_NFS, TR_VOP_LINK_START,
- "vop_link_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LINK_START, "vop_link_start:");
error = VOP_LINK(tovp, fromvp, args->la_to.da_name, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_LINK_END,
- "vop_link_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LINK_END, "vop_link_end:");
/*
* Force modified data and metadata out to stable storage.
@@ -2392,8 +2309,7 @@ rfs_link(struct nfslinkargs *args, enum nfsstat *status,
*status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END,
- "rfs_link_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_LINK_END, "rfs_link_end:(%S)", "done");
}
void *
rfs_link_getfh(struct nfslinkargs *args)
@@ -2416,8 +2332,7 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
vnode_t *svp;
int lerror;
- TRACE_0(TR_FAC_NFS, TR_RFS_SYMLINK_START,
- "rfs_symlink_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_SYMLINK_START, "rfs_symlink_start:");
/*
* Disallow NULL paths
@@ -2425,7 +2340,7 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
if (args->sla_from.da_name == NULL || *args->sla_from.da_name == '\0') {
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END,
- "rfs_symlink_end:(%S)", "access");
+ "rfs_symlink_end:(%S)", "access");
return;
}
@@ -2433,7 +2348,7 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
if (vp == NULL) {
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END,
- "rfs_symlink_end:(%S)", "stale");
+ "rfs_symlink_end:(%S)", "stale");
return;
}
@@ -2441,7 +2356,7 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
VN_RELE(vp);
*status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END,
- "rfs_symlink_end:(%S)", "rofs");
+ "rfs_symlink_end:(%S)", "rofs");
return;
}
@@ -2450,7 +2365,7 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
VN_RELE(vp);
*status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END,
- "rfs_symlink_end:(%S)", "sattr");
+ "rfs_symlink_end:(%S)", "sattr");
return;
}
@@ -2458,28 +2373,24 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
VN_RELE(vp);
*status = NFSERR_INVAL;
TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END,
- "rfs_symlink_end:(%S)", "no mode");
+ "rfs_symlink_end:(%S)", "no mode");
return;
}
va.va_type = VLNK;
va.va_mask |= AT_TYPE;
- TRACE_0(TR_FAC_NFS, TR_VOP_SYMLINK_START,
- "vop_symlink_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_SYMLINK_START, "vop_symlink_start:");
error = VOP_SYMLINK(vp, args->sla_from.da_name, &va, args->sla_tnm, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_SYMLINK_END,
- "vop_symlink_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_SYMLINK_END, "vop_symlink_end:");
/*
* Force new data and metadata out to stable storage.
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_START,
- "vop_lookup_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_START, "vop_lookup_start:");
lerror = VOP_LOOKUP(vp, args->sla_from.da_name, &svp, NULL,
0, NULL, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_END,
- "vop_lookup_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_LOOKUP_END, "vop_lookup_end:");
if (!lerror) {
(void) VOP_FSYNC(svp, 0, cr);
VN_RELE(svp);
@@ -2494,8 +2405,7 @@ rfs_symlink(struct nfsslargs *args, enum nfsstat *status,
*status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END,
- "rfs_symlink_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_SYMLINK_END, "rfs_symlink_end:(%S)", "done");
}
void *
rfs_symlink_getfh(struct nfsslargs *args)
@@ -2518,8 +2428,7 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
vnode_t *vp;
char *name = args->ca_da.da_name;
- TRACE_0(TR_FAC_NFS, TR_RFS_MKDIR_START,
- "rfs_mkdir_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_MKDIR_START, "rfs_mkdir_start:");
/*
* Disallow NULL paths
@@ -2527,7 +2436,7 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
if (name == NULL || *name == '\0') {
dr->dr_status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END,
- "rfs_mkdir_end:(%S)", "access");
+ "rfs_mkdir_end:(%S)", "access");
return;
}
@@ -2535,7 +2444,7 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
if (vp == NULL) {
dr->dr_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END,
- "rfs_mkdir_end:(%S)", "stale");
+ "rfs_mkdir_end:(%S)", "stale");
return;
}
@@ -2543,7 +2452,7 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
VN_RELE(vp);
dr->dr_status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END,
- "rfs_mkdir_end:(%S)", "rofs");
+ "rfs_mkdir_end:(%S)", "rofs");
return;
}
@@ -2552,7 +2461,7 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
VN_RELE(vp);
dr->dr_status = puterrno(error);
TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END,
- "rfs_mkdir_end:(%S)", "sattr");
+ "rfs_mkdir_end:(%S)", "sattr");
return;
}
@@ -2560,18 +2469,16 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
VN_RELE(vp);
dr->dr_status = NFSERR_INVAL;
TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END,
- "rfs_mkdir_end:(%S)", "no mode");
+ "rfs_mkdir_end:(%S)", "no mode");
return;
}
va.va_type = VDIR;
va.va_mask |= AT_TYPE;
- TRACE_0(TR_FAC_NFS, TR_VOP_MKDIR_START,
- "vop_mkdir_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_MKDIR_START, "vop_mkdir_start:");
error = VOP_MKDIR(vp, name, &va, &dvp, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_MKDIR_END,
- "vop_mkdir_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_MKDIR_END, "vop_mkdir_end:");
if (!error) {
/*
@@ -2579,11 +2486,9 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
* be returned to the client.
*/
va.va_mask = AT_ALL; /* We want everything */
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START,
- "vop_getattr_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_START, "vop_getattr_start:");
error = VOP_GETATTR(dvp, &va, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END,
- "vop_getattr_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_GETATTR_END, "vop_getattr_end:");
/* check for overflows */
if (!error) {
acl_perm(vp, exi, &va, cr);
@@ -2608,8 +2513,7 @@ rfs_mkdir(struct nfscreatargs *args, struct nfsdiropres *dr,
dr->dr_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END,
- "rfs_mkdir_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_MKDIR_END, "rfs_mkdir_end:(%S)", "done");
}
void *
rfs_mkdir_getfh(struct nfscreatargs *args)
@@ -2628,8 +2532,7 @@ rfs_rmdir(struct nfsdiropargs *da, enum nfsstat *status,
int error;
vnode_t *vp;
- TRACE_0(TR_FAC_NFS, TR_RFS_RMDIR_START,
- "rfs_rmdir_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_RMDIR_START, "rfs_rmdir_start:");
/*
* Disallow NULL paths
@@ -2637,7 +2540,7 @@ rfs_rmdir(struct nfsdiropargs *da, enum nfsstat *status,
if (da->da_name == NULL || *da->da_name == '\0') {
*status = NFSERR_ACCES;
TRACE_1(TR_FAC_NFS, TR_RFS_RMDIR_END,
- "rfs_rmdir_end:(%S)", "access");
+ "rfs_rmdir_end:(%S)", "access");
return;
}
@@ -2645,7 +2548,7 @@ rfs_rmdir(struct nfsdiropargs *da, enum nfsstat *status,
if (vp == NULL) {
*status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_RMDIR_END,
- "rfs_rmdir_end:(%S)", "stale");
+ "rfs_rmdir_end:(%S)", "stale");
return;
}
@@ -2653,7 +2556,7 @@ rfs_rmdir(struct nfsdiropargs *da, enum nfsstat *status,
VN_RELE(vp);
*status = NFSERR_ROFS;
TRACE_1(TR_FAC_NFS, TR_RFS_RMDIR_END,
- "rfs_rmdir_end:(%S)", "rofs");
+ "rfs_rmdir_end:(%S)", "rofs");
return;
}
@@ -2666,11 +2569,9 @@ rfs_rmdir(struct nfsdiropargs *da, enum nfsstat *status,
* supplying a vnode known to exist and illegal to
* remove.
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_RMDIR_START,
- "vop_rmdir_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RMDIR_START, "vop_rmdir_start:");
error = VOP_RMDIR(vp, da->da_name, rootdir, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_RMDIR_END,
- "vop_rmdir_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RMDIR_END, "vop_rmdir_end:");
/*
* Force modified data and metadata out to stable storage.
@@ -2690,8 +2591,7 @@ rfs_rmdir(struct nfsdiropargs *da, enum nfsstat *status,
else
*status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_RMDIR_END,
- "rfs_rmdir_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_RMDIR_END, "rfs_rmdir_end:(%S)", "done");
}
void *
rfs_rmdir_getfh(struct nfsdiropargs *da)
@@ -2710,15 +2610,14 @@ rfs_readdir(struct nfsrddirargs *rda, struct nfsrddirres *rd,
struct uio uio;
vnode_t *vp;
- TRACE_0(TR_FAC_NFS, TR_RFS_READDIR_START,
- "rfs_readdir_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_READDIR_START, "rfs_readdir_start:");
vp = nfs_fhtovp(&rda->rda_fh, exi);
if (vp == NULL) {
rd->rd_entries = NULL;
rd->rd_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_READDIR_END,
- "rfs_readdir_end:(%S)", "stale");
+ "rfs_readdir_end:(%S)", "stale");
return;
}
@@ -2727,21 +2626,17 @@ rfs_readdir(struct nfsrddirargs *rda, struct nfsrddirres *rd,
rd->rd_entries = NULL;
rd->rd_status = NFSERR_NOTDIR;
TRACE_1(TR_FAC_NFS, TR_RFS_READDIR_END,
- "rfs_readdir_end:(%S)", "notdir");
+ "rfs_readdir_end:(%S)", "notdir");
return;
}
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START,
- "vop_rwlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_START, "vop_rwlock_start:");
(void) VOP_RWLOCK(vp, V_WRITELOCK_FALSE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END,
- "vop_rwlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWLOCK_END, "vop_rwlock_end:");
- TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START,
- "vop_access_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_START, "vop_access_start:");
error = VOP_ACCESS(vp, VREAD, 0, cr);
- TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END,
- "vop_access_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_ACCESS_END, "vop_access_end:");
if (error) {
rd->rd_entries = NULL;
goto bad;
@@ -2777,11 +2672,9 @@ rfs_readdir(struct nfsrddirargs *rda, struct nfsrddirres *rd,
/*
* read directory
*/
- TRACE_0(TR_FAC_NFS, TR_VOP_READDIR_START,
- "vop_readdir_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_READDIR_START, "vop_readdir_start:");
error = VOP_READDIR(vp, &uio, cr, &iseof);
- TRACE_0(TR_FAC_NFS, TR_VOP_READDIR_END,
- "vop_readdir_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_READDIR_END, "vop_readdir_end:");
/*
* Clean up
@@ -2801,11 +2694,9 @@ rfs_readdir(struct nfsrddirargs *rda, struct nfsrddirres *rd,
}
bad:
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START,
- "vop_rwunlock_start:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_START, "vop_rwunlock_start:");
VOP_RWUNLOCK(vp, V_WRITELOCK_FALSE, NULL);
- TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END,
- "vop_rwunlock_end:");
+ TRACE_0(TR_FAC_NFS, TR_VOP_RWUNLOCK_END, "vop_rwunlock_end:");
#if 0 /* notyet */
/*
@@ -2823,8 +2714,7 @@ bad:
rd->rd_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_READDIR_END,
- "rfs_readdir_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_READDIR_END, "rfs_readdir_end:(%S)", "done");
}
void *
rfs_readdir_getfh(struct nfsrddirargs *rda)
@@ -2847,14 +2737,13 @@ rfs_statfs(fhandle_t *fh, struct nfsstatfs *fs, struct exportinfo *exi,
struct statvfs64 sb;
vnode_t *vp;
- TRACE_0(TR_FAC_NFS, TR_RFS_STATFS_START,
- "rfs_statfs_start:");
+ TRACE_0(TR_FAC_NFS, TR_RFS_STATFS_START, "rfs_statfs_start:");
vp = nfs_fhtovp(fh, exi);
if (vp == NULL) {
fs->fs_status = NFSERR_STALE;
TRACE_1(TR_FAC_NFS, TR_RFS_STATFS_END,
- "rfs_statfs_end:(%S)", "stale");
+ "rfs_statfs_end:(%S)", "stale");
return;
}
@@ -2872,8 +2761,7 @@ rfs_statfs(fhandle_t *fh, struct nfsstatfs *fs, struct exportinfo *exi,
fs->fs_status = puterrno(error);
- TRACE_1(TR_FAC_NFS, TR_RFS_STATFS_END,
- "rfs_statfs_end:(%S)", "done");
+ TRACE_1(TR_FAC_NFS, TR_RFS_STATFS_END, "rfs_statfs_end:(%S)", "done");
}
void *
rfs_statfs_getfh(fhandle_t *fh)
diff --git a/usr/src/uts/common/fs/vnode.c b/usr/src/uts/common/fs/vnode.c
index 02d4147b8e..2e0364a2d4 100644
--- a/usr/src/uts/common/fs/vnode.c
+++ b/usr/src/uts/common/fs/vnode.c
@@ -103,6 +103,39 @@ kmutex_t vskstat_tree_lock;
int vopstats_enabled = 1;
/*
+ * forward declarations for internal vnode specific data (vsd)
+ */
+static void *vsd_realloc(void *, size_t, size_t);
+
+/*
+ * VSD -- VNODE SPECIFIC DATA
+ * The v_data pointer is typically used by a file system to store a
+ * pointer to the file system's private node (e.g. ufs inode, nfs rnode).
+ * However, there are times when additional project private data needs
+ * to be stored separately from the data (node) pointed to by v_data.
+ * This additional data could be stored by the file system itself or
+ * by a completely different kernel entity. VSD provides a way for
+ * callers to obtain a key and store a pointer to private data associated
+ * with a vnode.
+ *
+ * Callers are responsible for protecting the vsd by holding v_lock
+ * for calls to vsd_set() and vsd_get().
+ */
+
+/*
+ * vsd_lock protects:
+ * vsd_nkeys - creation and deletion of vsd keys
+ * vsd_list - insertion and deletion of vsd_node in the vsd_list
+ * vsd_destructor - adding and removing destructors to the list
+ */
+static kmutex_t vsd_lock;
+static uint_t vsd_nkeys; /* size of destructor array */
+/* list of vsd_node's */
+static list_t *vsd_list = NULL;
+/* per-key destructor funcs */
+static void (**vsd_destructor)(void *);
+
+/*
* The following is the common set of actions needed to update the
* vopstats structure from a vnode op. Both VOPSTATS_UPDATE() and
* VOPSTATS_UPDATE_IO() do almost the same thing, except for the
@@ -859,8 +892,7 @@ top:
if (error =
vn_createat(pnamep, seg, &vattr, excl, mode, &vp, crwhy,
- (filemode & ~(FTRUNC|FEXCL)),
- umask, startvp))
+ (filemode & ~(FTRUNC|FEXCL)), umask, startvp))
return (error);
} else {
/*
@@ -2027,6 +2059,7 @@ vn_cache_constructor(void *buf, void *cdrarg, int kmflags)
vp->v_femhead = NULL; /* Must be done before vn_reinit() */
vp->v_path = NULL;
vp->v_mpssdata = NULL;
+ vp->v_vsd = NULL;
vp->v_fopdata = NULL;
return (0);
@@ -2099,6 +2132,7 @@ vn_recycle(vnode_t *vp)
free_fopdata(vp);
}
vp->v_mpssdata = NULL;
+ vsd_free(vp);
}
/*
@@ -2184,6 +2218,7 @@ vn_free(vnode_t *vp)
free_fopdata(vp);
}
vp->v_mpssdata = NULL;
+ vsd_free(vp);
kmem_cache_free(vn_cache, vp);
}
@@ -3647,3 +3682,262 @@ fop_vnevent(vnode_t *vp, vnevent_t vnevent, vnode_t *dvp, char *fnm)
VOPSTATS_UPDATE(vp, vnevent);
return (err);
}
+
+/*
+ * Default destructor
+ * Needed because NULL destructor means that the key is unused
+ */
+/* ARGSUSED */
+void
+vsd_defaultdestructor(void *value)
+{}
+
+/*
+ * Create a key (index into per vnode array)
+ * Locks out vsd_create, vsd_destroy, and vsd_free
+ * May allocate memory with lock held
+ */
+void
+vsd_create(uint_t *keyp, void (*destructor)(void *))
+{
+ int i;
+ uint_t nkeys;
+
+ /*
+ * if key is allocated, do nothing
+ */
+ mutex_enter(&vsd_lock);
+ if (*keyp) {
+ mutex_exit(&vsd_lock);
+ return;
+ }
+ /*
+ * find an unused key
+ */
+ if (destructor == NULL)
+ destructor = vsd_defaultdestructor;
+
+ for (i = 0; i < vsd_nkeys; ++i)
+ if (vsd_destructor[i] == NULL)
+ break;
+
+ /*
+ * if no unused keys, increase the size of the destructor array
+ */
+ if (i == vsd_nkeys) {
+ if ((nkeys = (vsd_nkeys << 1)) == 0)
+ nkeys = 1;
+ vsd_destructor =
+ (void (**)(void *))vsd_realloc((void *)vsd_destructor,
+ (size_t)(vsd_nkeys * sizeof (void (*)(void *))),
+ (size_t)(nkeys * sizeof (void (*)(void *))));
+ vsd_nkeys = nkeys;
+ }
+
+ /*
+ * allocate the next available unused key
+ */
+ vsd_destructor[i] = destructor;
+ *keyp = i + 1;
+
+ /* create vsd_list, if it doesn't exist */
+ if (vsd_list == NULL) {
+ vsd_list = kmem_alloc(sizeof (list_t), KM_SLEEP);
+ list_create(vsd_list, sizeof (struct vsd_node),
+ offsetof(struct vsd_node, vs_nodes));
+ }
+
+ mutex_exit(&vsd_lock);
+}
+
+/*
+ * Destroy a key
+ *
+ * Assumes that the caller is preventing vsd_set and vsd_get
+ * Locks out vsd_create, vsd_destroy, and vsd_free
+ * May free memory with lock held
+ */
+void
+vsd_destroy(uint_t *keyp)
+{
+ uint_t key;
+ struct vsd_node *vsd;
+
+ /*
+ * protect the key namespace and our destructor lists
+ */
+ mutex_enter(&vsd_lock);
+ key = *keyp;
+ *keyp = 0;
+
+ ASSERT(key <= vsd_nkeys);
+
+ /*
+ * if the key is valid
+ */
+ if (key != 0) {
+ uint_t k = key - 1;
+ /*
+ * for every vnode with VSD, call key's destructor
+ */
+ for (vsd = list_head(vsd_list); vsd != NULL;
+ vsd = list_next(vsd_list, vsd)) {
+ /*
+ * no VSD for key in this vnode
+ */
+ if (key > vsd->vs_nkeys)
+ continue;
+ /*
+ * call destructor for key
+ */
+ if (vsd->vs_value[k] && vsd_destructor[k])
+ (*vsd_destructor[k])(vsd->vs_value[k]);
+ /*
+ * reset value for key
+ */
+ vsd->vs_value[k] = NULL;
+ }
+ /*
+ * actually free the key (NULL destructor == unused)
+ */
+ vsd_destructor[k] = NULL;
+ }
+
+ mutex_exit(&vsd_lock);
+}
+
+/*
+ * Quickly return the per vnode value that was stored with the specified key
+ * Assumes the caller is protecting key from vsd_create and vsd_destroy
+ * Assumes the caller is holding v_lock to protect the vsd.
+ */
+void *
+vsd_get(vnode_t *vp, uint_t key)
+{
+ struct vsd_node *vsd;
+
+ /*
+ * The caller needs to pass a valid vnode.
+ */
+ ASSERT(vp != NULL);
+ if (vp == NULL)
+ return (NULL);
+
+ vsd = vp->v_vsd;
+
+ if (key && vsd != NULL && key <= vsd->vs_nkeys)
+ return (vsd->vs_value[key - 1]);
+ return (NULL);
+}
+
+/*
+ * Set a per vnode value indexed with the specified key
+ * Assumes the caller is holding v_lock to protect the vsd.
+ */
+int
+vsd_set(vnode_t *vp, uint_t key, void *value)
+{
+ struct vsd_node *vsd = vp->v_vsd;
+
+ if (key == 0)
+ return (EINVAL);
+ if (vsd == NULL)
+ vsd = vp->v_vsd = kmem_zalloc(sizeof (*vsd), KM_SLEEP);
+
+ /*
+ * If the vsd was just allocated, vs_nkeys will be 0, so the following
+ * code won't happen and we will continue down and allocate space for
+ * the vs_value array.
+ * If the caller is replacing one value with another, then it is up
+ * to the caller to free/rele/destroy the previous value (if needed).
+ */
+ if (key <= vsd->vs_nkeys) {
+ vsd->vs_value[key - 1] = value;
+ return (0);
+ }
+
+ ASSERT(key <= vsd_nkeys);
+
+ if (vsd->vs_nkeys == 0) {
+ mutex_enter(&vsd_lock); /* lock out vsd_destroy() */
+ /*
+ * Link onto list of all VSD nodes.
+ */
+ list_insert_head(vsd_list, vsd);
+ mutex_exit(&vsd_lock);
+ }
+
+ /*
+ * Allocate vnode local storage and set the value for key
+ */
+ vsd->vs_value = vsd_realloc(vsd->vs_value,
+ vsd->vs_nkeys * sizeof (void *),
+ key * sizeof (void *));
+ vsd->vs_nkeys = key;
+ vsd->vs_value[key - 1] = value;
+
+ return (0);
+}
+
+/*
+ * Called from vn_free() to run the destructor function for each vsd
+ * Locks out vsd_create and vsd_destroy
+ * Assumes that the destructor *DOES NOT* use vsd
+ */
+void
+vsd_free(vnode_t *vp)
+{
+ int i;
+ struct vsd_node *vsd = vp->v_vsd;
+
+ if (vsd == NULL)
+ return;
+
+ if (vsd->vs_nkeys == 0) {
+ kmem_free(vsd, sizeof (*vsd));
+ vp->v_vsd = NULL;
+ return;
+ }
+
+ /*
+ * lock out vsd_create and vsd_destroy, call
+ * the destructor, and mark the value as destroyed.
+ */
+ mutex_enter(&vsd_lock);
+
+ for (i = 0; i < vsd->vs_nkeys; i++) {
+ if (vsd->vs_value[i] && vsd_destructor[i])
+ (*vsd_destructor[i])(vsd->vs_value[i]);
+ vsd->vs_value[i] = NULL;
+ }
+
+ /*
+ * remove from linked list of VSD nodes
+ */
+ list_remove(vsd_list, vsd);
+
+ mutex_exit(&vsd_lock);
+
+ /*
+ * free up the VSD
+ */
+ kmem_free(vsd->vs_value, vsd->vs_nkeys * sizeof (void *));
+ kmem_free(vsd, sizeof (struct vsd_node));
+ vp->v_vsd = NULL;
+}
+
+/*
+ * realloc
+ */
+static void *
+vsd_realloc(void *old, size_t osize, size_t nsize)
+{
+ void *new;
+
+ new = kmem_zalloc(nsize, KM_SLEEP);
+ if (old) {
+ bcopy(old, new, osize);
+ kmem_free(old, osize);
+ }
+ return (new);
+}
diff --git a/usr/src/uts/common/sys/vnode.h b/usr/src/uts/common/sys/vnode.h
index 8eaf4b7fc9..3d54125d84 100644
--- a/usr/src/uts/common/sys/vnode.h
+++ b/usr/src/uts/common/sys/vnode.h
@@ -51,6 +51,7 @@
#include <vm/seg_enum.h>
#include <sys/kstat.h>
#include <sys/kmem.h>
+#include <sys/list.h>
#ifdef _KERNEL
#include <sys/buf.h>
#endif /* _KERNEL */
@@ -169,6 +170,16 @@ typedef enum vtype {
} vtype_t;
/*
+ * VSD - Vnode Specific Data
+ * Used to associate additional private data with a vnode.
+ */
+struct vsd_node {
+ list_node_t vs_nodes; /* list of all VSD nodes */
+ uint_t vs_nkeys; /* entries in value array */
+ void **vs_value; /* array of value/key */
+};
+
+/*
* Many of the fields in the vnode are read-only once they are initialized
* at vnode creation time. Other fields are protected by locks.
*
@@ -182,6 +193,7 @@ typedef enum vtype {
* v_count
* v_shrlocks
* v_path
+ * v_vsd
*
* A special lock (implemented by vn_vfswlock in vnode.c) protects:
* v_vfsmountedhere
@@ -249,6 +261,7 @@ typedef struct vnode {
struct vnode *v_msprev; /* list of vnodes on an mset */
krwlock_t v_mslock; /* protects v_mset */
void *v_fopdata; /* list of file ops event watches */
+ struct vsd_node *v_vsd; /* vnode specific data */
} vnode_t;
#define IS_DEVVP(vp) \
@@ -924,6 +937,13 @@ void vnevent_rename_dest_dir(vnode_t *);
void vnevent_mountedover(vnode_t *);
int vnevent_support(vnode_t *);
+/* Vnode specific data */
+void vsd_create(uint_t *, void (*)(void *));
+void vsd_destroy(uint_t *);
+void *vsd_get(vnode_t *, uint_t);
+int vsd_set(vnode_t *, uint_t, void *);
+void vsd_free(vnode_t *);
+
/* Context identification */
u_longlong_t fs_new_caller_id();