Description: lustre support for RHEL5
Details : Add support for RHEL5.
+Severity : minor
+Bugzilla : 11327
+Frequency : rare
+Description: ASSERTION(export != NULL) failed in target_handle_connect
+Details : Assetion hit is result of rare race between disconnect and connet
+ to same nid. target_handle_connect found old connect cockie and
+ tried to reconnect, but can't find export for this cockie.
+
--------------------------------------------------------------------------------
2007-07-30 Cluster File Systems, Inc. <info@clusterfs.com>
class_export_put(export);
export = NULL;
rc = -EALREADY;
+ } else if (export != NULL && export->exp_failed) { /* bug 11327 */
+ CDEBUG(D_HA, "%s: exp %p evict in progress - new cookie needed "
+ "for connect\n", export->exp_obd->obd_name, export);
+ class_export_put(export);
+ export = NULL;
+ rc = -ENODEV;
} else if (export != NULL) {
spin_lock(&export->exp_lock);
export->exp_connecting = 1;
cluuid.uuid, libcfs_nid2str(req->rq_peer.nid),
export->exp_conn_cnt,
lustre_msg_get_conn_cnt(req->rq_reqmsg));
-
+
spin_unlock(&export->exp_lock);
GOTO(out, rc = -EALREADY);
}
spin_lock(&target->obd_dev_lock);
/* Export might be hashed already, e.g. if this is reconnect */
if (hlist_unhashed(&export->exp_nid_hash))
- lustre_hash_additem(export->exp_obd->obd_nid_hash_body,
- &export->exp_connection->c_peer.nid,
+ lustre_hash_additem(export->exp_obd->obd_nid_hash_body,
+ &export->exp_connection->c_peer.nid,
&export->exp_nid_hash);
spin_unlock(&target->obd_dev_lock);
export->exp_connecting = 0;
spin_unlock(&export->exp_lock);
}
- if (targref)
+ if (targref)
class_decref(targref);
if (rc)
req->rq_status = rc;