/* * 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, SCSI_DH_DEV_UNSUPP, /* device handler not supported */ 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, SCSI_DH_NOMEM, SCSI_DH_NOSYS, SCSI_DH_DRIVER_MAX, }; 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 *); void (*rescan)(struct scsi_device *); }; #ifdef CONFIG_SCSI_DH extern int scsi_dh_activate(struct request_queue *, activate_complete, void *); extern int scsi_dh_attach(struct request_queue *, const char *); extern const char *scsi_dh_attached_handler_name(struct request_queue *, gfp_t); extern int scsi_dh_set_params(struct request_queue *, const char *); #else static inline int scsi_dh_activate(struct request_queue *req, activate_complete fn, void *data) { fn(data, 0); return 0; } static inline int scsi_dh_attach(struct request_queue *req, const char *name) { return SCSI_DH_NOSYS; } static inline const char *scsi_dh_attached_handler_name(struct request_queue *q, gfp_t gfp) { return NULL; } static inline int scsi_dh_set_params(struct request_queue *req, const char *params) { return -SCSI_DH_NOSYS; } #endif
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
fc | Folder | 0755 |
|
|
fc_encode.h | File | 21.64 KB | 0644 |
|
fc_frame.h | File | 6.9 KB | 0644 |
|
fcoe_sysfs.h | File | 3.75 KB | 0644 |
|
iscsi_if.h | File | 26.07 KB | 0644 |
|
iscsi_proto.h | File | 16.06 KB | 0644 |
|
iser.h | File | 2.34 KB | 0644 |
|
libfc.h | File | 31.71 KB | 0644 |
|
libfcoe.h | File | 14 KB | 0644 |
|
libiscsi.h | File | 14.36 KB | 0644 |
|
libiscsi_tcp.h | File | 4.32 KB | 0644 |
|
libsas.h | File | 18.53 KB | 0644 |
|
osd_attributes.h | File | 15.05 KB | 0644 |
|
osd_initiator.h | File | 16.26 KB | 0644 |
|
osd_ore.h | File | 5.36 KB | 0644 |
|
osd_protocol.h | File | 17.57 KB | 0644 |
|
osd_sec.h | File | 1.48 KB | 0644 |
|
osd_sense.h | File | 9.89 KB | 0644 |
|
osd_types.h | File | 1020 B | 0644 |
|
sas.h | File | 13.22 KB | 0644 |
|
sas_ata.h | File | 2.73 KB | 0644 |
|
scsi.h | File | 8.8 KB | 0644 |
|
scsi_bsg_iscsi.h | File | 2.83 KB | 0644 |
|
scsi_cmnd.h | File | 9.62 KB | 0644 |
|
scsi_common.h | File | 2.27 KB | 0644 |
|
scsi_dbg.h | File | 2.19 KB | 0644 |
|
scsi_device.h | File | 20.49 KB | 0644 |
|
scsi_devinfo.h | File | 2.51 KB | 0644 |
|
scsi_dh.h | File | 3.16 KB | 0644 |
|
scsi_driver.h | File | 859 B | 0644 |
|
scsi_eh.h | File | 1.64 KB | 0644 |
|
scsi_host.h | File | 27.58 KB | 0644 |
|
scsi_ioctl.h | File | 1.25 KB | 0644 |
|
scsi_proto.h | File | 10.67 KB | 0644 |
|
scsi_request.h | File | 667 B | 0644 |
|
scsi_tcq.h | File | 1.03 KB | 0644 |
|
scsi_transport.h | File | 3.22 KB | 0644 |
|
scsi_transport_fc.h | File | 26.47 KB | 0644 |
|
scsi_transport_iscsi.h | File | 17.25 KB | 0644 |
|
scsi_transport_sas.h | File | 6.79 KB | 0644 |
|
scsi_transport_spi.h | File | 7.2 KB | 0644 |
|
scsi_transport_srp.h | File | 4.77 KB | 0644 |
|
scsicam.h | File | 713 B | 0644 |
|
sg.h | File | 12.13 KB | 0644 |
|
srp.h | File | 6.1 KB | 0644 |
|
viosrp.h | File | 6.07 KB | 0644 |
|