The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/biovar.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: biovar.h,v 1.46 2020/06/07 16:51:43 kn Exp $  */
    2 
    3 /*
    4  * Copyright (c) 2002 Niklas Hallqvist.  All rights reserved.
    5  * Copyright (c) 2005 Marco Peereboom.  All rights reserved.
    6  * Copyright (c) 2012 Joel Sing <jsing@openbsd.org>.  All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
   18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
   21  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
   22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
   23  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
   24  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
   25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
   26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27  */
   28 
   29 #ifndef _SYS_DEV_BIOVAR_H_
   30 #define _SYS_DEV_BIOVAR_H_
   31 
   32 /*
   33  * Devices getting ioctls through this interface should use ioctl class 'B'
   34  * and command numbers starting from 32, lower ones are reserved for generic
   35  * ioctls. All ioctl data must be structures which start with a struct bio.
   36  */
   37 
   38 #include <sys/types.h>
   39 
   40 #define BIO_MSG_COUNT   5
   41 #define BIO_MSG_LEN     128
   42 
   43 struct bio_msg {
   44         int             bm_type;
   45 #define BIO_MSG_INFO    1
   46 #define BIO_MSG_WARN    2
   47 #define BIO_MSG_ERROR   3
   48         char            bm_msg[BIO_MSG_LEN];
   49 };
   50 
   51 struct bio_status {
   52         char            bs_controller[16];
   53         int             bs_status;
   54 #define BIO_STATUS_UNKNOWN      0
   55 #define BIO_STATUS_SUCCESS      1
   56 #define BIO_STATUS_ERROR        2
   57         int             bs_msg_count;
   58         struct bio_msg  bs_msgs[BIO_MSG_COUNT];
   59 };
   60 
   61 struct bio {
   62         void                    *bio_cookie;
   63         struct bio_status       bio_status;
   64 };
   65 
   66 /* convert name to a cookie */
   67 #define BIOCLOCATE _IOWR('B', 0, struct bio_locate)
   68 struct bio_locate {
   69         struct bio      bl_bio;
   70         char            *bl_name;
   71 };
   72 
   73 #define BIOCINQ _IOWR('B', 32, struct bioc_inq)
   74 struct bioc_inq {
   75         struct bio      bi_bio;
   76 
   77         char            bi_dev[16];     /* controller device */
   78         int             bi_novol;       /* nr of volumes */
   79         int             bi_nodisk;      /* nr of total disks */
   80 };
   81 
   82 #define BIOCDISK _IOWR('B', 33, struct bioc_disk)
   83 /* structure that represents a disk in a RAID volume */
   84 struct bioc_disk {
   85         struct bio      bd_bio;
   86 
   87         u_int16_t       bd_channel;
   88         u_int16_t       bd_target;
   89         u_int16_t       bd_lun;
   90         u_int16_t       bd_other_id;    /* unused for now  */
   91 
   92         int             bd_volid;       /* associate with volume */
   93         int             bd_diskid;      /* virtual disk */
   94         int             bd_status;      /* current status */
   95 #define BIOC_SDONLINE           0x00
   96 #define BIOC_SDONLINE_S         "Online"
   97 #define BIOC_SDOFFLINE          0x01
   98 #define BIOC_SDOFFLINE_S        "Offline"
   99 #define BIOC_SDFAILED           0x02
  100 #define BIOC_SDFAILED_S         "Failed"
  101 #define BIOC_SDREBUILD          0x03
  102 #define BIOC_SDREBUILD_S        "Rebuild"
  103 #define BIOC_SDHOTSPARE         0x04
  104 #define BIOC_SDHOTSPARE_S       "Hot spare"
  105 #define BIOC_SDUNUSED           0x05
  106 #define BIOC_SDUNUSED_S         "Unused"
  107 #define BIOC_SDSCRUB            0x06
  108 #define BIOC_SDSCRUB_S          "Scrubbing"
  109 #define BIOC_SDINVALID          0xff
  110 #define BIOC_SDINVALID_S        "Invalid"
  111         uint64_t        bd_size;        /* size of the disk */
  112 
  113         char            bd_vendor[32];  /* scsi string */
  114         char            bd_serial[32];  /* serial number */
  115         char            bd_procdev[16]; /* processor device */
  116 
  117         struct {
  118                 int             bdp_percent;
  119                 int             bdp_seconds;
  120         }               bd_patrol;
  121 };
  122 
  123 #define BIOCVOL _IOWR('B', 34, struct bioc_vol)
  124 /* structure that represents a RAID volume */
  125 struct bioc_vol {
  126         struct bio      bv_bio;
  127         int             bv_volid;       /* volume id */
  128 
  129         int16_t         bv_percent;     /* percent done operation */
  130         u_int16_t       bv_seconds;     /* seconds of progress so far */
  131 
  132         int             bv_status;      /* current status */
  133 #define BIOC_SVONLINE           0x00
  134 #define BIOC_SVONLINE_S         "Online"
  135 #define BIOC_SVOFFLINE          0x01
  136 #define BIOC_SVOFFLINE_S        "Offline"
  137 #define BIOC_SVDEGRADED         0x02
  138 #define BIOC_SVDEGRADED_S       "Degraded"
  139 #define BIOC_SVBUILDING         0x03
  140 #define BIOC_SVBUILDING_S       "Building"
  141 #define BIOC_SVSCRUB            0x04
  142 #define BIOC_SVSCRUB_S          "Scrubbing"
  143 #define BIOC_SVREBUILD          0x05
  144 #define BIOC_SVREBUILD_S        "Rebuild"
  145 #define BIOC_SVINVALID          0xff
  146 #define BIOC_SVINVALID_S        "Invalid"
  147         uint64_t        bv_size;        /* size of the disk */
  148         int             bv_level;       /* raid level */
  149         int             bv_nodisk;      /* nr of drives */
  150         int             bv_cache;       /* cache mode */
  151 #define BIOC_CVUNKNOWN          0x00
  152 #define BIOC_CVUNKNOWN_S        ""
  153 #define BIOC_CVWRITEBACK        0x01
  154 #define BIOC_CVWRITEBACK_S      "WB"
  155 #define BIOC_CVWRITETHROUGH     0x02
  156 #define BIOC_CVWRITETHROUGH_S   "WT"
  157 
  158         char            bv_dev[16];     /* device */
  159         char            bv_vendor[32];  /* scsi string */
  160 };
  161 
  162 #define BIOCALARM _IOWR('B', 35, struct bioc_alarm)
  163 struct bioc_alarm {
  164         struct bio      ba_bio;
  165         int             ba_opcode;
  166 
  167         int             ba_status;      /* only used with get state */
  168 #define BIOC_SADISABLE          0x00    /* disable alarm */
  169 #define BIOC_SAENABLE           0x01    /* enable alarm */
  170 #define BIOC_SASILENCE          0x02    /* silence alarm */
  171 #define BIOC_GASTATUS           0x03    /* get status */
  172 #define BIOC_SATEST             0x04    /* test alarm */
  173 };
  174 
  175 #define BIOCBLINK _IOWR('B', 36, struct bioc_blink)
  176 struct bioc_blink {
  177         struct bio      bb_bio;
  178         u_int16_t       bb_channel;
  179         u_int16_t       bb_target;
  180 
  181         int             bb_status;      /* current status */
  182 #define BIOC_SBUNBLINK          0x00    /* disable blinking */
  183 #define BIOC_SBBLINK            0x01    /* enable blink */
  184 #define BIOC_SBALARM            0x02    /* enable alarm blink */
  185 };
  186 
  187 #define BIOCSETSTATE _IOWR('B', 37, struct bioc_setstate)
  188 struct bioc_setstate {
  189         struct bio      bs_bio;
  190         u_int16_t       bs_channel;
  191         u_int16_t       bs_target;
  192         u_int16_t       bs_lun;
  193         u_int16_t       bs_other_id_type; /* use other_id instead of ctl */
  194 #define BIOC_SSOTHER_UNUSED     0x00
  195 #define BIOC_SSOTHER_DEVT       0x01
  196         int             bs_other_id;    /* cram dev_t or other id in here */
  197 
  198         int             bs_status;      /* change to this status */
  199 #define BIOC_SSONLINE           0x00    /* online disk */
  200 #define BIOC_SSOFFLINE          0x01    /* offline disk */
  201 #define BIOC_SSHOTSPARE         0x02    /* mark as hotspare */
  202 #define BIOC_SSREBUILD          0x03    /* rebuild on this disk */
  203         int             bs_volid;       /* volume id for rebuild */
  204 };
  205 
  206 #define BIOCCREATERAID _IOWR('B', 38, struct bioc_createraid)
  207 struct bioc_createraid {
  208         struct bio      bc_bio;
  209         void            *bc_dev_list;
  210         u_int16_t       bc_dev_list_len;
  211         int32_t         bc_key_disk;
  212 #define BIOC_CRMAXLEN           1024
  213         u_int16_t       bc_level;
  214         u_int32_t       bc_flags;
  215 #define BIOC_SCFORCE            0x01    /* do not assemble, force create */
  216 #define BIOC_SCDEVT             0x02    /* dev_t array or string in dev_list */
  217 #define BIOC_SCNOAUTOASSEMBLE   0x04    /* do not assemble during autoconf */
  218 #define BIOC_SCBOOTABLE         0x08    /* device is bootable */
  219         u_int32_t       bc_opaque_size;
  220         u_int32_t       bc_opaque_flags;
  221 #define BIOC_SOINVALID          0x00    /* no opaque pointer */
  222 #define BIOC_SOIN               0x01    /* kernel perspective direction */
  223 #define BIOC_SOOUT              0x02    /* kernel perspective direction */
  224         u_int32_t       bc_opaque_status;
  225 #define BIOC_SOINOUT_FAILED     0x00    /* operation failed */
  226 #define BIOC_SOINOUT_OK         0x01    /* operation succeeded */
  227         void            *bc_opaque;
  228 };
  229 
  230 #define BIOCDELETERAID _IOWR('B', 39, struct bioc_deleteraid)
  231 struct bioc_deleteraid {
  232         struct bio      bd_bio;
  233         u_int32_t       bd_flags;
  234 #define BIOC_SDCLEARMETA        0x01    /* clear metadata region */
  235         char            bd_dev[16];     /* device */
  236 };
  237 
  238 #define BIOCDISCIPLINE _IOWR('B', 40, struct bioc_discipline)
  239 struct bioc_discipline {
  240         struct bio      bd_bio;
  241         char            bd_dev[16];
  242         u_int32_t       bd_cmd;
  243         u_int32_t       bd_size;
  244         void            *bd_data;
  245 };
  246 
  247 #define BIOCINSTALLBOOT _IOWR('B', 41, struct bioc_installboot)
  248 struct bioc_installboot {
  249         struct bio      bb_bio;
  250         char            bb_dev[16];
  251         void            *bb_bootblk;
  252         void            *bb_bootldr;
  253         u_int32_t       bb_bootblk_size;
  254         u_int32_t       bb_bootldr_size;
  255 };
  256 
  257 #define BIOCPATROL _IOWR('B', 42, struct bioc_patrol)
  258 struct bioc_patrol {
  259         struct bio      bp_bio;
  260         int             bp_opcode;
  261 #define BIOC_SPSTOP             0x00    /* stop patrol */
  262 #define BIOC_SPSTART            0x01    /* start patrol */
  263 #define BIOC_GPSTATUS           0x02    /* get status */
  264 #define BIOC_SPDISABLE          0x03    /* disable patrol */
  265 #define BIOC_SPAUTO             0x04    /* enable patrol as auto */
  266 #define BIOC_SPMANUAL           0x05    /* enable patrol as manual */
  267 
  268         int             bp_mode;
  269 #define BIOC_SPMAUTO            0x00
  270 #define BIOC_SPMMANUAL          0x01
  271 #define BIOC_SPMDISABLED        0x02
  272         int             bp_status;      /* only used with get state */
  273 #define BIOC_SPSSTOPPED         0x00
  274 #define BIOC_SPSREADY           0x01
  275 #define BIOC_SPSACTIVE          0x02
  276 #define BIOC_SPSABORTED         0xff
  277 
  278         int             bp_autoival;
  279         int             bp_autonext;
  280         int             bp_autonow;
  281 };
  282 
  283 /* kernel and userspace defines */
  284 #define BIOC_INQ                0x0001
  285 #define BIOC_DISK               0x0002
  286 #define BIOC_VOL                0x0004
  287 #define BIOC_ALARM              0x0008
  288 #define BIOC_BLINK              0x0010
  289 #define BIOC_SETSTATE           0x0020
  290 #define BIOC_CREATERAID         0x0040
  291 #define BIOC_DELETERAID         0x0080
  292 #define BIOC_DISCIPLINE         0x0100
  293 #define BIOC_INSTALLBOOT        0x0200
  294 #define BIOC_PATROL             0x0400
  295 
  296 /* user space defines */
  297 #define BIOC_DEVLIST            0x10000
  298 
  299 #ifdef _KERNEL
  300 int     bio_register(struct device *, int (*)(struct device *, u_long,
  301             caddr_t));
  302 void    bio_unregister(struct device *);
  303 
  304 void    bio_status_init(struct bio_status *, struct device *);
  305 void    bio_status(struct bio_status *, int, int, const char *, va_list *);
  306 
  307 void    bio_info(struct bio_status *, int, const char *, ...);
  308 void    bio_warn(struct bio_status *, int, const char *, ...);
  309 void    bio_error(struct bio_status *, int, const char *, ...);
  310 #endif
  311 
  312 #endif /* _SYS_DEV_BIOVAR_H_ */

Cache object: 2044343257a4f5f6507a6a870199bd4a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.