Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 116253
b: refs/heads/master
c: 6936bf6
h: refs/heads/master
i:
  116251: 3817cda
v: v3
  • Loading branch information
Eric Van Hensbergen committed Oct 17, 2008
1 parent de53d7e commit eabe3be
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 31 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 06b55b464ee5b305aca75cb7d9424b184bf07f68
refs/heads/master: 6936bf60d2c407449c09e3f28ec0301e1f937106
74 changes: 44 additions & 30 deletions trunk/net/9p/client.c
Original file line number Diff line number Diff line change
Expand Up @@ -587,16 +587,56 @@ static void p9_fid_destroy(struct p9_fid *fid)
kfree(fid);
}

struct p9_client *p9_client_create(const char *dev_name, char *options)
static int p9_client_version(struct p9_client *clnt)
{
int err, n;
struct p9_client *clnt;
int err = 0;
struct p9_fcall *tc, *rc;
struct p9_str *version;

P9_DPRINTK(P9_DEBUG_9P, "%p\n", clnt);
err = 0;
tc = NULL;
rc = NULL;

tc = p9_create_tversion(clnt->msize,
clnt->dotu ? "9P2000.u" : "9P2000");
if (IS_ERR(tc)) {
err = PTR_ERR(tc);
tc = NULL;
goto error;
}

err = p9_client_rpc(clnt, tc, &rc);
if (err)
goto error;

version = &rc->params.rversion.version;
if (version->len == 8 && !memcmp(version->str, "9P2000.u", 8))
clnt->dotu = 1;
else if (version->len == 6 && !memcmp(version->str, "9P2000", 6))
clnt->dotu = 0;
else {
err = -EREMOTEIO;
goto error;
}

if (rc->params.rversion.msize < clnt->msize)
clnt->msize = rc->params.rversion.msize;

error:
kfree(tc);
kfree(rc);

return err;
}
EXPORT_SYMBOL(p9_client_auth);

struct p9_client *p9_client_create(const char *dev_name, char *options)
{
int err;
struct p9_client *clnt;

err = 0;
clnt = kmalloc(sizeof(struct p9_client), GFP_KERNEL);
if (!clnt)
return ERR_PTR(-ENOMEM);
Expand Down Expand Up @@ -628,46 +668,20 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
P9_DPRINTK(P9_DEBUG_9P, "clnt %p trans %p msize %d dotu %d\n",
clnt, clnt->trans_mod, clnt->msize, clnt->dotu);


err = clnt->trans_mod->create(clnt, dev_name, options);
if (err)
goto error;

if ((clnt->msize+P9_IOHDRSZ) > clnt->trans_mod->maxsize)
clnt->msize = clnt->trans_mod->maxsize-P9_IOHDRSZ;

tc = p9_create_tversion(clnt->msize, clnt->dotu?"9P2000.u":"9P2000");
if (IS_ERR(tc)) {
err = PTR_ERR(tc);
tc = NULL;
goto error;
}

err = p9_client_rpc(clnt, tc, &rc);
err = p9_client_version(clnt);
if (err)
goto error;

version = &rc->params.rversion.version;
if (version->len == 8 && !memcmp(version->str, "9P2000.u", 8))
clnt->dotu = 1;
else if (version->len == 6 && !memcmp(version->str, "9P2000", 6))
clnt->dotu = 0;
else {
err = -EREMOTEIO;
goto error;
}

n = rc->params.rversion.msize;
if (n < clnt->msize)
clnt->msize = n;

kfree(tc);
kfree(rc);
return clnt;

error:
kfree(tc);
kfree(rc);
p9_client_destroy(clnt);
return ERR_PTR(err);
}
Expand Down

0 comments on commit eabe3be

Please sign in to comment.