Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 216639dd authored by Ilya Dryomov's avatar Ilya Dryomov
Browse files

libceph: a couple tweaks for wait loops



- return -ETIMEDOUT instead of -EIO in case of timeout
- wait_event_interruptible_timeout() returns time left until timeout
  and since it can be almost LONG_MAX we had better assign it to long

Signed-off-by: default avatarIlya Dryomov <idryomov@gmail.com>
Reviewed-by: default avatarAlex Elder <elder@linaro.org>
parent a319bf56
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -647,8 +647,8 @@ static int have_mon_and_osd_map(struct ceph_client *client)
 */
int __ceph_open_session(struct ceph_client *client, unsigned long started)
{
	int err;
	unsigned long timeout = client->options->mount_timeout;
	long err;

	/* open session, and wait for mon and osd maps */
	err = ceph_monc_open_session(&client->monc);
@@ -656,16 +656,15 @@ int __ceph_open_session(struct ceph_client *client, unsigned long started)
		return err;

	while (!have_mon_and_osd_map(client)) {
		err = -EIO;
		if (timeout && time_after_eq(jiffies, started + timeout))
			return err;
			return -ETIMEDOUT;

		/* wait */
		dout("mount waiting for mon_map\n");
		err = wait_event_interruptible_timeout(client->auth_wq,
			have_mon_and_osd_map(client) || (client->auth_err < 0),
			ceph_timeout_jiffies(timeout));
		if (err == -EINTR || err == -ERESTARTSYS)
		if (err < 0)
			return err;
		if (client->auth_err < 0)
			return client->auth_err;
+1 −1
Original line number Diff line number Diff line
@@ -308,7 +308,7 @@ int ceph_monc_wait_osdmap(struct ceph_mon_client *monc, u32 epoch,
			  unsigned long timeout)
{
	unsigned long started = jiffies;
	int ret;
	long ret;

	mutex_lock(&monc->mutex);
	while (monc->have_osdmap < epoch) {