+ rc = -EALREADY;
+ } else if (export != NULL && export->exp_connection != NULL &&
+ req->rq_peer.nid != export->exp_connection->c_peer.nid) {
+ /* make darn sure this is coming from the same peer
+ * if the UUIDs matched */
+ CWARN("%s: cookie %s seen on new NID %s when "
+ "existing NID %s is already connected\n",
+ target->obd_name, cluuid.uuid,
+ libcfs_nid2str(req->rq_peer.nid),
+ libcfs_nid2str(export->exp_connection->c_peer.nid));
+ class_export_put(export);
+ export = NULL;
+ rc = -EALREADY;
+ } else if (export != NULL) {
+ spin_lock(&export->exp_lock);
+ export->exp_connecting = 1;
+ spin_unlock(&export->exp_lock);
+ class_export_put(export);
+ spin_unlock(&target->obd_dev_lock);
+ LASSERT(export->exp_obd == target);
+
+ rc = target_handle_reconnect(&conn, export, &cluuid, initial_conn);