root/include/scsi/scsi_dh.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. scsi_dh_activate
  2. scsi_dh_attach
  3. scsi_dh_attached_handler_name
  4. scsi_dh_set_params

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * Header file for SCSI device handler infrastruture.
   4  *
   5  * Modified version of patches posted by Mike Christie <michaelc@cs.wisc.edu>
   6  *
   7  * Copyright IBM Corporation, 2007
   8  *      Authors:
   9  *               Chandra Seetharaman <sekharan@us.ibm.com>
  10  *               Mike Anderson <andmike@linux.vnet.ibm.com>
  11  */
  12 
  13 #include <scsi/scsi_device.h>
  14 
  15 enum {
  16         SCSI_DH_OK = 0,
  17         /*
  18          * device errors
  19          */
  20         SCSI_DH_DEV_FAILED,     /* generic device error */
  21         SCSI_DH_DEV_TEMP_BUSY,
  22         SCSI_DH_DEV_UNSUPP,     /* device handler not supported */
  23         SCSI_DH_DEVICE_MAX,     /* max device blkerr definition */
  24 
  25         /*
  26          * transport errors
  27          */
  28         SCSI_DH_NOTCONN = SCSI_DH_DEVICE_MAX + 1,
  29         SCSI_DH_CONN_FAILURE,
  30         SCSI_DH_TRANSPORT_MAX,  /* max transport blkerr definition */
  31 
  32         /*
  33          * driver and generic errors
  34          */
  35         SCSI_DH_IO = SCSI_DH_TRANSPORT_MAX + 1, /* generic error */
  36         SCSI_DH_INVALID_IO,
  37         SCSI_DH_RETRY,          /* retry the req, but not immediately */
  38         SCSI_DH_IMM_RETRY,      /* immediately retry the req */
  39         SCSI_DH_TIMED_OUT,
  40         SCSI_DH_RES_TEMP_UNAVAIL,
  41         SCSI_DH_DEV_OFFLINED,
  42         SCSI_DH_NOMEM,
  43         SCSI_DH_NOSYS,
  44         SCSI_DH_DRIVER_MAX,
  45 };
  46 
  47 typedef void (*activate_complete)(void *, int);
  48 struct scsi_device_handler {
  49         /* Used by the infrastructure */
  50         struct list_head list; /* list of scsi_device_handlers */
  51 
  52         /* Filled by the hardware handler */
  53         struct module *module;
  54         const char *name;
  55         int (*check_sense)(struct scsi_device *, struct scsi_sense_hdr *);
  56         int (*attach)(struct scsi_device *);
  57         void (*detach)(struct scsi_device *);
  58         int (*activate)(struct scsi_device *, activate_complete, void *);
  59         blk_status_t (*prep_fn)(struct scsi_device *, struct request *);
  60         int (*set_params)(struct scsi_device *, const char *);
  61         void (*rescan)(struct scsi_device *);
  62 };
  63 
  64 #ifdef CONFIG_SCSI_DH
  65 extern int scsi_dh_activate(struct request_queue *, activate_complete, void *);
  66 extern int scsi_dh_attach(struct request_queue *, const char *);
  67 extern const char *scsi_dh_attached_handler_name(struct request_queue *, gfp_t);
  68 extern int scsi_dh_set_params(struct request_queue *, const char *);
  69 #else
  70 static inline int scsi_dh_activate(struct request_queue *req,
  71                                         activate_complete fn, void *data)
  72 {
  73         fn(data, 0);
  74         return 0;
  75 }
  76 static inline int scsi_dh_attach(struct request_queue *req, const char *name)
  77 {
  78         return SCSI_DH_NOSYS;
  79 }
  80 static inline const char *scsi_dh_attached_handler_name(struct request_queue *q,
  81                                                         gfp_t gfp)
  82 {
  83         return NULL;
  84 }
  85 static inline int scsi_dh_set_params(struct request_queue *req, const char *params)
  86 {
  87         return -SCSI_DH_NOSYS;
  88 }
  89 #endif

/* [<][>][^][v][top][bottom][index][help] */