[10/12] More Driver Model Locking Changes

From: Patrick Mochel
Date: Fri Mar 25 2005 - 01:09:17 EST



ChangeSet@xxxxxx, 2005-03-24 19:03:59-08:00, mochel@xxxxxxxxxxxxxxxxxx
[scsi] Use device_for_each_child() to unregister devices in scsi_remove_target().


Signed-off-by: Patrick Mochel <mochel@xxxxxxxxxxxxxxxxxx>

diff -Nru a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
--- a/drivers/scsi/scsi_sysfs.c 2005-03-24 20:32:54 -08:00
+++ b/drivers/scsi/scsi_sysfs.c 2005-03-24 20:32:54 -08:00
@@ -672,6 +672,13 @@
scsi_target_reap(starget);
}

+static int __remove_child (struct device * dev, void * data)
+{
+ if (scsi_is_target_device(dev))
+ __scsi_remove_target(to_scsi_target(dev));
+ return 0;
+}
+
/**
* scsi_remove_target - try to remove a target and all its devices
* @dev: generic starget or parent of generic stargets to be removed
@@ -682,7 +689,7 @@
*/
void scsi_remove_target(struct device *dev)
{
- struct device *rdev, *idev, *next;
+ struct device *rdev;

if (scsi_is_target_device(dev)) {
__scsi_remove_target(to_scsi_target(dev));
@@ -690,10 +697,7 @@
}

rdev = get_device(dev);
- list_for_each_entry_safe(idev, next, &dev->children, node) {
- if (scsi_is_target_device(idev))
- __scsi_remove_target(to_scsi_target(idev));
- }
+ device_for_each_child(dev, NULL, __remove_child);
put_device(rdev);
}
EXPORT_SYMBOL(scsi_remove_target);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/