]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/scsi/scsi_device.h
leds/acpi: Fix merge fallout from acpi_driver_data change
[linux-2.6-omap-h63xx.git] / include / scsi / scsi_device.h
index 80b2e93c29360887eb55f65afd543c76e5b225cf..a37a8148a31033970c3d5cd52905f324a140c41a 100644 (file)
@@ -42,9 +42,11 @@ enum scsi_device_state {
                                 * originate in the mid-layer) */
        SDEV_OFFLINE,           /* Device offlined (by error handling or
                                 * user request */
-       SDEV_BLOCK,             /* Device blocked by scsi lld.  No scsi 
-                                * commands from user or midlayer should be issued
-                                * to the scsi lld. */
+       SDEV_BLOCK,             /* Device blocked by scsi lld.  No
+                                * scsi commands from user or midlayer
+                                * should be issued to the scsi
+                                * lld. */
+       SDEV_CREATED_BLOCK,     /* same as above but for created devices */
 };
 
 enum scsi_device_event {
@@ -236,6 +238,16 @@ struct scsi_target {
                                                 * for the device at a time. */
        unsigned int            pdt_1f_for_no_lun;      /* PDT = 0x1f */
                                                /* means no lun present */
+       /* commands actually active on LLD. protected by host lock. */
+       unsigned int            target_busy;
+       /*
+        * LLDs should set this in the slave_alloc host template callout.
+        * If set to zero then there is not limit.
+        */
+       unsigned int            can_queue;
+       unsigned int            target_blocked;
+       unsigned int            max_target_blocked;
+#define SCSI_DEFAULT_TARGET_BLOCKED    3
 
        char                    scsi_level;
        struct execute_work     ew;
@@ -384,10 +396,23 @@ static inline unsigned int sdev_id(struct scsi_device *sdev)
 #define scmd_id(scmd) sdev_id((scmd)->device)
 #define scmd_channel(scmd) sdev_channel((scmd)->device)
 
+/*
+ * checks for positions of the SCSI state machine
+ */
 static inline int scsi_device_online(struct scsi_device *sdev)
 {
        return sdev->sdev_state != SDEV_OFFLINE;
 }
+static inline int scsi_device_blocked(struct scsi_device *sdev)
+{
+       return sdev->sdev_state == SDEV_BLOCK ||
+               sdev->sdev_state == SDEV_CREATED_BLOCK;
+}
+static inline int scsi_device_created(struct scsi_device *sdev)
+{
+       return sdev->sdev_state == SDEV_CREATED ||
+               sdev->sdev_state == SDEV_CREATED_BLOCK;
+}
 
 /* accessor functions for the SCSI parameters */
 static inline int scsi_device_sync(struct scsi_device *sdev)