Whamcloud - gitweb
Branch HEAD
authorbobijam <bobijam>
Wed, 12 Mar 2008 01:30:48 +0000 (01:30 +0000)
committerbobijam <bobijam>
Wed, 12 Mar 2008 01:30:48 +0000 (01:30 +0000)
b=15010
o=green
i=vitaly
i=adilger

Description: mdc_set_open_replay_data LBUG
Details    : Set replay data for requests that are eligible for replay.

lustre/ChangeLog
lustre/mdc/mdc_locks.c
lustre/mdc/mdc_request.c

index f585e05..7867120 100644 (file)
@@ -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
index 932564d..b18f642 100644 (file)
@@ -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
index 0d16809..ed93132 100644 (file)
@@ -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;