Loading fs/ceph/mds_client.c +25 −22 Original line number Original line Diff line number Diff line Loading @@ -2522,6 +2522,26 @@ static int __prepare_send_request(struct ceph_mds_client *mdsc, return 0; return 0; } } /* * called under mdsc->mutex */ static int __send_request(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, struct ceph_mds_request *req, bool drop_cap_releases) { int err; err = __prepare_send_request(mdsc, req, session->s_mds, drop_cap_releases); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } return err; } /* /* * send request, or put it on the appropriate wait list. * send request, or put it on the appropriate wait list. */ */ Loading Loading @@ -2611,11 +2631,7 @@ static void __do_request(struct ceph_mds_client *mdsc, if (req->r_request_started == 0) /* note request start time */ if (req->r_request_started == 0) /* note request start time */ req->r_request_started = jiffies; req->r_request_started = jiffies; err = __prepare_send_request(mdsc, req, mds, false); err = __send_request(mdsc, session, req, false); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } out_session: out_session: ceph_put_mds_session(session); ceph_put_mds_session(session); Loading Loading @@ -3217,7 +3233,6 @@ static void handle_session(struct ceph_mds_session *session, return; return; } } /* /* * called under session->mutex. * called under session->mutex. */ */ Loading @@ -3226,18 +3241,12 @@ static void replay_unsafe_requests(struct ceph_mds_client *mdsc, { { struct ceph_mds_request *req, *nreq; struct ceph_mds_request *req, *nreq; struct rb_node *p; struct rb_node *p; int err; dout("replay_unsafe_requests mds%d\n", session->s_mds); dout("replay_unsafe_requests mds%d\n", session->s_mds); mutex_lock(&mdsc->mutex); mutex_lock(&mdsc->mutex); list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) { list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) err = __prepare_send_request(mdsc, req, session->s_mds, true); __send_request(mdsc, session, req, true); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } } /* /* * also re-send old requests when MDS enters reconnect stage. So that MDS * also re-send old requests when MDS enters reconnect stage. So that MDS Loading @@ -3252,14 +3261,8 @@ static void replay_unsafe_requests(struct ceph_mds_client *mdsc, if (req->r_attempts == 0) if (req->r_attempts == 0) continue; /* only old requests */ continue; /* only old requests */ if (req->r_session && if (req->r_session && req->r_session->s_mds == session->s_mds) { req->r_session->s_mds == session->s_mds) err = __prepare_send_request(mdsc, req, __send_request(mdsc, session, req, true); session->s_mds, true); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } } } } mutex_unlock(&mdsc->mutex); mutex_unlock(&mdsc->mutex); } } Loading Loading
fs/ceph/mds_client.c +25 −22 Original line number Original line Diff line number Diff line Loading @@ -2522,6 +2522,26 @@ static int __prepare_send_request(struct ceph_mds_client *mdsc, return 0; return 0; } } /* * called under mdsc->mutex */ static int __send_request(struct ceph_mds_client *mdsc, struct ceph_mds_session *session, struct ceph_mds_request *req, bool drop_cap_releases) { int err; err = __prepare_send_request(mdsc, req, session->s_mds, drop_cap_releases); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } return err; } /* /* * send request, or put it on the appropriate wait list. * send request, or put it on the appropriate wait list. */ */ Loading Loading @@ -2611,11 +2631,7 @@ static void __do_request(struct ceph_mds_client *mdsc, if (req->r_request_started == 0) /* note request start time */ if (req->r_request_started == 0) /* note request start time */ req->r_request_started = jiffies; req->r_request_started = jiffies; err = __prepare_send_request(mdsc, req, mds, false); err = __send_request(mdsc, session, req, false); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } out_session: out_session: ceph_put_mds_session(session); ceph_put_mds_session(session); Loading Loading @@ -3217,7 +3233,6 @@ static void handle_session(struct ceph_mds_session *session, return; return; } } /* /* * called under session->mutex. * called under session->mutex. */ */ Loading @@ -3226,18 +3241,12 @@ static void replay_unsafe_requests(struct ceph_mds_client *mdsc, { { struct ceph_mds_request *req, *nreq; struct ceph_mds_request *req, *nreq; struct rb_node *p; struct rb_node *p; int err; dout("replay_unsafe_requests mds%d\n", session->s_mds); dout("replay_unsafe_requests mds%d\n", session->s_mds); mutex_lock(&mdsc->mutex); mutex_lock(&mdsc->mutex); list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) { list_for_each_entry_safe(req, nreq, &session->s_unsafe, r_unsafe_item) err = __prepare_send_request(mdsc, req, session->s_mds, true); __send_request(mdsc, session, req, true); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } } /* /* * also re-send old requests when MDS enters reconnect stage. So that MDS * also re-send old requests when MDS enters reconnect stage. So that MDS Loading @@ -3252,14 +3261,8 @@ static void replay_unsafe_requests(struct ceph_mds_client *mdsc, if (req->r_attempts == 0) if (req->r_attempts == 0) continue; /* only old requests */ continue; /* only old requests */ if (req->r_session && if (req->r_session && req->r_session->s_mds == session->s_mds) { req->r_session->s_mds == session->s_mds) err = __prepare_send_request(mdsc, req, __send_request(mdsc, session, req, true); session->s_mds, true); if (!err) { ceph_msg_get(req->r_request); ceph_con_send(&session->s_con, req->r_request); } } } } mutex_unlock(&mdsc->mutex); mutex_unlock(&mdsc->mutex); } } Loading