summaryrefslogtreecommitdiffstats
path: root/include/scsi/scsi.h
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@steeleye.com>2006-02-14 17:42:07 +0100
committer <jejb@mulgrave.il.steeleye.com>2006-02-14 18:14:26 +0100
commitfaead26d7a06605add627f29aee73ba654ce11f9 (patch)
treecd809c6e5601caefb66e614ee1f06417819d2151 /include/scsi/scsi.h
parent[SCSI] sym2: Mask off opcode from RBC (diff)
downloadlinux-faead26d7a06605add627f29aee73ba654ce11f9.tar.xz
linux-faead26d7a06605add627f29aee73ba654ce11f9.zip
[PATCH] add scsi_execute_in_process_context() API
We have several points in the SCSI stack (primarily for our device functions) where we need to guarantee process context, but (given the place where the last reference was released) we cannot guarantee this. This API gets around the issue by executing the function directly if the caller has process context, but scheduling a workqueue to execute in process context if the caller doesn't have it. Unfortunately, it requires memory allocation in interrupt context, but it's better than what we have previously. The true solution will require a bit of re-engineering, so isn't appropriate for 2.6.16. Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'include/scsi/scsi.h')
-rw-r--r--include/scsi/scsi.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h
index c60b8ff2f5e4..9c331258bc27 100644
--- a/include/scsi/scsi.h
+++ b/include/scsi/scsi.h
@@ -433,4 +433,6 @@ struct scsi_lun {
/* Used to obtain the PCI location of a device */
#define SCSI_IOCTL_GET_PCI 0x5387
+int scsi_execute_in_process_context(void (*fn)(void *data), void *data);
+
#endif /* _SCSI_SCSI_H */