示例#1
0
文件: xdr4.c 项目: 274914765/C
int
nlm4svc_encode_res(struct svc_rqst *rqstp, __be32 *p, struct nlm_res *resp)
{
    if (!(p = nlm4_encode_cookie(p, &resp->cookie)))
        return 0;
    *p++ = resp->status;
    return xdr_ressize_check(rqstp, p);
}
示例#2
0
文件: xdr4.c 项目: 274914765/C
static int
nlm4clt_encode_res(struct rpc_rqst *req, __be32 *p, struct nlm_res *resp)
{
    if (!(p = nlm4_encode_cookie(p, &resp->cookie)))
        return -EIO;
    *p++ = resp->status;
    req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
    return 0;
}
示例#3
0
文件: xdr4.c 项目: 274914765/C
int
nlm4svc_encode_shareres(struct svc_rqst *rqstp, __be32 *p, struct nlm_res *resp)
{
    if (!(p = nlm4_encode_cookie(p, &resp->cookie)))
        return 0;
    *p++ = resp->status;
    *p++ = xdr_zero;        /* sequence argument */
    return xdr_ressize_check(rqstp, p);
}
示例#4
0
文件: xdr4.c 项目: 274914765/C
static int
nlm4clt_encode_unlockargs(struct rpc_rqst *req, __be32 *p, nlm_args *argp)
{
    struct nlm_lock    *lock = &argp->lock;

    if (!(p = nlm4_encode_cookie(p, &argp->cookie)))
        return -EIO;
    if (!(p = nlm4_encode_lock(p, lock)))
        return -EIO;
    req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
    return 0;
}
示例#5
0
文件: xdr4.c 项目: 274914765/C
static int
nlm4clt_encode_testargs(struct rpc_rqst *req, __be32 *p, nlm_args *argp)
{
    struct nlm_lock    *lock = &argp->lock;

    if (!(p = nlm4_encode_cookie(p, &argp->cookie)))
        return -EIO;
    *p++ = (lock->fl.fl_type == F_WRLCK)? xdr_one : xdr_zero;
    if (!(p = nlm4_encode_lock(p, lock)))
        return -EIO;
    req->rq_slen = xdr_adjust_iovec(req->rq_svec, p);
    return 0;
}
示例#6
0
文件: xdr4.c 项目: mdamt/linux
/*
 * Encode result of a TEST/TEST_MSG call
 */
static __be32 *
nlm4_encode_testres(__be32 *p, struct nlm_res *resp)
{
	s64		start, len;

	dprintk("xdr: before encode_testres (p %p resp %p)\n", p, resp);
	if (!(p = nlm4_encode_cookie(p, &resp->cookie)))
		return NULL;
	*p++ = resp->status;

	if (resp->status == nlm_lck_denied) {
		struct file_lock	*fl = &resp->lock.fl;

		*p++ = (fl->fl_type == F_RDLCK)? xdr_zero : xdr_one;
		*p++ = htonl(resp->lock.svid);

		/* Encode owner handle. */
		if (!(p = xdr_encode_netobj(p, &resp->lock.oh)))
			return NULL;

		start = loff_t_to_s64(fl->fl_start);
		if (fl->fl_end == OFFSET_MAX)
			len = 0;
		else
			len = loff_t_to_s64(fl->fl_end - fl->fl_start + 1);
		
		p = xdr_encode_hyper(p, start);
		p = xdr_encode_hyper(p, len);
		dprintk("xdr: encode_testres (status %u pid %d type %d start %Ld end %Ld)\n",
			resp->status, (int)resp->lock.svid, fl->fl_type,
			(long long)fl->fl_start,  (long long)fl->fl_end);
	}

	dprintk("xdr: after encode_testres (p %p resp %p)\n", p, resp);
	return p;
}