merge by hand (scsi_device.h)
This commit is contained in:
@@ -295,6 +295,8 @@ struct scsi_lun {
|
||||
#define DID_PASSTHROUGH 0x0a /* Force command past mid-layer */
|
||||
#define DID_SOFT_ERROR 0x0b /* The low level driver just wish a retry */
|
||||
#define DID_IMM_RETRY 0x0c /* Retry without decrementing retry count */
|
||||
#define DID_REQUEUE 0x0d /* Requeue command (no immediate retry) also
|
||||
* without decrementing the retry count */
|
||||
#define DRIVER_OK 0x00 /* Driver status */
|
||||
|
||||
/*
|
||||
@@ -360,6 +362,15 @@ struct scsi_lun {
|
||||
#define sense_error(sense) ((sense) & 0xf)
|
||||
#define sense_valid(sense) ((sense) & 0x80);
|
||||
|
||||
/*
|
||||
* default timeouts
|
||||
*/
|
||||
#define FORMAT_UNIT_TIMEOUT (2 * 60 * 60 * HZ)
|
||||
#define START_STOP_TIMEOUT (60 * HZ)
|
||||
#define MOVE_MEDIUM_TIMEOUT (5 * 60 * HZ)
|
||||
#define READ_ELEMENT_STATUS_TIMEOUT (5 * 60 * HZ)
|
||||
#define READ_DEFECT_DATA_TIMEOUT (60 * HZ )
|
||||
|
||||
|
||||
#define IDENTIFY_BASE 0x80
|
||||
#define IDENTIFY(can_disconnect, lun) (IDENTIFY_BASE |\
|
||||
|
@@ -43,21 +43,17 @@ struct scsi_cmnd {
|
||||
void (*done) (struct scsi_cmnd *); /* Mid-level done function */
|
||||
|
||||
/*
|
||||
* A SCSI Command is assigned a nonzero serial_number when internal_cmnd
|
||||
* passes it to the driver's queue command function. The serial_number
|
||||
* is cleared when scsi_done is entered indicating that the command has
|
||||
* been completed. If a timeout occurs, the serial number at the moment
|
||||
* of timeout is copied into serial_number_at_timeout. By subsequently
|
||||
* comparing the serial_number and serial_number_at_timeout fields
|
||||
* during abort or reset processing, we can detect whether the command
|
||||
* has already completed. This also detects cases where the command has
|
||||
* completed and the SCSI Command structure has already being reused
|
||||
* for another command, so that we can avoid incorrectly aborting or
|
||||
* resetting the new command.
|
||||
* The serial number is only unique per host.
|
||||
* A SCSI Command is assigned a nonzero serial_number before passed
|
||||
* to the driver's queue command function. The serial_number is
|
||||
* cleared when scsi_done is entered indicating that the command
|
||||
* has been completed. It currently doesn't have much use other
|
||||
* than printk's. Some lldd's use this number for other purposes.
|
||||
* It's almost certain that such usages are either incorrect or
|
||||
* meaningless. Please kill all usages other than printk's. Also,
|
||||
* as this number is always identical to ->pid, please convert
|
||||
* printk's to use ->pid, so that we can kill this field.
|
||||
*/
|
||||
unsigned long serial_number;
|
||||
unsigned long serial_number_at_timeout;
|
||||
|
||||
int retries;
|
||||
int allowed;
|
||||
@@ -65,12 +61,6 @@ struct scsi_cmnd {
|
||||
int timeout_total;
|
||||
int timeout;
|
||||
|
||||
/*
|
||||
* We handle the timeout differently if it happens when a reset,
|
||||
* abort, etc are in process.
|
||||
*/
|
||||
unsigned volatile char internal_timeout;
|
||||
|
||||
unsigned char cmd_len;
|
||||
unsigned char old_cmd_len;
|
||||
enum dma_data_direction sc_data_direction;
|
||||
|
@@ -44,7 +44,8 @@ struct scsi_device {
|
||||
struct list_head same_target_siblings; /* just the devices sharing same target id */
|
||||
|
||||
/* this is now protected by the request_queue->queue_lock */
|
||||
volatile unsigned short device_busy; /* commands actually active on low-level */
|
||||
unsigned int device_busy; /* commands actually active on
|
||||
* low-level. protected by queue_lock. */
|
||||
spinlock_t list_lock;
|
||||
struct list_head cmd_list; /* queue of in use SCSI Command structures */
|
||||
struct list_head starved_entry;
|
||||
|
@@ -448,8 +448,14 @@ struct Scsi_Host {
|
||||
wait_queue_head_t host_wait;
|
||||
struct scsi_host_template *hostt;
|
||||
struct scsi_transport_template *transportt;
|
||||
volatile unsigned short host_busy; /* commands actually active on low-level */
|
||||
volatile unsigned short host_failed; /* commands that failed. */
|
||||
|
||||
/*
|
||||
* The following two fields are protected with host_lock;
|
||||
* however, eh routines can safely access during eh processing
|
||||
* without acquiring the lock.
|
||||
*/
|
||||
unsigned int host_busy; /* commands actually active on low-level */
|
||||
unsigned int host_failed; /* commands that failed. */
|
||||
|
||||
unsigned short host_no; /* Used for IOCTL_GET_IDLUN, /proc/scsi et al. */
|
||||
int resetting; /* if set, it means that last_reset is a valid value */
|
||||
|
Reference in New Issue
Block a user