On Thu, 2008-03-06 at 21:16 -0500, Jeff Garzik wrote: > Tejun Heo wrote: > > James Bottomley wrote: > >>> Yeap, sure. It's the combination of things that always made me put this > >>> off. Is there a function I can call to just shutdown the host instead > >>> of destroying it? > >> Not really ... the process of unbinding the ULDs causes their remove > >> methods to call shudown. It is possible to separate this in the ULDS; > >> but the original design was to make remove and shutdown be similar for > >> the very reason that if you're removing the driver with unflushed data > >> in the cache, we'd really like it flushed (flush is called from > >> shutdown) because you have no way to talk to the device after this > >> without reinserting the driver. > > > > The problem is that libata EH and other stuff aren't ready to let go of > > the SCSI host up until the last moment and that last moment can't be > > moved before SCSI host destruction because shutdown sequence (flush and > > spindown) requires live EH. I think this can be solved by shooting down > > individual sdev's instead of destroying the scsi_host. > > I'm curious how the picture would change, if we used a scsi_host for > each ata_host. It would probably make the whole paradigm a lot easier. Currently, if you look at the transport classes that do this type of thing, they shadow host and add port and other components as extra bits. libata does a rather strange thing trying to have one SCSI host per SATA port, so scsi_host and ata_host don't match up. Then on destruction you can just follow the standard SCSI teardown path. James -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html