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 | * |