aboutsummaryrefslogtreecommitdiffstats
path: root/net/9p/client.c
diff options
context:
space:
mode:
authorEric Van Hensbergen <ericvh@ericvh-desktop.austin.ibm.com>2008-10-13 19:45:25 -0400
committerEric Van Hensbergen <ericvh@gmail.com>2008-10-17 12:04:41 -0400
commit8b81ef589ad1483dd977ef47fe00d4ce4d91a0ab (patch)
tree380a19ca0f55fefc60c4a45771f5273c80539c07 /net/9p/client.c
parent992b3f1dbeec401e19a80bdb8c81e5df5381f4c5 (diff)
9p: consolidate transport structure
Right now there is a transport module structure which provides per-transport type functions and data and a transport structure which contains per-instance public data as well as function pointers to instance specific functions. This patch moves public transport visible instance data to the client structure (which in some cases had duplicate data) and consolidates the functions into the transport module structure. Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'net/9p/client.c')
-rw-r--r--net/9p/client.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/net/9p/client.c b/net/9p/client.c
index e053e06028a5..f1a52a7ed724 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -33,8 +33,8 @@
33#include <linux/uaccess.h> 33#include <linux/uaccess.h>
34#include <net/9p/9p.h> 34#include <net/9p/9p.h>
35#include <linux/parser.h> 35#include <linux/parser.h>
36#include <net/9p/transport.h>
37#include <net/9p/client.h> 36#include <net/9p/client.h>
37#include <net/9p/transport.h>
38 38
39static struct p9_fid *p9_fid_create(struct p9_client *clnt); 39static struct p9_fid *p9_fid_create(struct p9_client *clnt);
40static void p9_fid_destroy(struct p9_fid *fid); 40static void p9_fid_destroy(struct p9_fid *fid);
@@ -136,7 +136,7 @@ int
136p9_client_rpc(struct p9_client *c, struct p9_fcall *tc, 136p9_client_rpc(struct p9_client *c, struct p9_fcall *tc,
137 struct p9_fcall **rc) 137 struct p9_fcall **rc)
138{ 138{
139 return c->trans->rpc(c->trans, tc, rc); 139 return c->trans_mod->rpc(c, tc, rc);
140} 140}
141 141
142struct p9_client *p9_client_create(const char *dev_name, char *options) 142struct p9_client *p9_client_create(const char *dev_name, char *options)
@@ -179,13 +179,9 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
179 clnt, clnt->trans_mod, clnt->msize, clnt->dotu); 179 clnt, clnt->trans_mod, clnt->msize, clnt->dotu);
180 180
181 181
182 clnt->trans = clnt->trans_mod->create(dev_name, options, clnt->msize, 182 err = clnt->trans_mod->create(clnt, dev_name, options);
183 clnt->dotu); 183 if (err)
184 if (IS_ERR(clnt->trans)) {
185 err = PTR_ERR(clnt->trans);
186 clnt->trans = NULL;
187 goto error; 184 goto error;
188 }
189 185
190 if ((clnt->msize+P9_IOHDRSZ) > clnt->trans_mod->maxsize) 186 if ((clnt->msize+P9_IOHDRSZ) > clnt->trans_mod->maxsize)
191 clnt->msize = clnt->trans_mod->maxsize-P9_IOHDRSZ; 187 clnt->msize = clnt->trans_mod->maxsize-P9_IOHDRSZ;
@@ -233,11 +229,8 @@ void p9_client_destroy(struct p9_client *clnt)
233 229
234 P9_DPRINTK(P9_DEBUG_9P, "clnt %p\n", clnt); 230 P9_DPRINTK(P9_DEBUG_9P, "clnt %p\n", clnt);
235 231
236 if (clnt->trans) { 232 if (clnt->trans_mod)
237 clnt->trans->close(clnt->trans); 233 clnt->trans_mod->close(clnt);
238 kfree(clnt->trans);
239 clnt->trans = NULL;
240 }
241 234
242 v9fs_put_trans(clnt->trans_mod); 235 v9fs_put_trans(clnt->trans_mod);
243 236
@@ -254,7 +247,7 @@ EXPORT_SYMBOL(p9_client_destroy);
254void p9_client_disconnect(struct p9_client *clnt) 247void p9_client_disconnect(struct p9_client *clnt)
255{ 248{
256 P9_DPRINTK(P9_DEBUG_9P, "clnt %p\n", clnt); 249 P9_DPRINTK(P9_DEBUG_9P, "clnt %p\n", clnt);
257 clnt->trans->status = Disconnected; 250 clnt->status = Disconnected;
258} 251}
259EXPORT_SYMBOL(p9_client_disconnect); 252EXPORT_SYMBOL(p9_client_disconnect);
260 253