1 1.10 tkusumi /* $NetBSD: netbsd-dm.h,v 1.10 2019/12/06 16:46:14 tkusumi 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.7 dholland #include <sys/ioccom.h> 36 1.2 haad #include <prop/proplib.h> 37 1.2 haad 38 1.2 haad #define DM_IOCTL 0xfd 39 1.2 haad 40 1.2 haad #define DM_IOCTL_CMD 0 41 1.2 haad 42 1.2 haad #define NETBSD_DM_IOCTL _IOWR(DM_IOCTL, DM_IOCTL_CMD, struct plistref) 43 1.2 haad 44 1.2 haad 45 1.2 haad /* 46 1.2 haad * DM-ioctl dictionary. 47 1.2 haad * 48 1.2 haad * This contains general information about dm device. 49 1.2 haad * 50 1.2 haad * <dict> 51 1.2 haad * <key>command</key> 52 1.2 haad * <string>...</string> 53 1.2 haad * 54 1.2 haad * <key>event_nr</key> 55 1.2 haad * <integer>...</integer> 56 1.2 haad * 57 1.2 haad * <key>name</key> 58 1.2 haad * <string>...</string> 59 1.2 haad * 60 1.2 haad * <key>uuid</key> 61 1.2 haad * <string>...</string> 62 1.2 haad * 63 1.2 haad * <key>dev</key> 64 1.10 tkusumi * <integer></integer> 65 1.2 haad * 66 1.2 haad * <key>flags</key> 67 1.2 haad * <integer></integer> 68 1.2 haad * 69 1.2 haad * <key>version</key> 70 1.2 haad * <array> 71 1.2 haad * <integer>...</integer> 72 1.2 haad * <integer>...</integer> 73 1.2 haad * <integer>...</integer> 74 1.2 haad * </array> 75 1.2 haad * 76 1.2 haad * <key>cmd_data</key> 77 1.2 haad * <array> 78 1.2 haad * <!-- See below for command 79 1.2 haad * specific dictionaries --> 80 1.2 haad * </array> 81 1.2 haad * </dict> 82 1.2 haad * 83 1.2 haad * Available commands from _cmd_data_v4. 84 1.2 haad * 85 1.2 haad * create, reload, remove, remove_all, suspend, 86 1.2 haad * resume, info, deps, rename, version, status, 87 1.2 haad * table, waitevent, names, clear, mknodes, 88 1.2 haad * targets, message, setgeometry 89 1.2 haad * 90 1.2 haad */ 91 1.2 haad 92 1.2 haad /* 93 1.2 haad * DM_LIST_VERSIONS == "targets" command dictionary entry. 94 1.2 haad * Lists all available targets with their version. 95 1.2 haad * 96 1.2 haad * <array> 97 1.2 haad * <dict> 98 1.2 haad * <key>name<key> 99 1.2 haad * <string>...</string> 100 1.2 haad * 101 1.2 haad * <key>version</key> 102 1.2 haad * <array> 103 1.2 haad * <integer>...</integer> 104 1.2 haad * <integer>...</integer> 105 1.2 haad * <integer>...</integer> 106 1.2 haad * </array> 107 1.2 haad * </dict> 108 1.2 haad * </array> 109 1.2 haad * 110 1.2 haad */ 111 1.2 haad 112 1.2 haad /* 113 1.10 tkusumi * DM_DEV_LIST == "names" 114 1.2 haad * Request list of device-mapper created devices from kernel. 115 1.2 haad * 116 1.2 haad * <array> 117 1.2 haad * <dict> 118 1.2 haad * <key>name<key> 119 1.2 haad * <string>...</string> 120 1.2 haad * 121 1.2 haad * <key>dev</key> 122 1.2 haad * <integer>...</integer> 123 1.2 haad * </dict> 124 1.2 haad * </array> 125 1.2 haad * 126 1.2 haad * dev is uint64_t 127 1.2 haad * 128 1.2 haad */ 129 1.2 haad 130 1.2 haad /* 131 1.10 tkusumi * DM_DEV_RENAME == "rename" 132 1.2 haad * Rename device to string. 133 1.2 haad * 134 1.2 haad * <array> 135 1.2 haad * <string>...</string> 136 1.2 haad * </array> 137 1.2 haad * 138 1.2 haad */ 139 1.2 haad 140 1.2 haad /* 141 1.10 tkusumi * DM_DEV_STATUS == "info, mknodes" 142 1.2 haad * Will change fields DM_IOCTL_OPEN, DM_IOCTL_DEV in received dictionary, 143 1.2 haad * with dm device values with name or uuid from list. 144 1.2 haad * 145 1.2 haad */ 146 1.2 haad 147 1.2 haad /* 148 1.10 tkusumi * DM_TABLE_STATUS == "status,table" 149 1.2 haad * Request list of device-mapper created devices from kernel. 150 1.2 haad * 151 1.2 haad * <array> 152 1.2 haad * <dict> 153 1.2 haad * <key>type<key> 154 1.2 haad * <string>...</string> 155 1.2 haad * 156 1.2 haad * <key>start</key> 157 1.2 haad * <integer>...</integer> 158 1.2 haad * 159 1.2 haad * <key>length</key> 160 1.2 haad * <integer>...</integer> 161 1.2 haad * 162 1.2 haad * <key>params</key> 163 1.2 haad * <string>...</string> 164 1.2 haad * </dict> 165 1.2 haad * </array> 166 1.2 haad * 167 1.2 haad * params is string which contains {device} {parameters} 168 1.2 haad * 169 1.10 tkusumi */ 170 1.2 haad 171 1.2 haad /* 172 1.10 tkusumi * DM_TABLE_DEPS == "deps" 173 1.8 mbalmer * Request list active table device dependencies. 174 1.2 haad * 175 1.2 haad * This command is also run to get dm-device 176 1.8 mbalmer * dependencies for existing real block device. 177 1.2 haad * 178 1.2 haad * eg. vgcreate calls DM_TABLE_DEPS 179 1.2 haad * 180 1.2 haad * <array> 181 1.2 haad * <integer>...</integer> 182 1.2 haad * </array> 183 1.2 haad * 184 1.10 tkusumi */ 185 1.2 haad 186 1.3 haad 187 1.2 haad #define DM_IOCTL_COMMAND "command" 188 1.2 haad #define DM_IOCTL_VERSION "version" 189 1.2 haad #define DM_IOCTL_OPEN "open_count" 190 1.2 haad #define DM_IOCTL_MINOR "minor" 191 1.2 haad #define DM_IOCTL_NAME "name" 192 1.2 haad #define DM_IOCTL_UUID "uuid" 193 1.2 haad #define DM_IOCTL_TARGET_COUNT "target_count" 194 1.2 haad #define DM_IOCTL_EVENT "event_nr" 195 1.2 haad #define DM_IOCTL_FLAGS "flags" 196 1.2 haad #define DM_IOCTL_CMD_DATA "cmd_data" 197 1.2 haad 198 1.2 haad #define DM_TARGETS_NAME "name" 199 1.2 haad #define DM_TARGETS_VERSION "ver" 200 1.2 haad 201 1.2 haad #define DM_DEV_NEWNAME "newname" 202 1.2 haad #define DM_DEV_NAME "name" 203 1.2 haad #define DM_DEV_DEV "dev" 204 1.2 haad 205 1.2 haad #define DM_TABLE_TYPE "type" 206 1.2 haad #define DM_TABLE_START "start" 207 1.2 haad #define DM_TABLE_STAT "status" 208 1.2 haad #define DM_TABLE_LENGTH "length" 209 1.2 haad #define DM_TABLE_PARAMS "params" 210 1.3 haad //#ifndef __LIB_DEVMAPPER__ 211 1.3 haad //#define DM_TABLE_DEPS "deps" 212 1.3 haad //#endif 213 1.2 haad 214 1.2 haad /* Status bits */ 215 1.2 haad /* IO mode of device */ 216 1.2 haad #define DM_READONLY_FLAG (1 << 0) /* In/Out *//* to kernel/from kernel */ 217 1.2 haad #define DM_SUSPEND_FLAG (1 << 1) /* In/Out */ 218 1.10 tkusumi /* XXX. This flag is undocumented. */ 219 1.10 tkusumi #define DM_EXISTS_FLAG (1 << 2) /* In/Out */ 220 1.2 haad /* Minor number is persistent */ 221 1.2 haad #define DM_PERSISTENT_DEV_FLAG (1 << 3) /* In */ 222 1.2 haad 223 1.2 haad /* 224 1.2 haad * Flag passed into ioctl STATUS command to get table information 225 1.2 haad * rather than current status. 226 1.2 haad */ 227 1.2 haad #define DM_STATUS_TABLE_FLAG (1 << 4) /* In */ 228 1.2 haad 229 1.2 haad /* 230 1.2 haad * Flags that indicate whether a table is present in either of 231 1.2 haad * the two table slots that a device has. 232 1.2 haad */ 233 1.2 haad #define DM_ACTIVE_PRESENT_FLAG (1 << 5) /* Out */ 234 1.2 haad #define DM_INACTIVE_PRESENT_FLAG (1 << 6) /* Out */ 235 1.2 haad 236 1.2 haad /* 237 1.2 haad * Indicates that the buffer passed in wasn't big enough for the 238 1.2 haad * results. 239 1.2 haad */ 240 1.2 haad #define DM_BUFFER_FULL_FLAG (1 << 8) /* Out */ 241 1.2 haad 242 1.2 haad /* 243 1.2 haad * This flag is now ignored. 244 1.2 haad */ 245 1.2 haad #define DM_SKIP_BDGET_FLAG (1 << 9) /* In */ 246 1.2 haad 247 1.2 haad /* 248 1.2 haad * Set this to avoid attempting to freeze any filesystem when suspending. 249 1.2 haad */ 250 1.2 haad #define DM_SKIP_LOCKFS_FLAG (1 << 10) /* In */ 251 1.2 haad 252 1.2 haad /* 253 1.2 haad * Set this to suspend without flushing queued ios. 254 1.2 haad */ 255 1.2 haad #define DM_NOFLUSH_FLAG (1 << 11) /* In */ 256 1.2 haad 257 1.6 haad /* 258 1.6 haad * If set, any table information returned will relate to the inactive 259 1.6 haad * table instead of the live one. Always check DM_INACTIVE_PRESENT_FLAG 260 1.6 haad * is set before using the data returned. 261 1.6 haad */ 262 1.6 haad #define DM_QUERY_INACTIVE_TABLE_FLAG (1 << 12) /* In */ 263 1.2 haad 264 1.2 haad #endif /* __NETBSD_DM_H__ */ 265