From a0f628bf5503ac444ef763f4f72cc86884cb9261 Mon Sep 17 00:00:00 2001 From: shadow <shadow> Date: Wed, 27 Aug 2008 05:18:48 +0000 Subject: [PATCH] if ost is restarted before set_info(KEY_MDS_CONN) finished, this request will resend before finished ost llog init and this produce access to non init llog context. Branch b1_6 b=16839 i=adilger i=rread --- lustre/ChangeLog | 8 ++++++++ lustre/osc/osc_request.c | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lustre/ChangeLog b/lustre/ChangeLog index 6f37274505..bf7ad76e94 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -38,6 +38,14 @@ tbd Sun Microsystems, Inc. * Output of lfs quota has been made less detailed by default, old (verbose) output can be obtained by using -v option. +Severity : normal +Bugzilla : 16839 +Frequency : rare, on restart ost +Description: llog_receptor_accept() ASSERTION(ctxt) +Details : if ost is restarted before set_info(KEY_MDS_CONN) finished, this + request will resend before finished ost llog init and this produce + access to non init llog context. + Severity : normal Bugzilla : 15927 Frequency : rare diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index 1555d61f04..a439d01fd4 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -3477,6 +3477,7 @@ static int osc_get_info(struct obd_export *exp, obd_count keylen, RETURN(-ENOMEM); size[REPLY_REC_OFF] = *vallen; + req->rq_no_delay = req->rq_no_resend = 1; ptlrpc_req_set_repsize(req, 2, size); rc = ptlrpc_queue_wait(req); if (rc) @@ -3623,8 +3624,10 @@ static int osc_set_info_async(struct obd_export *exp, obd_count keylen, if (req == NULL) RETURN(-ENOMEM); - if (KEY_IS(KEY_MDS_CONN)) + if (KEY_IS(KEY_MDS_CONN)) { req->rq_interpret_reply = osc_setinfo_mds_conn_interpret; + req->rq_no_delay = req->rq_no_resend = 1; + } ptlrpc_req_set_repsize(req, 1, NULL); ptlrpc_set_add_req(set, req); -- GitLab