From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Venkateswararao Jujjuri (JV)" Subject: [PATCH 2/5] [net/9p] Pass p9_client structure to pdu perpartion routines. Date: Tue, 17 Aug 2010 10:27:22 -0700 Message-ID: <1282066045-3945-3-git-send-email-jvrao@linux.vnet.ibm.com> References: <1282066045-3945-1-git-send-email-jvrao@linux.vnet.ibm.com> Cc: linux-fsdevel@vger.kernel.org, "Venkateswararao Jujjuri (JV)" , Badari Pulavarty To: v9fs-developer@lists.sourceforge.net Return-path: Received: from e37.co.us.ibm.com ([32.97.110.158]:40500 "EHLO e37.co.us.ibm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757944Ab0HQRTq (ORCPT ); Tue, 17 Aug 2010 13:19:46 -0400 Received: from d03relay01.boulder.ibm.com (d03relay01.boulder.ibm.com [9.17.195.226]) by e37.co.us.ibm.com (8.14.4/8.13.1) with ESMTP id o7HHHmqr027553 for ; Tue, 17 Aug 2010 11:17:48 -0600 Received: from d03av02.boulder.ibm.com (d03av02.boulder.ibm.com [9.17.195.168]) by d03relay01.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o7HHJdj0077802 for ; Tue, 17 Aug 2010 11:19:40 -0600 Received: from d03av02.boulder.ibm.com (loopback [127.0.0.1]) by d03av02.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o7HHJZA4002193 for ; Tue, 17 Aug 2010 11:19:37 -0600 In-Reply-To: <1282066045-3945-1-git-send-email-jvrao@linux.vnet.ibm.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: This patch passes struct p9_client to p9pdu_vwritef(), p9pdu_prepare() p9pdu_finalize(), p9pdu_writef() in preparation for adding zero copy support for virtio transport. Signed-off-by: Venkateswararao Jujjuri Signed-off-by: Badari Pulavarty --- net/9p/client.c | 6 +++--- net/9p/protocol.c | 49 ++++++++++++++++++++++--------------------------- net/9p/protocol.h | 7 ++++--- 3 files changed, 29 insertions(+), 33 deletions(-) diff --git a/net/9p/client.c b/net/9p/client.c index dc6f2f2..29bbbbd 100644 --- a/net/9p/client.c +++ b/net/9p/client.c @@ -562,11 +562,11 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...) return req; /* marshall the data */ - p9pdu_prepare(req->tc, tag, type); + p9pdu_prepare(c, req->tc, tag, type); va_start(ap, fmt); - err = p9pdu_vwritef(req->tc, c->proto_version, fmt, ap); + err = p9pdu_vwritef(req->tc, c, fmt, ap); va_end(ap); - p9pdu_finalize(req->tc); + p9pdu_finalize(c, req->tc); err = c->trans_mod->request(c, req); if (err < 0) { diff --git a/net/9p/protocol.c b/net/9p/protocol.c index 3acd3af..ca63aff 100644 --- a/net/9p/protocol.c +++ b/net/9p/protocol.c @@ -53,7 +53,7 @@ #endif static int -p9pdu_writef(struct p9_fcall *pdu, int proto_version, const char *fmt, ...); +p9pdu_writef(struct p9_fcall *pdu, struct p9_client *c, const char *fmt, ...); #ifdef CONFIG_NET_9P_DEBUG void @@ -386,11 +386,12 @@ p9pdu_vreadf(struct p9_fcall *pdu, int proto_version, const char *fmt, } int -p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, +p9pdu_vwritef(struct p9_fcall *pdu, struct p9_client *c, const char *fmt, va_list ap) { const char *ptr; int errcode = 0; + int proto_version = c->proto_version; for (ptr = fmt; *ptr; ptr++) { switch (*ptr) { @@ -424,8 +425,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, if (sptr) len = MIN(strlen(sptr), USHRT_MAX); - errcode = p9pdu_writef(pdu, proto_version, - "w", len); + errcode = p9pdu_writef(pdu, c, "w", len); if (!errcode && pdu_write(pdu, sptr, len)) errcode = -EFAULT; } @@ -434,7 +434,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, const struct p9_qid *qid = va_arg(ap, const struct p9_qid *); errcode = - p9pdu_writef(pdu, proto_version, "bdq", + p9pdu_writef(pdu, c, "bdq", qid->type, qid->version, qid->path); } break; @@ -442,7 +442,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, const struct p9_wstat *stbuf = va_arg(ap, const struct p9_wstat *); errcode = - p9pdu_writef(pdu, proto_version, + p9pdu_writef(pdu, c, "wwdQdddqssss?sddd", stbuf->size, stbuf->type, stbuf->dev, &stbuf->qid, @@ -457,8 +457,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, int32_t count = va_arg(ap, int32_t); const void *data = va_arg(ap, const void *); - errcode = p9pdu_writef(pdu, proto_version, "d", - count); + errcode = p9pdu_writef(pdu, c, "d", count); if (!errcode && pdu_write(pdu, data, count)) errcode = -EFAULT; } @@ -467,8 +466,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, int32_t count = va_arg(ap, int32_t); const char __user *udata = va_arg(ap, const void __user *); - errcode = p9pdu_writef(pdu, proto_version, "d", - count); + errcode = p9pdu_writef(pdu, c, "d", count); if (!errcode && pdu_write_u(pdu, udata, count)) errcode = -EFAULT; } @@ -477,17 +475,15 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, int16_t nwname = va_arg(ap, int); const char **wnames = va_arg(ap, const char **); - errcode = p9pdu_writef(pdu, proto_version, "w", - nwname); + errcode = p9pdu_writef(pdu, c, "w", nwname); if (!errcode) { int i; for (i = 0; i < nwname; i++) { errcode = p9pdu_writef(pdu, - proto_version, - "s", - wnames[i]); + c, "s", + wnames[i]); if (errcode) break; } @@ -499,17 +495,15 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, struct p9_qid *wqids = va_arg(ap, struct p9_qid *); - errcode = p9pdu_writef(pdu, proto_version, "w", - nwqid); + errcode = p9pdu_writef(pdu, c, "w", nwqid); if (!errcode) { int i; for (i = 0; i < nwqid; i++) { errcode = p9pdu_writef(pdu, - proto_version, - "Q", - &wqids[i]); + c, "Q", + &wqids[i]); if (errcode) break; } @@ -520,7 +514,7 @@ p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, struct p9_iattr_dotl *p9attr = va_arg(ap, struct p9_iattr_dotl *); - errcode = p9pdu_writef(pdu, proto_version, + errcode = p9pdu_writef(pdu, c, "ddddqqqqq", p9attr->valid, p9attr->mode, @@ -563,13 +557,13 @@ int p9pdu_readf(struct p9_fcall *pdu, int proto_version, const char *fmt, ...) } static int -p9pdu_writef(struct p9_fcall *pdu, int proto_version, const char *fmt, ...) +p9pdu_writef(struct p9_fcall *pdu, struct p9_client *c, const char *fmt, ...) { va_list ap; int ret; va_start(ap, fmt); - ret = p9pdu_vwritef(pdu, proto_version, fmt, ap); + ret = p9pdu_vwritef(pdu, c, fmt, ap); va_end(ap); return ret; @@ -595,18 +589,19 @@ int p9stat_read(char *buf, int len, struct p9_wstat *st, int proto_version) } EXPORT_SYMBOL(p9stat_read); -int p9pdu_prepare(struct p9_fcall *pdu, int16_t tag, int8_t type) +int p9pdu_prepare(struct p9_client *c, struct p9_fcall *pdu, int16_t tag, + int8_t type) { - return p9pdu_writef(pdu, 0, "dbw", 0, type, tag); + return p9pdu_writef(pdu, c, "dbw", 0, type, tag); } -int p9pdu_finalize(struct p9_fcall *pdu) +int p9pdu_finalize(struct p9_client *c, struct p9_fcall *pdu) { int size = pdu->size; int err; pdu->size = 0; - err = p9pdu_writef(pdu, 0, "d", size); + err = p9pdu_writef(pdu, c, "d", size); pdu->size = size; #ifdef CONFIG_NET_9P_DEBUG diff --git a/net/9p/protocol.h b/net/9p/protocol.h index 2431c0f..6d059a6 100644 --- a/net/9p/protocol.h +++ b/net/9p/protocol.h @@ -25,10 +25,11 @@ * */ -int p9pdu_vwritef(struct p9_fcall *pdu, int proto_version, const char *fmt, +int p9pdu_vwritef(struct p9_fcall *pdu, struct p9_client *c, const char *fmt, va_list ap); int p9pdu_readf(struct p9_fcall *pdu, int proto_version, const char *fmt, ...); -int p9pdu_prepare(struct p9_fcall *pdu, int16_t tag, int8_t type); -int p9pdu_finalize(struct p9_fcall *pdu); +int p9pdu_prepare(struct p9_client *c, struct p9_fcall *pdu, int16_t tag, + int8_t type); +int p9pdu_finalize(struct p9_client *c, struct p9_fcall *pdu); void p9pdu_dump(int, struct p9_fcall *); void p9pdu_reset(struct p9_fcall *pdu); -- 1.6.5.2