From: Swen Schillig Subject: No udev events for zfcp online / offline References: bnc#443667 The following sequence: echo 1 > /sys/bus/ccw/devices/0.0.fc00/online echo 0 > /sys/bus/ccw/devices/0.0.fc00/online echo 1 > /sys/bus/ccw/devices/0.0.fc00/online generates udev events only for the first 'online' request. The following 'offline' request does not remove the zfcp adapter from the SCSI stack (directory 'hostX' in /sys/bus/ccw/devices/0.0.fc00 is still present), and no udev events are generated. Consequently no udev events are being generated for the following 'online' request. As discussed with IBM this is actually by design; the zfcp adapter will only be removed if a 'detach' is done. Consequently we should be register with the SCSI stack when an 'attach' is done, not when the ccw device is set online. Signed-off-by: Hannes Reinecke --- drivers/s390/scsi/zfcp_aux.c | 3 ++- drivers/s390/scsi/zfcp_ccw.c | 6 ------ 2 files changed, 2 insertions(+), 7 deletions(-) --- a/drivers/s390/scsi/zfcp_aux.c +++ b/drivers/s390/scsi/zfcp_aux.c @@ -525,7 +525,8 @@ int zfcp_adapter_enqueue(struct ccw_devi zfcp_fc_nameserver_init(adapter); - return 0; + if (!zfcp_adapter_scsi_register(adapter)) + return 0; sysfs_failed: zfcp_adapter_debug_unregister(adapter); --- a/drivers/s390/scsi/zfcp_ccw.c +++ b/drivers/s390/scsi/zfcp_ccw.c @@ -105,10 +105,6 @@ static int zfcp_ccw_set_online(struct cc if (retval) goto out; - retval = zfcp_adapter_scsi_register(adapter); - if (retval) - goto out_scsi_register; - /* initialize request counter */ BUG_ON(!zfcp_reqlist_isempty(adapter)); adapter->req_no = 0; @@ -122,8 +118,6 @@ static int zfcp_ccw_set_online(struct cc flush_work(&adapter->scan_work); return 0; - out_scsi_register: - zfcp_erp_thread_kill(adapter); out: up(&zfcp_data.config_sema); return retval;