#define ZFCP_STATUS_UNIT_TEMPORARY             0x00000002
 #define ZFCP_STATUS_UNIT_SHARED                        0x00000004
 #define ZFCP_STATUS_UNIT_READONLY              0x00000008
+#define ZFCP_STATUS_UNIT_REGISTERED            0x00000010
 
 /* FSF request status (this does not have a common part) */
 #define ZFCP_STATUS_FSFREQ_NOT_INIT            0x00000000
 
                    && (!atomic_test_mask(ZFCP_STATUS_UNIT_TEMPORARY,
                                          &unit->status))
                    && !unit->device
-                   && port->rport)
-                       scsi_add_device(port->adapter->scsi_host, 0,
-                                       port->rport->scsi_target_id,
-                                       unit->scsi_lun);
+                   && port->rport) {
+                       atomic_set_mask(ZFCP_STATUS_UNIT_REGISTERED,
+                                       &unit->status);
+                       scsi_scan_target(&port->rport->dev, 0,
+                                        port->rport->scsi_target_id,
+                                        unit->scsi_lun, 0);
+               }
                zfcp_unit_put(unit);
                break;
        case ZFCP_ERP_ACTION_REOPEN_PORT_FORCED:
 
 
        read_lock_irqsave(&zfcp_data.config_lock, flags);
        unit = zfcp_unit_lookup(adapter, sdp->channel, sdp->id, sdp->lun);
-       if (unit) {
+       if (unit && atomic_test_mask(ZFCP_STATUS_UNIT_REGISTERED,
+                                    &unit->status)) {
                sdp->hostdata = unit;
                unit->device = sdp;
                zfcp_unit_get(unit);
        struct zfcp_unit *unit = (struct zfcp_unit *) sdpnt->hostdata;
 
        if (unit) {
+               atomic_clear_mask(ZFCP_STATUS_UNIT_REGISTERED, &unit->status);
                sdpnt->hostdata = NULL;
                unit->device = NULL;
                zfcp_unit_put(unit);
                               "on port 0x%016Lx in recovery\n",
                               zfcp_get_busid_by_unit(unit),
                               unit->fcp_lun, unit->port->wwpn);
-               retval = SCSI_MLQUEUE_DEVICE_BUSY;
+               zfcp_scsi_command_fail(scpnt, DID_NO_CONNECT);
                goto out;
        }