diff options
author | James Bottomley <James.Bottomley@steeleye.com> | 2006-02-23 15:27:18 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-02-28 00:37:45 -0500 |
commit | ffedb4522571ac170f941678d138a31bc0884ab4 (patch) | |
tree | 996572da6cecf4295c730b13c959d5d19836a8c5 /drivers/scsi/scsi_sysfs.c | |
parent | 1fa44ecad2b86475e038aed81b0bf333fa484f8b (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.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_sysfs.c b/drivers/scsi/scsi_sysfs.c index 902a5def8e6..89055494dfe 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 | ||
257 | static void scsi_device_dev_release(struct device *dev) | 257 | static 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 | ||
262 | static struct class sdev_class = { | 264 | static struct class sdev_class = { |