Home | History | Annotate | Line # | Download | only in dm
netbsd-dm.h revision 1.6.40.1
      1  1.6.40.1  skrll /*        $NetBSD: netbsd-dm.h,v 1.6.40.1 2015/09/22 12:05:57 skrll Exp $      */
      2       1.2   haad 
      3       1.2   haad /*
      4       1.2   haad  * Copyright (c) 2008 The NetBSD Foundation, Inc.
      5       1.2   haad  * All rights reserved.
      6       1.2   haad  *
      7       1.2   haad  * This code is derived from software contributed to The NetBSD Foundation
      8       1.2   haad  * by Adam Hamsik.
      9       1.2   haad  *
     10       1.2   haad  * Redistribution and use in source and binary forms, with or without
     11       1.2   haad  * modification, are permitted provided that the following conditions
     12       1.2   haad  * are met:
     13       1.2   haad  * 1. Redistributions of source code must retain the above copyright
     14       1.2   haad  *    notice, this list of conditions and the following disclaimer.
     15       1.2   haad  * 2. Redistributions in binary form must reproduce the above copyright
     16       1.2   haad  *    notice, this list of conditions and the following disclaimer in the
     17       1.2   haad  *    documentation and/or other materials provided with the distribution.
     18       1.2   haad  *
     19       1.2   haad  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20       1.2   haad  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21       1.2   haad  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22       1.2   haad  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23       1.2   haad  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24       1.2   haad  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25       1.2   haad  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26       1.2   haad  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27       1.2   haad  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28       1.2   haad  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29       1.2   haad  * POSSIBILITY OF SUCH DAMAGE.
     30       1.2   haad  */
     31       1.2   haad 
     32       1.2   haad #ifndef __NETBSD_DM_H__
     33       1.2   haad #define __NETBSD_DM_H__
     34       1.2   haad 
     35  1.6.40.1  skrll #include <sys/ioccom.h>
     36       1.2   haad #include <prop/proplib.h>
     37       1.2   haad 
     38       1.2   haad #define DM_CMD_LEN 16
     39       1.2   haad 
     40       1.2   haad #define DM_IOCTL 0xfd
     41       1.2   haad 
     42       1.2   haad #define DM_IOCTL_CMD 0
     43       1.2   haad 
     44       1.2   haad #define NETBSD_DM_IOCTL       _IOWR(DM_IOCTL, DM_IOCTL_CMD, struct plistref)
     45       1.2   haad 
     46       1.2   haad 
     47       1.2   haad /*
     48       1.2   haad  * DM-ioctl dictionary.
     49       1.2   haad  *
     50       1.2   haad  * This contains general information about dm device.
     51       1.2   haad  *
     52       1.2   haad  * <dict>
     53       1.2   haad  *     <key>command</key>
     54       1.2   haad  *     <string>...</string>
     55       1.2   haad  *
     56       1.2   haad  *     <key>event_nr</key>
     57       1.2   haad  *     <integer>...</integer>
     58       1.2   haad  *
     59       1.2   haad  *     <key>name</key>
     60       1.2   haad  *     <string>...</string>
     61       1.2   haad  *
     62       1.2   haad  *     <key>uuid</key>
     63       1.2   haad  *     <string>...</string>
     64       1.2   haad  *
     65       1.2   haad  *     <key>dev</key>
     66       1.2   haad  *     <integer></integer>
     67       1.2   haad  *
     68       1.2   haad  *     <key>flags</key>
     69       1.2   haad  *     <integer></integer>
     70       1.2   haad  *
     71       1.2   haad  *     <key>version</key>
     72       1.2   haad  *      <array>
     73       1.2   haad  *       <integer>...</integer>
     74       1.2   haad  *       <integer>...</integer>
     75       1.2   haad  *       <integer>...</integer>
     76       1.2   haad  *      </array>
     77       1.2   haad  *
     78       1.2   haad  *      <key>cmd_data</key>
     79       1.2   haad  *       <array>
     80       1.2   haad  *        <!-- See below for command
     81       1.2   haad  *             specific dictionaries -->
     82       1.2   haad  *       </array>
     83       1.2   haad  * </dict>
     84       1.2   haad  *
     85       1.2   haad  * Available commands from _cmd_data_v4.
     86       1.2   haad  *
     87       1.2   haad  * create, reload, remove, remove_all, suspend,
     88       1.2   haad  * resume, info, deps, rename, version, status,
     89       1.2   haad  * table, waitevent, names, clear, mknodes,
     90       1.2   haad  * targets, message, setgeometry
     91       1.2   haad  *
     92       1.2   haad  */
     93       1.2   haad 
     94       1.2   haad /*
     95       1.2   haad  * DM_LIST_VERSIONS == "targets" command dictionary entry.
     96       1.2   haad  * Lists all available targets with their version.
     97       1.2   haad  *
     98       1.2   haad  * <array>
     99       1.2   haad  *   <dict>
    100       1.2   haad  *    <key>name<key>
    101       1.2   haad  *    <string>...</string>
    102       1.2   haad  *
    103       1.2   haad  *    <key>version</key>
    104       1.2   haad  *      <array>
    105       1.2   haad  *       <integer>...</integer>
    106       1.2   haad  *       <integer>...</integer>
    107       1.2   haad  *       <integer>...</integer>
    108       1.2   haad  *      </array>
    109       1.2   haad  *   </dict>
    110       1.2   haad  * </array>
    111       1.2   haad  *
    112       1.2   haad  */
    113       1.2   haad 
    114       1.2   haad /*
    115       1.2   haad  * DM_DEV_LIST == "names"
    116       1.2   haad  * Request list of device-mapper created devices from kernel.
    117       1.2   haad  *
    118       1.2   haad  * <array>
    119       1.2   haad  *   <dict>
    120       1.2   haad  *    <key>name<key>
    121       1.2   haad  *    <string>...</string>
    122       1.2   haad  *
    123       1.2   haad  *    <key>dev</key>
    124       1.2   haad  *    <integer>...</integer>
    125       1.2   haad  *   </dict>
    126       1.2   haad  * </array>
    127       1.2   haad  *
    128       1.2   haad  * dev is uint64_t
    129       1.2   haad  *
    130       1.2   haad  */
    131       1.2   haad 
    132       1.2   haad  /*
    133       1.2   haad   * DM_DEV_RENAME == "rename"
    134       1.2   haad   * Rename device to string.
    135       1.2   haad   *
    136       1.2   haad   * <array>
    137       1.2   haad   *    <string>...</string>
    138       1.2   haad   * </array>
    139       1.2   haad   *
    140       1.2   haad   */
    141       1.2   haad 
    142       1.2   haad  /*
    143       1.2   haad   * DM_DEV_STATUS == "info, mknodes"
    144       1.2   haad   * Will change fields DM_IOCTL_OPEN, DM_IOCTL_DEV in received dictionary,
    145       1.2   haad   * with dm device values with name or uuid from list.
    146       1.2   haad   *
    147       1.2   haad   */
    148       1.2   haad 
    149       1.2   haad  /*
    150       1.2   haad   * DM_TABLE_STATUS == "status,table"
    151       1.2   haad   * Request list of device-mapper created devices from kernel.
    152       1.2   haad   *
    153       1.2   haad   * <array>
    154       1.2   haad   *   <dict>
    155       1.2   haad   *    <key>type<key>
    156       1.2   haad   *    <string>...</string>
    157       1.2   haad   *
    158       1.2   haad   *    <key>start</key>
    159       1.2   haad   *    <integer>...</integer>
    160       1.2   haad   *
    161       1.2   haad   *    <key>length</key>
    162       1.2   haad   *    <integer>...</integer>
    163       1.2   haad   *
    164       1.2   haad   *    <key>params</key>
    165       1.2   haad   *    <string>...</string>
    166       1.2   haad   *   </dict>
    167       1.2   haad   * </array>
    168       1.2   haad   *
    169       1.2   haad   * params is string which contains {device} {parameters}
    170       1.2   haad   *
    171       1.2   haad   */
    172       1.2   haad 
    173       1.2   haad  /*
    174       1.2   haad   * DM_TABLE_DEPS == "deps"
    175       1.2   haad   * Request list active table device dependiences.
    176       1.2   haad   *
    177       1.2   haad   * This command is also run to get dm-device
    178       1.2   haad   * dependiences for existing real block device.
    179       1.2   haad   *
    180       1.2   haad   * eg. vgcreate calls DM_TABLE_DEPS
    181       1.2   haad   *
    182       1.2   haad   * <array>
    183       1.2   haad   *   <integer>...</integer>
    184       1.2   haad   * </array>
    185       1.2   haad   *
    186       1.2   haad   */
    187       1.2   haad 
    188       1.3   haad 
    189       1.2   haad #define DM_IOCTL_COMMAND      "command"
    190       1.2   haad #define DM_IOCTL_VERSION      "version"
    191       1.2   haad #define DM_IOCTL_OPEN         "open_count"
    192       1.2   haad #define DM_IOCTL_MINOR        "minor"
    193       1.2   haad #define DM_IOCTL_NAME         "name"
    194       1.2   haad #define DM_IOCTL_UUID         "uuid"
    195       1.2   haad #define DM_IOCTL_TARGET_COUNT "target_count"
    196       1.2   haad #define DM_IOCTL_EVENT        "event_nr"
    197       1.2   haad #define DM_IOCTL_FLAGS        "flags"
    198       1.2   haad #define DM_IOCTL_CMD_DATA     "cmd_data"
    199       1.2   haad 
    200       1.2   haad #define DM_TARGETS_NAME       "name"
    201       1.2   haad #define DM_TARGETS_VERSION    "ver"
    202       1.2   haad 
    203       1.2   haad #define DM_DEV_NEWNAME        "newname"
    204       1.2   haad #define DM_DEV_NAME           "name"
    205       1.2   haad #define DM_DEV_DEV            "dev"
    206       1.2   haad 
    207       1.2   haad #define DM_TABLE_TYPE         "type"
    208       1.2   haad #define DM_TABLE_START        "start"
    209       1.2   haad #define DM_TABLE_STAT         "status"
    210       1.2   haad #define DM_TABLE_LENGTH       "length"
    211       1.2   haad #define DM_TABLE_PARAMS       "params"
    212       1.3   haad //#ifndef __LIB_DEVMAPPER__
    213       1.3   haad //#define DM_TABLE_DEPS         "deps"
    214       1.3   haad //#endif
    215       1.2   haad 
    216       1.2   haad /* Status bits */
    217       1.2   haad /* IO mode of device */
    218       1.2   haad #define DM_READONLY_FLAG	(1 << 0) /* In/Out *//* to kernel/from kernel */
    219       1.2   haad #define DM_SUSPEND_FLAG		(1 << 1) /* In/Out */
    220       1.2   haad /* XXX. This flag is undocumented. */
    221       1.2   haad #define DM_EXISTS_FLAG          (1 << 2) /* In/Out */
    222       1.2   haad /* Minor number is persistent */
    223       1.2   haad #define DM_PERSISTENT_DEV_FLAG	(1 << 3) /* In */
    224       1.2   haad 
    225       1.2   haad /*
    226       1.2   haad  * Flag passed into ioctl STATUS command to get table information
    227       1.2   haad  * rather than current status.
    228       1.2   haad  */
    229       1.2   haad #define DM_STATUS_TABLE_FLAG	(1 << 4) /* In */
    230       1.2   haad 
    231       1.2   haad /*
    232       1.2   haad  * Flags that indicate whether a table is present in either of
    233       1.2   haad  * the two table slots that a device has.
    234       1.2   haad  */
    235       1.2   haad #define DM_ACTIVE_PRESENT_FLAG   (1 << 5) /* Out */
    236       1.2   haad #define DM_INACTIVE_PRESENT_FLAG (1 << 6) /* Out */
    237       1.2   haad 
    238       1.2   haad /*
    239       1.2   haad  * Indicates that the buffer passed in wasn't big enough for the
    240       1.2   haad  * results.
    241       1.2   haad  */
    242       1.2   haad #define DM_BUFFER_FULL_FLAG	(1 << 8) /* Out */
    243       1.2   haad 
    244       1.2   haad /*
    245       1.2   haad  * This flag is now ignored.
    246       1.2   haad  */
    247       1.2   haad #define DM_SKIP_BDGET_FLAG	(1 << 9) /* In */
    248       1.2   haad 
    249       1.2   haad /*
    250       1.2   haad  * Set this to avoid attempting to freeze any filesystem when suspending.
    251       1.2   haad  */
    252       1.2   haad #define DM_SKIP_LOCKFS_FLAG	(1 << 10) /* In */
    253       1.2   haad 
    254       1.2   haad /*
    255       1.2   haad  * Set this to suspend without flushing queued ios.
    256       1.2   haad  */
    257       1.2   haad #define DM_NOFLUSH_FLAG		(1 << 11) /* In */
    258       1.2   haad 
    259       1.6   haad /*
    260       1.6   haad  * If set, any table information returned will relate to the inactive
    261       1.6   haad  * table instead of the live one.  Always check DM_INACTIVE_PRESENT_FLAG
    262       1.6   haad  * is set before using the data returned.
    263       1.6   haad  */
    264       1.6   haad #define DM_QUERY_INACTIVE_TABLE_FLAG    (1 << 12) /* In */
    265       1.2   haad 
    266       1.2   haad #endif /* __NETBSD_DM_H__ */
    267