p = xdr_reserve_space(&resp->xdr, nbytes); \
BUG_ON(!p); \
} while (0)
-#define ADJUST_ARGS() WARN_ON_ONCE(p != resp->xdr.p) \
/* Encode as an array of strings the string given with components
* separated @sep, escaped with esc_enter and esc_exit.
RESERVE_SPACE(sizeof(stateid_t));
WRITE32(sid->si_generation);
WRITEMEM(&sid->si_opaque, sizeof(stateid_opaque_t));
- ADJUST_ARGS();
}
static __be32
RESERVE_SPACE(8);
WRITE32(access->ac_supported);
WRITE32(access->ac_resp_access);
- ADJUST_ARGS();
}
return nfserr;
}
WRITE32(bcts->dir);
/* Sorry, we do not yet support RDMA over 4.1: */
WRITE32(0);
- ADJUST_ARGS();
}
return nfserr;
}
if (!nfserr) {
RESERVE_SPACE(NFS4_VERIFIER_SIZE);
WRITEMEM(commit->co_verf.data, NFS4_VERIFIER_SIZE);
- ADJUST_ARGS();
}
return nfserr;
}
WRITE32(2);
WRITE32(create->cr_bmval[0]);
WRITE32(create->cr_bmval[1]);
- ADJUST_ARGS();
}
return nfserr;
}
RESERVE_SPACE(len + 4);
WRITE32(len);
WRITEMEM(&fhp->fh_handle.fh_base, len);
- ADJUST_ARGS();
}
return nfserr;
}
WRITE64((u64)0); /* clientid */
WRITE32(0); /* length of owner name */
}
- ADJUST_ARGS();
}
static __be32
if (!nfserr) {
RESERVE_SPACE(20);
write_cinfo(&p, &link->li_cinfo);
- ADJUST_ARGS();
}
return nfserr;
}
WRITE32(open->op_bmval[0]);
WRITE32(open->op_bmval[1]);
WRITE32(open->op_delegate_type);
- ADJUST_ARGS();
switch (open->op_delegate_type) {
case NFS4_OPEN_DELEGATE_NONE:
WRITE32(0);
WRITE32(0);
WRITE32(0); /* XXX: is NULL principal ok? */
- ADJUST_ARGS();
break;
case NFS4_OPEN_DELEGATE_WRITE:
nfsd4_encode_stateid(resp, &open->op_delegate_stateid);
WRITE32(0);
WRITE32(0);
WRITE32(0); /* XXX: is NULL principal ok? */
- ADJUST_ARGS();
break;
case NFS4_OPEN_DELEGATE_NONE_EXT: /* 4.1 */
switch (open->op_why_no_deleg) {
RESERVE_SPACE(4);
WRITE32(open->op_why_no_deleg);
}
- ADJUST_ARGS();
break;
default:
BUG();
WRITE32(eof);
WRITE32(maxcount);
- ADJUST_ARGS();
resp->xdr.buf->head[0].iov_len = (char *)p
- (char *)resp->xdr.buf->head[0].iov_base;
resp->xdr.buf->page_len = maxcount;
WRITE32(0);
resp->xdr.buf->tail[0].iov_base += maxcount&3;
resp->xdr.buf->tail[0].iov_len = 4 - (maxcount&3);
- ADJUST_ARGS();
}
return 0;
}
}
WRITE32(maxcount);
- ADJUST_ARGS();
resp->xdr.buf->head[0].iov_len = (char *)p
- (char *)resp->xdr.buf->head[0].iov_base;
resp->xdr.buf->page_len = maxcount;
WRITE32(0);
resp->xdr.buf->tail[0].iov_base += maxcount&3;
resp->xdr.buf->tail[0].iov_len = 4 - (maxcount&3);
- ADJUST_ARGS();
}
return 0;
}
/* XXX: Following NFSv3, we ignore the READDIR verifier for now. */
WRITE32(0);
WRITE32(0);
- ADJUST_ARGS();
resp->xdr.buf->head[0].iov_len = ((char *)resp->xdr.p)
- (char *)resp->xdr.buf->head[0].iov_base;
tailbase = p;
if (!nfserr) {
RESERVE_SPACE(20);
write_cinfo(&p, &remove->rm_cinfo);
- ADJUST_ARGS();
}
return nfserr;
}
RESERVE_SPACE(40);
write_cinfo(&p, &rename->rn_sinfo);
write_cinfo(&p, &rename->rn_tinfo);
- ADJUST_ARGS();
}
return nfserr;
}
supported = 0;
RESERVE_SPACE(4);
flavorsp = p++; /* to be backfilled later */
- ADJUST_ARGS();
for (i = 0; i < nflavs; i++) {
rpc_authflavor_t pf = flavs[i].pseudoflavor;
WRITEMEM(info.oid.data, info.oid.len);
WRITE32(info.qop);
WRITE32(info.service);
- ADJUST_ARGS();
} else if (pf < RPC_AUTH_MAXFLAVOR) {
supported++;
RESERVE_SPACE(4);
WRITE32(pf);
- ADJUST_ARGS();
} else {
if (report)
pr_warn("NFS: SECINFO: security flavor %u "
WRITE32(setattr->sa_bmval[1]);
WRITE32(setattr->sa_bmval[2]);
}
- ADJUST_ARGS();
return nfserr;
}
RESERVE_SPACE(8 + NFS4_VERIFIER_SIZE);
WRITEMEM(&scd->se_clientid, 8);
WRITEMEM(&scd->se_confirm, NFS4_VERIFIER_SIZE);
- ADJUST_ARGS();
}
else if (nfserr == nfserr_clid_inuse) {
RESERVE_SPACE(8);
WRITE32(0);
WRITE32(0);
- ADJUST_ARGS();
}
return nfserr;
}
WRITE32(write->wr_bytes_written);
WRITE32(write->wr_how_written);
WRITEMEM(write->wr_verifier.data, NFS4_VERIFIER_SIZE);
- ADJUST_ARGS();
}
return nfserr;
}
WRITE32(exid->flags);
WRITE32(exid->spa_how);
- ADJUST_ARGS();
switch (exid->spa_how) {
case SP4_NONE:
/* empty spo_must_allow bitmap: */
WRITE32(0);
- ADJUST_ARGS();
break;
default:
WARN_ON_ONCE(1);
/* Implementation id */
WRITE32(0); /* zero length nfs_impl_id4 array */
- ADJUST_ARGS();
return 0;
}
WRITEMEM(sess->sessionid.data, NFS4_MAX_SESSIONID_LEN);
WRITE32(sess->seqid);
WRITE32(sess->flags);
- ADJUST_ARGS();
RESERVE_SPACE(28);
WRITE32(0); /* headerpadsz */
WRITE32(sess->fore_channel.maxops);
WRITE32(sess->fore_channel.maxreqs);
WRITE32(sess->fore_channel.nr_rdma_attrs);
- ADJUST_ARGS();
if (sess->fore_channel.nr_rdma_attrs) {
RESERVE_SPACE(4);
WRITE32(sess->fore_channel.rdma_attrs);
- ADJUST_ARGS();
}
RESERVE_SPACE(28);
WRITE32(sess->back_channel.maxops);
WRITE32(sess->back_channel.maxreqs);
WRITE32(sess->back_channel.nr_rdma_attrs);
- ADJUST_ARGS();
if (sess->back_channel.nr_rdma_attrs) {
RESERVE_SPACE(4);
WRITE32(sess->back_channel.rdma_attrs);
- ADJUST_ARGS();
}
return 0;
}
WRITE32(seq->maxslots - 1); /* sr_target_highest_slotid */
WRITE32(seq->status_flags);
- ADJUST_ARGS();
resp->cstate.datap = p; /* DRC cache data pointer */
return 0;
}
*p++ = stateid->ts_id_status;
}
- ADJUST_ARGS();
return nfserr;
}
RESERVE_SPACE(8);
WRITE32(op->opnum);
statp = p++; /* to be backfilled at the end */
- ADJUST_ARGS();
if (op->opnum == OP_ILLEGAL)
goto status;
RESERVE_SPACE(8);
WRITE32(op->opnum);
*p++ = rp->rp_status; /* already xdr'ed */
- ADJUST_ARGS();
RESERVE_SPACE(rp->rp_buflen);
WRITEMEM(rp->rp_buf, rp->rp_buflen);
- ADJUST_ARGS();
}
int