diff options
Diffstat (limited to 'fs/ceph/mon_client.c')
| -rw-r--r-- | fs/ceph/mon_client.c | 11 | 
1 files changed, 7 insertions, 4 deletions
diff --git a/fs/ceph/mon_client.c b/fs/ceph/mon_client.c index 21c62e9b7d1..54fe01c5070 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);  }  /* @@ -400,6 +400,8 @@ static void release_generic_request(struct kref *kref)  		ceph_msg_put(req->reply);  	if (req->request)  		ceph_msg_put(req->request); + +	kfree(req);  }  static void put_generic_request(struct ceph_mon_generic_request *req) @@ -460,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; @@ -716,14 +718,15 @@ 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)) {  		dout("authenticated, starting session\n");  		monc->client->msgr->inst.name.type = CEPH_ENTITY_TYPE_CLIENT; -		monc->client->msgr->inst.name.num = monc->auth->global_id; +		monc->client->msgr->inst.name.num = +					cpu_to_le64(monc->auth->global_id);  		__send_subscribe(monc);  		__resend_generic_request(monc);  |