mirror of
https://github.com/ceph/ceph
synced 2025-03-11 02:39:05 +00:00
kclient: clean up some mdsc locking
Do not drop mds mutex in __do_request().
This commit is contained in:
parent
919b21429b
commit
d7cb96bd12
@ -599,19 +599,6 @@ static struct ceph_msg *create_session_msg(u32 op, u64 seq)
|
|||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Register request with mon_client for a new mds map.
|
|
||||||
*
|
|
||||||
* called under mdsc->mutex.
|
|
||||||
*/
|
|
||||||
static void request_new_map(struct ceph_mds_client *mdsc)
|
|
||||||
{
|
|
||||||
dout(30, "request_new_map enter\n");
|
|
||||||
mutex_unlock(&mdsc->mutex);
|
|
||||||
ceph_monc_request_mdsmap(&mdsc->client->monc, mdsc->mdsmap->m_epoch+1);
|
|
||||||
mutex_lock(&mdsc->mutex);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* send session open request.
|
* send session open request.
|
||||||
*
|
*
|
||||||
@ -630,7 +617,6 @@ static int __open_session(struct ceph_mds_client *mdsc,
|
|||||||
dout(10, "open_session to mds%d, state %d\n", mds, mstate);
|
dout(10, "open_session to mds%d, state %d\n", mds, mstate);
|
||||||
session->s_state = CEPH_MDS_SESSION_OPENING;
|
session->s_state = CEPH_MDS_SESSION_OPENING;
|
||||||
session->s_renew_requested = jiffies;
|
session->s_renew_requested = jiffies;
|
||||||
mutex_unlock(&mdsc->mutex);
|
|
||||||
|
|
||||||
/* send connect message */
|
/* send connect message */
|
||||||
msg = create_session_msg(CEPH_SESSION_REQUEST_OPEN, session->s_seq);
|
msg = create_session_msg(CEPH_SESSION_REQUEST_OPEN, session->s_seq);
|
||||||
@ -641,7 +627,6 @@ static int __open_session(struct ceph_mds_client *mdsc,
|
|||||||
ceph_send_msg_mds(mdsc, msg, mds);
|
ceph_send_msg_mds(mdsc, msg, mds);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
mutex_lock(&mdsc->mutex);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1122,7 +1107,8 @@ static int __do_request(struct ceph_mds_client *mdsc,
|
|||||||
ceph_mdsmap_get_state(mdsc->mdsmap, mds) < CEPH_MDS_STATE_ACTIVE) {
|
ceph_mdsmap_get_state(mdsc->mdsmap, mds) < CEPH_MDS_STATE_ACTIVE) {
|
||||||
dout(30, "do_request no mds or not active, waiting for map\n");
|
dout(30, "do_request no mds or not active, waiting for map\n");
|
||||||
list_add(&req->r_wait, &mdsc->waiting_for_map);
|
list_add(&req->r_wait, &mdsc->waiting_for_map);
|
||||||
request_new_map(mdsc);
|
ceph_monc_request_mdsmap(&mdsc->client->monc,
|
||||||
|
mdsc->mdsmap->m_epoch+1);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1137,7 +1123,8 @@ static int __do_request(struct ceph_mds_client *mdsc,
|
|||||||
session->s_state == CEPH_MDS_SESSION_CLOSING)
|
session->s_state == CEPH_MDS_SESSION_CLOSING)
|
||||||
__open_session(mdsc, session);
|
__open_session(mdsc, session);
|
||||||
list_add(&req->r_wait, &session->s_waiting);
|
list_add(&req->r_wait, &session->s_waiting);
|
||||||
request_new_map(mdsc);
|
ceph_monc_request_mdsmap(&mdsc->client->monc,
|
||||||
|
mdsc->mdsmap->m_epoch+1);
|
||||||
goto out_session;
|
goto out_session;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1150,10 +1137,8 @@ static int __do_request(struct ceph_mds_client *mdsc,
|
|||||||
|
|
||||||
err = __prepare_send_request(mdsc, req, mds);
|
err = __prepare_send_request(mdsc, req, mds);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
mutex_unlock(&mdsc->mutex);
|
|
||||||
ceph_msg_get(req->r_request);
|
ceph_msg_get(req->r_request);
|
||||||
ceph_send_msg_mds(mdsc, req->r_request, mds);
|
ceph_send_msg_mds(mdsc, req->r_request, mds);
|
||||||
mutex_lock(&mdsc->mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
out_session:
|
out_session:
|
||||||
|
Loading…
Reference in New Issue
Block a user