aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/scsi/zfcp_aux.c
diff options
context:
space:
mode:
authorSwen Schillig <swen@vnet.ibm.com>2009-11-24 10:54:05 -0500
committerJames Bottomley <James.Bottomley@suse.de>2009-12-04 13:02:07 -0500
commit6b183334c23969d52d4d9f775da554480d05ca4d (patch)
tree32f791e10aff8be2acaede6c3881b6561a65cc5a /drivers/s390/scsi/zfcp_aux.c
parentc1fad4176464281e776022dee7d029144afbeb13 (diff)
[SCSI] zfcp: Remove STATUS_COMMON_REMOVE flag as it is not required anymore
The flag ZFCP_STATUS_COMMON_REMOVE was used to indicate that a resource is not ready to be used or about to be removed from the system. This is now better done by an improved list handling and therefore the additional indicator is not required anymore. Signed-off-by: Swen Schillig <swen@vnet.ibm.com> Signed-off-by: Christof Schmitt <christof.schmitt@de.ibm.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/s390/scsi/zfcp_aux.c')
-rw-r--r--drivers/s390/scsi/zfcp_aux.c27
1 files changed, 7 insertions, 20 deletions
diff --git a/drivers/s390/scsi/zfcp_aux.c b/drivers/s390/scsi/zfcp_aux.c
index 12de1ce9a92d..6b94f8d0609c 100644
--- a/drivers/s390/scsi/zfcp_aux.c
+++ b/drivers/s390/scsi/zfcp_aux.c
@@ -245,9 +245,9 @@ struct zfcp_unit *zfcp_get_unit_by_lun(struct zfcp_port *port, u64 fcp_lun)
245 245
246 read_lock_irqsave(&port->unit_list_lock, flags); 246 read_lock_irqsave(&port->unit_list_lock, flags);
247 list_for_each_entry(unit, &port->unit_list, list) 247 list_for_each_entry(unit, &port->unit_list, list)
248 if ((unit->fcp_lun == fcp_lun) && 248 if (unit->fcp_lun == fcp_lun) {
249 !(atomic_read(&unit->status) & ZFCP_STATUS_COMMON_REMOVE)) { 249 if (!get_device(&unit->sysfs_device))
250 get_device(&unit->sysfs_device); 250 unit = NULL;
251 read_unlock_irqrestore(&port->unit_list_lock, flags); 251 read_unlock_irqrestore(&port->unit_list_lock, flags);
252 return unit; 252 return unit;
253 } 253 }
@@ -270,9 +270,9 @@ struct zfcp_port *zfcp_get_port_by_wwpn(struct zfcp_adapter *adapter,
270 270
271 read_lock_irqsave(&adapter->port_list_lock, flags); 271 read_lock_irqsave(&adapter->port_list_lock, flags);
272 list_for_each_entry(port, &adapter->port_list, list) 272 list_for_each_entry(port, &adapter->port_list, list)
273 if ((port->wwpn == wwpn) && 273 if (port->wwpn == wwpn) {
274 !(atomic_read(&port->status) & ZFCP_STATUS_COMMON_REMOVE)) { 274 if (!get_device(&port->sysfs_device))
275 get_device(&port->sysfs_device); 275 port = NULL;
276 read_unlock_irqrestore(&adapter->port_list_lock, flags); 276 read_unlock_irqrestore(&adapter->port_list_lock, flags);
277 return port; 277 return port;
278 } 278 }
@@ -334,9 +334,6 @@ struct zfcp_unit *zfcp_unit_enqueue(struct zfcp_port *port, u64 fcp_lun)
334 } 334 }
335 retval = -EINVAL; 335 retval = -EINVAL;
336 336
337 /* mark unit unusable as long as sysfs registration is not complete */
338 atomic_set_mask(ZFCP_STATUS_COMMON_REMOVE, &unit->status);
339
340 INIT_WORK(&unit->scsi_work, zfcp_scsi_scan); 337 INIT_WORK(&unit->scsi_work, zfcp_scsi_scan);
341 338
342 spin_lock_init(&unit->latencies.lock); 339 spin_lock_init(&unit->latencies.lock);
@@ -360,7 +357,6 @@ struct zfcp_unit *zfcp_unit_enqueue(struct zfcp_port *port, u64 fcp_lun)
360 list_add_tail(&unit->list, &port->unit_list); 357 list_add_tail(&unit->list, &port->unit_list);
361 write_unlock_irq(&port->unit_list_lock); 358 write_unlock_irq(&port->unit_list_lock);
362 359
363 atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &unit->status);
364 atomic_set_mask(ZFCP_STATUS_COMMON_RUNNING, &unit->status); 360 atomic_set_mask(ZFCP_STATUS_COMMON_RUNNING, &unit->status);
365 361
366 return unit; 362 return unit;
@@ -565,17 +561,12 @@ struct zfcp_adapter *zfcp_adapter_enqueue(struct ccw_device *ccw_device)
565 561
566 adapter->service_level.seq_print = zfcp_print_sl; 562 adapter->service_level.seq_print = zfcp_print_sl;
567 563
568 /* mark adapter unusable as long as sysfs registration is not complete */
569 atomic_set_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status);
570
571 dev_set_drvdata(&ccw_device->dev, adapter); 564 dev_set_drvdata(&ccw_device->dev, adapter);
572 565
573 if (sysfs_create_group(&ccw_device->dev.kobj, 566 if (sysfs_create_group(&ccw_device->dev.kobj,
574 &zfcp_sysfs_adapter_attrs)) 567 &zfcp_sysfs_adapter_attrs))
575 goto failed; 568 goto failed;
576 569
577 atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &adapter->status);
578
579 if (!zfcp_adapter_scsi_register(adapter)) 570 if (!zfcp_adapter_scsi_register(adapter))
580 return adapter; 571 return adapter;
581 572
@@ -692,9 +683,6 @@ struct zfcp_port *zfcp_port_enqueue(struct zfcp_adapter *adapter, u64 wwpn,
692 port->sysfs_device.parent = &adapter->ccw_device->dev; 683 port->sysfs_device.parent = &adapter->ccw_device->dev;
693 port->sysfs_device.release = zfcp_port_release; 684 port->sysfs_device.release = zfcp_port_release;
694 685
695 /* mark port unusable as long as sysfs registration is not complete */
696 atomic_set_mask(status | ZFCP_STATUS_COMMON_REMOVE, &port->status);
697
698 if (dev_set_name(&port->sysfs_device, "0x%016llx", 686 if (dev_set_name(&port->sysfs_device, "0x%016llx",
699 (unsigned long long)wwpn)) { 687 (unsigned long long)wwpn)) {
700 kfree(port); 688 kfree(port);
@@ -715,8 +703,7 @@ struct zfcp_port *zfcp_port_enqueue(struct zfcp_adapter *adapter, u64 wwpn,
715 list_add_tail(&port->list, &adapter->port_list); 703 list_add_tail(&port->list, &adapter->port_list);
716 write_unlock_irq(&adapter->port_list_lock); 704 write_unlock_irq(&adapter->port_list_lock);
717 705
718 atomic_clear_mask(ZFCP_STATUS_COMMON_REMOVE, &port->status); 706 atomic_set_mask(status | ZFCP_STATUS_COMMON_RUNNING, &port->status);
719 atomic_set_mask(ZFCP_STATUS_COMMON_RUNNING, &port->status);
720 707
721 return port; 708 return port;
722 709