fs/9p: Clean-up get_protocol_version() to use strcmp

Signed-off-by: Prem Karat <prem.karat@linux.vnet.ibm.com>
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
This commit is contained in:
Prem Karat
2011-05-06 18:35:32 +05:30
committed by Eric Van Hensbergen
parent a2dd43bb0d
commit 4d63055fa9
4 changed files with 39 additions and 20 deletions

View File

@@ -72,23 +72,22 @@ inline int p9_is_proto_dotu(struct p9_client *clnt)
EXPORT_SYMBOL(p9_is_proto_dotu);
/* Interpret mount option for protocol version */
static int get_protocol_version(const substring_t *name)
static int get_protocol_version(char *s)
{
int version = -EINVAL;
if (!strncmp("9p2000", name->from, name->to-name->from)) {
if (!strcmp(s, "9p2000")) {
version = p9_proto_legacy;
P9_DPRINTK(P9_DEBUG_9P, "Protocol version: Legacy\n");
} else if (!strncmp("9p2000.u", name->from, name->to-name->from)) {
} else if (!strcmp(s, "9p2000.u")) {
version = p9_proto_2000u;
P9_DPRINTK(P9_DEBUG_9P, "Protocol version: 9P2000.u\n");
} else if (!strncmp("9p2000.L", name->from, name->to-name->from)) {
} else if (!strcmp(s, "9p2000.L")) {
version = p9_proto_2000L;
P9_DPRINTK(P9_DEBUG_9P, "Protocol version: 9P2000.L\n");
} else {
P9_DPRINTK(P9_DEBUG_ERROR, "Unknown protocol version %s. ",
name->from);
}
} else
printk(KERN_INFO "9p: Unknown protocol version %s.\n", s);
return version;
}
@@ -106,6 +105,7 @@ static int parse_opts(char *opts, struct p9_client *clnt)
char *p;
substring_t args[MAX_OPT_ARGS];
int option;
char *s;
int ret = 0;
clnt->proto_version = p9_proto_2000u;
@@ -141,22 +141,41 @@ static int parse_opts(char *opts, struct p9_client *clnt)
clnt->msize = option;
break;
case Opt_trans:
clnt->trans_mod = v9fs_get_trans_by_name(&args[0]);
if(clnt->trans_mod == NULL) {
s = match_strdup(&args[0]);
if (!s) {
ret = -ENOMEM;
P9_DPRINTK(P9_DEBUG_ERROR,
"Could not find request transport: %s\n",
(char *) &args[0]);
"problem allocating copy of trans arg\n");
goto free_and_return;
}
clnt->trans_mod = v9fs_get_trans_by_name(s);
if (clnt->trans_mod == NULL) {
printk(KERN_INFO
"9p: Could not find "
"request transport: %s\n", s);
ret = -EINVAL;
kfree(s);
goto free_and_return;
}
kfree(s);
break;
case Opt_legacy:
clnt->proto_version = p9_proto_legacy;
break;
case Opt_version:
ret = get_protocol_version(&args[0]);
if (ret == -EINVAL)
s = match_strdup(&args[0]);
if (!s) {
ret = -ENOMEM;
P9_DPRINTK(P9_DEBUG_ERROR,
"problem allocating copy of version arg\n");
goto free_and_return;
}
ret = get_protocol_version(s);
if (ret == -EINVAL) {
kfree(s);
goto free_and_return;
}
kfree(s);
clnt->proto_version = ret;
break;
default: