static void zfcp_scsi_rport_block(struct zfcp_port *port) { struct fc_rport *rport = port->rport; if (rport) { fc_remote_port_delete(rport); port->rport = NULL; } }
static void zfcp_scsi_rport_block(struct zfcp_port *port) { struct fc_rport *rport = port->rport; if (rport) { zfcp_dbf_rec_trig_lock("scpdely", port->adapter, port, NULL, ZFCP_PSEUDO_ERP_ACTION_RPORT_DEL, ZFCP_PSEUDO_ERP_ACTION_RPORT_DEL); fc_remote_port_delete(rport); port->rport = NULL; } }
/* * csio_unreg_rnode - Unregister a remote port with FC transport. * @rn: Rnode representing remote port. * * Call fc_remote_port_delete() to unregister this remote port with FC * transport. * */ void csio_unreg_rnode(struct csio_rnode *rn) { struct csio_lnode *ln = csio_rnode_to_lnode(rn); struct fc_rport *rport = rn->rport; rn->role &= ~(CSIO_RNFR_INITIATOR | CSIO_RNFR_TARGET); fc_remote_port_delete(rport); ln->num_reg_rnodes--; csio_ln_dbg(ln, "Remote port x%x un-registered\n", rn->nport_id); }
/** * zfcp_port_dequeue - dequeues a port from the port list of the adapter * @port: pointer to struct zfcp_port which should be removed */ void zfcp_port_dequeue(struct zfcp_port *port) { wait_event(port->remove_wq, atomic_read(&port->refcount) == 0); write_lock_irq(&zfcp_data.config_lock); list_del(&port->list); write_unlock_irq(&zfcp_data.config_lock); if (port->rport) fc_remote_port_delete(port->rport); port->rport = NULL; zfcp_adapter_put(port->adapter); sysfs_remove_group(&port->sysfs_device.kobj, &zfcp_sysfs_port_attrs); device_unregister(&port->sysfs_device); }
/** * zfcp_port_dequeue - dequeues a port from the port list of the adapter * @port: pointer to struct zfcp_port which should be removed */ void zfcp_port_dequeue(struct zfcp_port *port) { zfcp_port_wait(port); write_lock_irq(&zfcp_data.config_lock); list_del(&port->list); port->adapter->ports--; write_unlock_irq(&zfcp_data.config_lock); if (port->rport) fc_remote_port_delete(port->rport); port->rport = NULL; zfcp_adapter_put(port->adapter); if (atomic_read(&port->status) & ZFCP_STATUS_PORT_WKA) sysfs_remove_group(&port->sysfs_device.kobj, &zfcp_sysfs_ns_port_attrs); else sysfs_remove_group(&port->sysfs_device.kobj, &zfcp_sysfs_port_attrs); device_unregister(&port->sysfs_device); }