aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/scsi_sysfs.c
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@steeleye.com>2006-02-23 15:27:18 -0500
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2006-02-28 00:37:45 -0500
commitffedb4522571ac170f941678d138a31bc0884ab4 (patch)
tree996572da6cecf4295c730b13c959d5d19836a8c5 /drivers/scsi/scsi_sysfs.c
parent1fa44ecad2b86475e038aed81b0bf333fa484f8b (diff)
[SCSI] fix scsi process problems and clean up the target reap issues
In order to use the new execute_in_process_context() API, you have to provide it with the work storage, which I do in SCSI in scsi_device and scsi_target, but which also means that we can no longer queue up the target reaps, so instead I moved the target to a state model which allows target_alloc to detect if we've received a dying target and wait for it to be gone. Hopefully, this should also solve the target namespace race. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/scsi_sysfs.c')
-rw-r--r--drivers/scsi/scsi_sysfs.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c
index 902a5def8e62..89055494dfee 100644
--- a/drivers/scsi/scsi_sysfs.c
+++ b/drivers/scsi/scsi_sysfs.c
@@ -256,7 +256,9 @@ static void scsi_device_dev_release_usercontext(void *data)
256 256
257static void scsi_device_dev_release(struct device *dev) 257static void scsi_device_dev_release(struct device *dev)
258{ 258{
259 scsi_execute_in_process_context(scsi_device_dev_release_usercontext, dev); 259 struct scsi_device *sdp = to_scsi_device(dev);
260 execute_in_process_context(scsi_device_dev_release_usercontext, dev,
261 &sdp->ew);
260} 262}
261 263
262static struct class sdev_class = { 264static struct class sdev_class = {