James: Can you or anyone else please explain what scsi_target_reap() and especially what scsi_target.reap_ref are for? What's the point of this home-brewed reference counting scheme when there's already a perfectly useful embedded struct device inside scsi_target? Why isn't scsi_target_reap() simply the release routine for the embedded device? In addition, can someone please explain how long a scsi_target structure and a scsi_device structure are supposed to remain linked into the host's __targets and __devices lists once they have been removed? The scsi_device link isn't severed until the release routine runs, which can be quite a long time after the device has been removed. The scsi_target link is severed in scsi_target_reap(), which should be thought of as a kind of release routine as well. Won't this cause trouble in a hotplug environment? A target or a LUN can be removed, and while it's still on the host's list a new target or LUN could be discovered with the same ID. Having multiple entries on a list with the same ID sounds like a bad idea. Is there some reason why these things aren't taken off their list as soon as they are removed? Alan Stern - : send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html