[PATCH 2/5] [net/9p] Pass p9_client structure to pdu perpartion routines.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <jvrao@xxxxxxxxxxxxxxxxxx>
Signed-off-by: Badari Pulavarty <pbadari@xxxxxxxxxx>
---
 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

--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]
  Powered by Linux