aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/mon_client.c
diff options
context:
space:
mode:
authorYehuda Sadeh <yehuda@hq.newdream.net>2010-07-27 13:11:08 -0700
committerSage Weil <sage@newdream.net>2010-07-27 13:11:17 -0700
commit03066f23452ff088ad8e2c8acdf4443043f35b51 (patch)
tree37f03df4e28de87339cec3b88e479073c8cee958 /fs/ceph/mon_client.c
parent25848b3ec681c7018e3746dd850c1e8ed0a3dd6b (diff)
downloadkernel_samsung_tuna-03066f23452ff088ad8e2c8acdf4443043f35b51.zip
kernel_samsung_tuna-03066f23452ff088ad8e2c8acdf4443043f35b51.tar.gz
kernel_samsung_tuna-03066f23452ff088ad8e2c8acdf4443043f35b51.tar.bz2
ceph: use complete_all and wake_up_all
This fixes an issue triggered by running concurrent syncs. One of the syncs would go through while the other would just hang indefinitely. In any case, we never actually want to wake a single waiter, so the *_all functions should be used. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/mon_client.c')
-rw-r--r--fs/ceph/mon_client.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/fs/ceph/mon_client.c b/fs/ceph/mon_client.c
index cc115ea..54fe01c 100644
--- a/fs/ceph/mon_client.c
+++ b/fs/ceph/mon_client.c
@@ -345,7 +345,7 @@ static void ceph_monc_handle_map(struct ceph_mon_client *monc,
out:
mutex_unlock(&monc->mutex);
- wake_up(&client->auth_wq);
+ wake_up_all(&client->auth_wq);
}
/*
@@ -462,7 +462,7 @@ static void handle_statfs_reply(struct ceph_mon_client *monc,
}
mutex_unlock(&monc->mutex);
if (req) {
- complete(&req->completion);
+ complete_all(&req->completion);
put_generic_request(req);
}
return;
@@ -718,7 +718,7 @@ static void handle_auth_reply(struct ceph_mon_client *monc,
monc->m_auth->front_max);
if (ret < 0) {
monc->client->auth_err = ret;
- wake_up(&monc->client->auth_wq);
+ wake_up_all(&monc->client->auth_wq);
} else if (ret > 0) {
__send_prepared_auth_request(monc, ret);
} else if (!was_auth && monc->auth->ops->is_authenticated(monc->auth)) {