diff options
Diffstat (limited to 'net/ceph/ceph_common.c')
-rw-r--r-- | net/ceph/ceph_common.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c index 464e88599b9d..108533859a53 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c | |||
@@ -230,6 +230,7 @@ enum { | |||
230 | Opt_osdkeepalivetimeout, | 230 | Opt_osdkeepalivetimeout, |
231 | Opt_mount_timeout, | 231 | Opt_mount_timeout, |
232 | Opt_osd_idle_ttl, | 232 | Opt_osd_idle_ttl, |
233 | Opt_osd_request_timeout, | ||
233 | Opt_last_int, | 234 | Opt_last_int, |
234 | /* int args above */ | 235 | /* int args above */ |
235 | Opt_fsid, | 236 | Opt_fsid, |
@@ -256,6 +257,7 @@ static match_table_t opt_tokens = { | |||
256 | {Opt_osdkeepalivetimeout, "osdkeepalive=%d"}, | 257 | {Opt_osdkeepalivetimeout, "osdkeepalive=%d"}, |
257 | {Opt_mount_timeout, "mount_timeout=%d"}, | 258 | {Opt_mount_timeout, "mount_timeout=%d"}, |
258 | {Opt_osd_idle_ttl, "osd_idle_ttl=%d"}, | 259 | {Opt_osd_idle_ttl, "osd_idle_ttl=%d"}, |
260 | {Opt_osd_request_timeout, "osd_request_timeout=%d"}, | ||
259 | /* int args above */ | 261 | /* int args above */ |
260 | {Opt_fsid, "fsid=%s"}, | 262 | {Opt_fsid, "fsid=%s"}, |
261 | {Opt_name, "name=%s"}, | 263 | {Opt_name, "name=%s"}, |
@@ -361,6 +363,7 @@ ceph_parse_options(char *options, const char *dev_name, | |||
361 | opt->osd_keepalive_timeout = CEPH_OSD_KEEPALIVE_DEFAULT; | 363 | opt->osd_keepalive_timeout = CEPH_OSD_KEEPALIVE_DEFAULT; |
362 | opt->mount_timeout = CEPH_MOUNT_TIMEOUT_DEFAULT; | 364 | opt->mount_timeout = CEPH_MOUNT_TIMEOUT_DEFAULT; |
363 | opt->osd_idle_ttl = CEPH_OSD_IDLE_TTL_DEFAULT; | 365 | opt->osd_idle_ttl = CEPH_OSD_IDLE_TTL_DEFAULT; |
366 | opt->osd_request_timeout = CEPH_OSD_REQUEST_TIMEOUT_DEFAULT; | ||
364 | 367 | ||
365 | /* get mon ip(s) */ | 368 | /* get mon ip(s) */ |
366 | /* ip1[:port1][,ip2[:port2]...] */ | 369 | /* ip1[:port1][,ip2[:port2]...] */ |
@@ -473,6 +476,15 @@ ceph_parse_options(char *options, const char *dev_name, | |||
473 | } | 476 | } |
474 | opt->mount_timeout = msecs_to_jiffies(intval * 1000); | 477 | opt->mount_timeout = msecs_to_jiffies(intval * 1000); |
475 | break; | 478 | break; |
479 | case Opt_osd_request_timeout: | ||
480 | /* 0 is "wait forever" (i.e. infinite timeout) */ | ||
481 | if (intval < 0 || intval > INT_MAX / 1000) { | ||
482 | pr_err("osd_request_timeout out of range\n"); | ||
483 | err = -EINVAL; | ||
484 | goto out; | ||
485 | } | ||
486 | opt->osd_request_timeout = msecs_to_jiffies(intval * 1000); | ||
487 | break; | ||
476 | 488 | ||
477 | case Opt_share: | 489 | case Opt_share: |
478 | opt->flags &= ~CEPH_OPT_NOSHARE; | 490 | opt->flags &= ~CEPH_OPT_NOSHARE; |
@@ -557,6 +569,9 @@ int ceph_print_client_options(struct seq_file *m, struct ceph_client *client) | |||
557 | if (opt->osd_keepalive_timeout != CEPH_OSD_KEEPALIVE_DEFAULT) | 569 | if (opt->osd_keepalive_timeout != CEPH_OSD_KEEPALIVE_DEFAULT) |
558 | seq_printf(m, "osdkeepalivetimeout=%d,", | 570 | seq_printf(m, "osdkeepalivetimeout=%d,", |
559 | jiffies_to_msecs(opt->osd_keepalive_timeout) / 1000); | 571 | jiffies_to_msecs(opt->osd_keepalive_timeout) / 1000); |
572 | if (opt->osd_request_timeout != CEPH_OSD_REQUEST_TIMEOUT_DEFAULT) | ||
573 | seq_printf(m, "osd_request_timeout=%d,", | ||
574 | jiffies_to_msecs(opt->osd_request_timeout) / 1000); | ||
560 | 575 | ||
561 | /* drop redundant comma */ | 576 | /* drop redundant comma */ |
562 | if (m->count != pos) | 577 | if (m->count != pos) |