Hello all,
I'm currently working on a project to get a true disk-hotplug subsystem
working in libata, experimenting with Promise SATA150 Tx2 Plus and
SATAII150 Tx2 Plus controllers.
I am very near a 'beta' release of my patches to this mailing list,
however, I have hit a stumbling block in the SCSI layer, which I'm
hoping someone can give me good suggestions for resolving.
The situation is as follows:
-> I unplug a disk from my controller.
-> An interrupt fires off telling me I've unplugged a disk.
-> I acknowledge the interrupt, add an entry to my workqueue to handle
the bottom half.
-> Bottom half kicks in, I need to call "scsi_remove_device" in order to
purge the information about this disk from the system.
HOWEVER, "scsi_remove_device", through a chain of functions, ends up
calling sd_shutdown, which attempts to synchronize the SCSI cache for my
disk. Well... bad plan, I've just unplugged the disk, it's gone.
So the system gets dazed and confused and locks up, timing out waiting
for the disk which isn't there.
If anyone has a suggestion as to a good (ie. acceptable by all parties)
solution to this problem, I'd love to hear it.
Thanks in advance,
Luke Kosewski
-
: 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