@@ -6530,7 +6530,8 @@ static int rbd_add_parse_args(const char *buf,
pctx.opts->exclusive = RBD_EXCLUSIVE_DEFAULT;
pctx.opts->trim = RBD_TRIM_DEFAULT;
- ret = ceph_parse_mon_ips(mon_addrs, mon_addrs_size, pctx.copts, NULL);
+ ret = ceph_parse_mon_ips(mon_addrs, mon_addrs_size, pctx.copts, NULL,
+ CEPH_ADDR_PARSE_DEFAULT_DELIM);
if (ret)
goto out_err;
@@ -271,7 +271,8 @@ static int ceph_parse_source(struct fs_parameter *param, struct fs_context *fc)
dout("server path '%s'\n", fsopt->server_path);
ret = ceph_parse_mon_ips(param->string, dev_name_end - dev_name,
- pctx->copts, fc->log.log);
+ pctx->copts, fc->log.log,
+ CEPH_ADDR_PARSE_DEFAULT_DELIM);
if (ret)
return ret;
@@ -98,6 +98,8 @@ struct ceph_options {
#define CEPH_AUTH_NAME_DEFAULT "guest"
+#define CEPH_ADDR_PARSE_DEFAULT_DELIM ','
+
/* mount state */
enum {
CEPH_MOUNT_MOUNTING,
@@ -301,7 +303,7 @@ struct fs_parameter;
struct fc_log;
struct ceph_options *ceph_alloc_options(void);
int ceph_parse_mon_ips(const char *buf, size_t len, struct ceph_options *opt,
- struct fc_log *l);
+ struct fc_log *l, char delimiter);
int ceph_parse_param(struct fs_parameter *param, struct ceph_options *opt,
struct fc_log *l);
int ceph_print_client_options(struct seq_file *m, struct ceph_client *client,
@@ -532,7 +532,7 @@ extern const char *ceph_pr_addr(const struct ceph_entity_addr *addr);
extern int ceph_parse_ips(const char *c, const char *end,
struct ceph_entity_addr *addr,
- int max_count, int *count);
+ int max_count, int *count, char delimiter);
extern int ceph_msgr_init(void);
extern void ceph_msgr_exit(void);
@@ -422,14 +422,14 @@ static int get_secret(struct ceph_crypto_key *dst, const char *name,
}
int ceph_parse_mon_ips(const char *buf, size_t len, struct ceph_options *opt,
- struct fc_log *l)
+ struct fc_log *l, char delimiter)
{
struct p_log log = {.prefix = "libceph", .log = l};
int ret;
- /* ip1[:port1][,ip2[:port2]...] */
+ /* ip1[:port1][<delim>ip2[:port2]...] */
ret = ceph_parse_ips(buf, buf + len, opt->mon_addr, CEPH_MAX_MON,
- &opt->num_mon);
+ &opt->num_mon, delimiter);
if (ret) {
error_plog(&log, "Failed to parse monitor IPs: %d", ret);
return ret;
@@ -456,7 +456,7 @@ int ceph_parse_param(struct fs_parameter *param, struct ceph_options *opt,
err = ceph_parse_ips(param->string,
param->string + param->size,
&opt->my_addr,
- 1, NULL);
+ 1, NULL, CEPH_ADDR_PARSE_DEFAULT_DELIM);
if (err) {
error_plog(&log, "Failed to parse ip: %d", err);
return err;
@@ -1267,7 +1267,7 @@ static int ceph_parse_server_name(const char *name, size_t namelen,
*/
int ceph_parse_ips(const char *c, const char *end,
struct ceph_entity_addr *addr,
- int max_count, int *count)
+ int max_count, int *count, char delimiter)
{
int i, ret = -EINVAL;
const char *p = c;
@@ -1276,7 +1276,7 @@ int ceph_parse_ips(const char *c, const char *end,
for (i = 0; i < max_count; i++) {
const char *ipend;
int port;
- char delim = ',';
+ char delim = delimiter;
if (*p == '[') {
delim = ']';
@@ -1326,11 +1326,11 @@ int ceph_parse_ips(const char *c, const char *end,
addr[i].type = CEPH_ENTITY_ADDR_TYPE_LEGACY;
addr[i].nonce = 0;
- dout("parse_ips got %s\n", ceph_pr_addr(&addr[i]));
+ dout("%s got %s\n", __func__, ceph_pr_addr(&addr[i]));
if (p == end)
break;
- if (*p != ',')
+ if (*p != delimiter)
goto bad;
p++;
}
... and remove hardcoded function name in ceph_parse_ips(). Signed-off-by: Venky Shankar <vshankar@redhat.com> --- drivers/block/rbd.c | 3 ++- fs/ceph/super.c | 3 ++- include/linux/ceph/libceph.h | 4 +++- include/linux/ceph/messenger.h | 2 +- net/ceph/ceph_common.c | 8 ++++---- net/ceph/messenger.c | 8 ++++---- 6 files changed, 16 insertions(+), 12 deletions(-)