diff options
| author | Ilya Dryomov <ilya.dryomov@inktank.com> | 2014-05-13 03:19:27 -0400 |
|---|---|---|
| committer | Yan, Zheng <zheng.z.yan@intel.com> | 2014-06-05 21:29:57 -0400 |
| commit | 6044cde6f2a94d88142d4401624152a741866338 (patch) | |
| tree | 9c58a1e13db9dd410b680291eeda15b226bac9e1 /net/ceph | |
| parent | 513a8243d67f8e8d27f2883bd2f18bc87c7ca376 (diff) | |
libceph: add ceph_monc_wait_osdmap()
Add ceph_monc_wait_osdmap(), which will block until the osdmap with the
specified epoch is received or timeout occurs.
Export both of these as they are going to be needed by rbd.
Signed-off-by: Ilya Dryomov <ilya.dryomov@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
Diffstat (limited to 'net/ceph')
| -rw-r--r-- | net/ceph/mon_client.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c index 11d8d2f2708a..067d3af2eaf6 100644 --- a/net/ceph/mon_client.c +++ b/net/ceph/mon_client.c | |||
| @@ -296,6 +296,33 @@ void ceph_monc_request_next_osdmap(struct ceph_mon_client *monc) | |||
| 296 | __send_subscribe(monc); | 296 | __send_subscribe(monc); |
| 297 | mutex_unlock(&monc->mutex); | 297 | mutex_unlock(&monc->mutex); |
| 298 | } | 298 | } |
| 299 | EXPORT_SYMBOL(ceph_monc_request_next_osdmap); | ||
| 300 | |||
| 301 | int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch, | ||
| 302 | unsigned long timeout) | ||
| 303 | { | ||
| 304 | unsigned long started = jiffies; | ||
| 305 | int ret; | ||
| 306 | |||
| 307 | mutex_lock(&monc->mutex); | ||
| 308 | while (monc->have_osdmap < epoch) { | ||
| 309 | mutex_unlock(&monc->mutex); | ||
| 310 | |||
| 311 | if (timeout != 0 && time_after_eq(jiffies, started + timeout)) | ||
| 312 | return -ETIMEDOUT; | ||
| 313 | |||
| 314 | ret = wait_event_interruptible_timeout(monc->client->auth_wq, | ||
| 315 | monc->have_osdmap >= epoch, timeout); | ||
| 316 | if (ret < 0) | ||
| 317 | return ret; | ||
| 318 | |||
| 319 | mutex_lock(&monc->mutex); | ||
| 320 | } | ||
| 321 | |||
| 322 | mutex_unlock(&monc->mutex); | ||
| 323 | return 0; | ||
| 324 | } | ||
| 325 | EXPORT_SYMBOL(ceph_monc_wait_osdmap); | ||
| 299 | 326 | ||
| 300 | /* | 327 | /* |
| 301 | * | 328 | * |
