diff --git a/lustre/ChangeLog b/lustre/ChangeLog index f585e055e496c96c456f9113946d7b79956ce6a9..7867120973a2c4f59d71eaa705e061bec8f1f8c7 100644 --- a/lustre/ChangeLog +++ b/lustre/ChangeLog @@ -12,6 +12,12 @@ tbd Sun Microsystems, Inc. * RHEL 4 and RHEL 5/SLES 10 clients behaves differently on 'cd' to a removed cwd "./" (refer to Bugzilla 14399). +Severity : major +Frequency : frequent on X2 node +Bugzilla : 15010 +Description: mdc_set_open_replay_data LBUG +Details : Set replay data for requests that are eligible for replay. + Severity : normal Bugzilla : 14321 Description: lustre_mgs: operation 101 on unconnected MGS diff --git a/lustre/mdc/mdc_locks.c b/lustre/mdc/mdc_locks.c index 932564d62bcec5f7b1c8a4af35bc7167a7d807f8..b18f6421a2d766b698995001029cacac9582b7bc 100644 --- a/lustre/mdc/mdc_locks.c +++ b/lustre/mdc/mdc_locks.c @@ -573,7 +573,7 @@ int mdc_enqueue(struct obd_export *exp, struct ldlm_enqueue_info *einfo, RETURN (-EPROTO); } - if (req->rq_replay && it_disposition(it, DISP_OPEN_OPEN) && + if (it_disposition(it, DISP_OPEN_OPEN) && !it_open_error(DISP_OPEN_OPEN, it)) { /* * If this is a successful OPEN request, we need to set diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c index 0d1680901205599d4588828159dce151bb335a9c..ed931328ad4d8d90c846f27b69ee0cceeab3ee0b 100644 --- a/lustre/mdc/mdc_request.c +++ b/lustre/mdc/mdc_request.c @@ -722,6 +722,9 @@ int mdc_set_open_replay_data(struct obd_export *exp, struct obd_import *imp = open_req->rq_import; ENTRY; + if (!open_req->rq_replay) + RETURN(0); + rec = req_capsule_client_get(&open_req->rq_pill, &RMF_REC_REINT); body = req_capsule_server_get(&open_req->rq_pill, &RMF_MDT_BODY); LASSERT(rec != NULL); @@ -729,7 +732,7 @@ int mdc_set_open_replay_data(struct obd_export *exp, /* Outgoing messages always in my byte order. */ LASSERT(body != NULL); - /*Only the import is replayable, we set replay_open data */ + /* Only if the import is replayable, we set replay_open data */ if (och && imp->imp_replayable) { OBD_ALLOC_PTR(mod); if (mod == NULL) { @@ -740,12 +743,6 @@ int mdc_set_open_replay_data(struct obd_export *exp, CFS_INIT_LIST_HEAD(&mod->mod_replay_list); spin_lock(&open_req->rq_lock); - if (!open_req->rq_replay) { - OBD_FREE(mod, sizeof(*mod)); - spin_unlock(&open_req->rq_lock); - RETURN(0); - } - och->och_mod = mod; mod->mod_och = och; open_req->rq_cb_data = mod;