Blame view
include/scsi/scsi_dh.h
3.16 KB
a6a8d9f87 [SCSI] scsi_dh: a... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/* * Header file for SCSI device handler infrastruture. * * Modified version of patches posted by Mike Christie <michaelc@cs.wisc.edu> * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * Copyright IBM Corporation, 2007 * Authors: * Chandra Seetharaman <sekharan@us.ibm.com> * Mike Anderson <andmike@linux.vnet.ibm.com> */ #include <scsi/scsi_device.h> enum { SCSI_DH_OK = 0, /* * device errors */ SCSI_DH_DEV_FAILED, /* generic device error */ SCSI_DH_DEV_TEMP_BUSY, |
b6ff1b14c [SCSI] scsi_dh: U... |
35 |
SCSI_DH_DEV_UNSUPP, /* device handler not supported */ |
a6a8d9f87 [SCSI] scsi_dh: a... |
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
SCSI_DH_DEVICE_MAX, /* max device blkerr definition */ /* * transport errors */ SCSI_DH_NOTCONN = SCSI_DH_DEVICE_MAX + 1, SCSI_DH_CONN_FAILURE, SCSI_DH_TRANSPORT_MAX, /* max transport blkerr definition */ /* * driver and generic errors */ SCSI_DH_IO = SCSI_DH_TRANSPORT_MAX + 1, /* generic error */ SCSI_DH_INVALID_IO, SCSI_DH_RETRY, /* retry the req, but not immediately */ SCSI_DH_IMM_RETRY, /* immediately retry the req */ SCSI_DH_TIMED_OUT, SCSI_DH_RES_TEMP_UNAVAIL, SCSI_DH_DEV_OFFLINED, |
43394c67f scsi_dh_alua: Use... |
55 |
SCSI_DH_NOMEM, |
a6a8d9f87 [SCSI] scsi_dh: a... |
56 57 58 |
SCSI_DH_NOSYS, SCSI_DH_DRIVER_MAX, }; |
ee14c674e scsi_dh: kill str... |
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
typedef void (*activate_complete)(void *, int); struct scsi_device_handler { /* Used by the infrastructure */ struct list_head list; /* list of scsi_device_handlers */ /* Filled by the hardware handler */ struct module *module; const char *name; int (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *); int (*attach)(struct scsi_device *); void (*detach)(struct scsi_device *); int (*activate)(struct scsi_device *, activate_complete, void *); int (*prep_fn)(struct scsi_device *, struct request *); int (*set_params)(struct scsi_device *, const char *); |
d3d328919 scsi_dh: add 'res... |
74 |
void (*rescan)(struct scsi_device *); |
ee14c674e scsi_dh: kill str... |
75 |
}; |
086b91d05 scsi_dh: integrat... |
76 |
#ifdef CONFIG_SCSI_DH |
3ae31f6a7 [SCSI] scsi_dh: C... |
77 |
extern int scsi_dh_activate(struct request_queue *, activate_complete, void *); |
ae11b1b36 [SCSI] scsi_dh: a... |
78 |
extern int scsi_dh_attach(struct request_queue *, const char *); |
7e8a74b17 [SCSI] scsi_dh: a... |
79 |
extern const char *scsi_dh_attached_handler_name(struct request_queue *, gfp_t); |
18ee70c9d [SCSI] scsi_dh: a... |
80 |
extern int scsi_dh_set_params(struct request_queue *, const char *); |
fe9233fb6 [SCSI] scsi_dh: f... |
81 |
#else |
3ae31f6a7 [SCSI] scsi_dh: C... |
82 83 |
static inline int scsi_dh_activate(struct request_queue *req, activate_complete fn, void *data) |
fe9233fb6 [SCSI] scsi_dh: f... |
84 |
{ |
3ae31f6a7 [SCSI] scsi_dh: C... |
85 |
fn(data, 0); |
fe9233fb6 [SCSI] scsi_dh: f... |
86 87 |
return 0; } |
ae11b1b36 [SCSI] scsi_dh: a... |
88 89 90 91 |
static inline int scsi_dh_attach(struct request_queue *req, const char *name) { return SCSI_DH_NOSYS; } |
7e8a74b17 [SCSI] scsi_dh: a... |
92 93 94 95 96 |
static inline const char *scsi_dh_attached_handler_name(struct request_queue *q, gfp_t gfp) { return NULL; } |
18ee70c9d [SCSI] scsi_dh: a... |
97 98 99 100 |
static inline int scsi_dh_set_params(struct request_queue *req, const char *params) { return -SCSI_DH_NOSYS; } |
fe9233fb6 [SCSI] scsi_dh: f... |
101 |
#endif |