1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.0+ WITH Linux-syscall-note */ 2*f80ad8b4SAndroid Build Coastguard Worker /* 3*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 2001 - 2003 Sistina Software (UK) Limited. 4*f80ad8b4SAndroid Build Coastguard Worker * Copyright (C) 2004 - 2009 Red Hat, Inc. All rights reserved. 5*f80ad8b4SAndroid Build Coastguard Worker * 6*f80ad8b4SAndroid Build Coastguard Worker * This file is released under the LGPL. 7*f80ad8b4SAndroid Build Coastguard Worker */ 8*f80ad8b4SAndroid Build Coastguard Worker 9*f80ad8b4SAndroid Build Coastguard Worker #ifndef _LINUX_DM_IOCTL_V4_H 10*f80ad8b4SAndroid Build Coastguard Worker #define _LINUX_DM_IOCTL_V4_H 11*f80ad8b4SAndroid Build Coastguard Worker 12*f80ad8b4SAndroid Build Coastguard Worker #include <linux/types.h> 13*f80ad8b4SAndroid Build Coastguard Worker 14*f80ad8b4SAndroid Build Coastguard Worker #define DM_DIR "mapper" /* Slashes not supported */ 15*f80ad8b4SAndroid Build Coastguard Worker #define DM_CONTROL_NODE "control" 16*f80ad8b4SAndroid Build Coastguard Worker #define DM_MAX_TYPE_NAME 16 17*f80ad8b4SAndroid Build Coastguard Worker #define DM_NAME_LEN 128 18*f80ad8b4SAndroid Build Coastguard Worker #define DM_UUID_LEN 129 19*f80ad8b4SAndroid Build Coastguard Worker 20*f80ad8b4SAndroid Build Coastguard Worker /* 21*f80ad8b4SAndroid Build Coastguard Worker * A traditional ioctl interface for the device mapper. 22*f80ad8b4SAndroid Build Coastguard Worker * 23*f80ad8b4SAndroid Build Coastguard Worker * Each device can have two tables associated with it, an 24*f80ad8b4SAndroid Build Coastguard Worker * 'active' table which is the one currently used by io passing 25*f80ad8b4SAndroid Build Coastguard Worker * through the device, and an 'inactive' one which is a table 26*f80ad8b4SAndroid Build Coastguard Worker * that is being prepared as a replacement for the 'active' one. 27*f80ad8b4SAndroid Build Coastguard Worker * 28*f80ad8b4SAndroid Build Coastguard Worker * DM_VERSION: 29*f80ad8b4SAndroid Build Coastguard Worker * Just get the version information for the ioctl interface. 30*f80ad8b4SAndroid Build Coastguard Worker * 31*f80ad8b4SAndroid Build Coastguard Worker * DM_REMOVE_ALL: 32*f80ad8b4SAndroid Build Coastguard Worker * Remove all dm devices, destroy all tables. Only really used 33*f80ad8b4SAndroid Build Coastguard Worker * for debug. 34*f80ad8b4SAndroid Build Coastguard Worker * 35*f80ad8b4SAndroid Build Coastguard Worker * DM_LIST_DEVICES: 36*f80ad8b4SAndroid Build Coastguard Worker * Get a list of all the dm device names. 37*f80ad8b4SAndroid Build Coastguard Worker * 38*f80ad8b4SAndroid Build Coastguard Worker * DM_DEV_CREATE: 39*f80ad8b4SAndroid Build Coastguard Worker * Create a new device, neither the 'active' or 'inactive' table 40*f80ad8b4SAndroid Build Coastguard Worker * slots will be filled. The device will be in suspended state 41*f80ad8b4SAndroid Build Coastguard Worker * after creation, however any io to the device will get errored 42*f80ad8b4SAndroid Build Coastguard Worker * since it will be out-of-bounds. 43*f80ad8b4SAndroid Build Coastguard Worker * 44*f80ad8b4SAndroid Build Coastguard Worker * DM_DEV_REMOVE: 45*f80ad8b4SAndroid Build Coastguard Worker * Remove a device, destroy any tables. 46*f80ad8b4SAndroid Build Coastguard Worker * 47*f80ad8b4SAndroid Build Coastguard Worker * DM_DEV_RENAME: 48*f80ad8b4SAndroid Build Coastguard Worker * Rename a device or set its uuid if none was previously supplied. 49*f80ad8b4SAndroid Build Coastguard Worker * 50*f80ad8b4SAndroid Build Coastguard Worker * DM_SUSPEND: 51*f80ad8b4SAndroid Build Coastguard Worker * This performs both suspend and resume, depending which flag is 52*f80ad8b4SAndroid Build Coastguard Worker * passed in. 53*f80ad8b4SAndroid Build Coastguard Worker * Suspend: This command will not return until all pending io to 54*f80ad8b4SAndroid Build Coastguard Worker * the device has completed. Further io will be deferred until 55*f80ad8b4SAndroid Build Coastguard Worker * the device is resumed. 56*f80ad8b4SAndroid Build Coastguard Worker * Resume: It is no longer an error to issue this command on an 57*f80ad8b4SAndroid Build Coastguard Worker * unsuspended device. If a table is present in the 'inactive' 58*f80ad8b4SAndroid Build Coastguard Worker * slot, it will be moved to the active slot, then the old table 59*f80ad8b4SAndroid Build Coastguard Worker * from the active slot will be _destroyed_. Finally the device 60*f80ad8b4SAndroid Build Coastguard Worker * is resumed. 61*f80ad8b4SAndroid Build Coastguard Worker * 62*f80ad8b4SAndroid Build Coastguard Worker * DM_DEV_STATUS: 63*f80ad8b4SAndroid Build Coastguard Worker * Retrieves the status for the table in the 'active' slot. 64*f80ad8b4SAndroid Build Coastguard Worker * 65*f80ad8b4SAndroid Build Coastguard Worker * DM_DEV_WAIT: 66*f80ad8b4SAndroid Build Coastguard Worker * Wait for a significant event to occur to the device. This 67*f80ad8b4SAndroid Build Coastguard Worker * could either be caused by an event triggered by one of the 68*f80ad8b4SAndroid Build Coastguard Worker * targets of the table in the 'active' slot, or a table change. 69*f80ad8b4SAndroid Build Coastguard Worker * 70*f80ad8b4SAndroid Build Coastguard Worker * DM_TABLE_LOAD: 71*f80ad8b4SAndroid Build Coastguard Worker * Load a table into the 'inactive' slot for the device. The 72*f80ad8b4SAndroid Build Coastguard Worker * device does _not_ need to be suspended prior to this command. 73*f80ad8b4SAndroid Build Coastguard Worker * 74*f80ad8b4SAndroid Build Coastguard Worker * DM_TABLE_CLEAR: 75*f80ad8b4SAndroid Build Coastguard Worker * Destroy any table in the 'inactive' slot (ie. abort). 76*f80ad8b4SAndroid Build Coastguard Worker * 77*f80ad8b4SAndroid Build Coastguard Worker * DM_TABLE_DEPS: 78*f80ad8b4SAndroid Build Coastguard Worker * Return a set of device dependencies for the 'active' table. 79*f80ad8b4SAndroid Build Coastguard Worker * 80*f80ad8b4SAndroid Build Coastguard Worker * DM_TABLE_STATUS: 81*f80ad8b4SAndroid Build Coastguard Worker * Return the targets status for the 'active' table. 82*f80ad8b4SAndroid Build Coastguard Worker * 83*f80ad8b4SAndroid Build Coastguard Worker * DM_TARGET_MSG: 84*f80ad8b4SAndroid Build Coastguard Worker * Pass a message string to the target at a specific offset of a device. 85*f80ad8b4SAndroid Build Coastguard Worker * 86*f80ad8b4SAndroid Build Coastguard Worker * DM_DEV_SET_GEOMETRY: 87*f80ad8b4SAndroid Build Coastguard Worker * Set the geometry of a device by passing in a string in this format: 88*f80ad8b4SAndroid Build Coastguard Worker * 89*f80ad8b4SAndroid Build Coastguard Worker * "cylinders heads sectors_per_track start_sector" 90*f80ad8b4SAndroid Build Coastguard Worker * 91*f80ad8b4SAndroid Build Coastguard Worker * Beware that CHS geometry is nearly obsolete and only provided 92*f80ad8b4SAndroid Build Coastguard Worker * for compatibility with dm devices that can be booted by a PC 93*f80ad8b4SAndroid Build Coastguard Worker * BIOS. See struct hd_geometry for range limits. Also note that 94*f80ad8b4SAndroid Build Coastguard Worker * the geometry is erased if the device size changes. 95*f80ad8b4SAndroid Build Coastguard Worker */ 96*f80ad8b4SAndroid Build Coastguard Worker 97*f80ad8b4SAndroid Build Coastguard Worker /* 98*f80ad8b4SAndroid Build Coastguard Worker * All ioctl arguments consist of a single chunk of memory, with 99*f80ad8b4SAndroid Build Coastguard Worker * this structure at the start. If a uuid is specified any 100*f80ad8b4SAndroid Build Coastguard Worker * lookup (eg. for a DM_INFO) will be done on that, *not* the 101*f80ad8b4SAndroid Build Coastguard Worker * name. 102*f80ad8b4SAndroid Build Coastguard Worker */ 103*f80ad8b4SAndroid Build Coastguard Worker struct dm_ioctl { 104*f80ad8b4SAndroid Build Coastguard Worker /* 105*f80ad8b4SAndroid Build Coastguard Worker * The version number is made up of three parts: 106*f80ad8b4SAndroid Build Coastguard Worker * major - no backward or forward compatibility, 107*f80ad8b4SAndroid Build Coastguard Worker * minor - only backwards compatible, 108*f80ad8b4SAndroid Build Coastguard Worker * patch - both backwards and forwards compatible. 109*f80ad8b4SAndroid Build Coastguard Worker * 110*f80ad8b4SAndroid Build Coastguard Worker * All clients of the ioctl interface should fill in the 111*f80ad8b4SAndroid Build Coastguard Worker * version number of the interface that they were 112*f80ad8b4SAndroid Build Coastguard Worker * compiled with. 113*f80ad8b4SAndroid Build Coastguard Worker * 114*f80ad8b4SAndroid Build Coastguard Worker * All recognised ioctl commands (ie. those that don't 115*f80ad8b4SAndroid Build Coastguard Worker * return -ENOTTY) fill out this field, even if the 116*f80ad8b4SAndroid Build Coastguard Worker * command failed. 117*f80ad8b4SAndroid Build Coastguard Worker */ 118*f80ad8b4SAndroid Build Coastguard Worker __u32 version[3]; /* in/out */ 119*f80ad8b4SAndroid Build Coastguard Worker __u32 data_size; /* total size of data passed in 120*f80ad8b4SAndroid Build Coastguard Worker * including this struct */ 121*f80ad8b4SAndroid Build Coastguard Worker 122*f80ad8b4SAndroid Build Coastguard Worker __u32 data_start; /* offset to start of data 123*f80ad8b4SAndroid Build Coastguard Worker * relative to start of this struct */ 124*f80ad8b4SAndroid Build Coastguard Worker 125*f80ad8b4SAndroid Build Coastguard Worker __u32 target_count; /* in/out */ 126*f80ad8b4SAndroid Build Coastguard Worker __s32 open_count; /* out */ 127*f80ad8b4SAndroid Build Coastguard Worker __u32 flags; /* in/out */ 128*f80ad8b4SAndroid Build Coastguard Worker 129*f80ad8b4SAndroid Build Coastguard Worker /* 130*f80ad8b4SAndroid Build Coastguard Worker * event_nr holds either the event number (input and output) or the 131*f80ad8b4SAndroid Build Coastguard Worker * udev cookie value (input only). 132*f80ad8b4SAndroid Build Coastguard Worker * The DM_DEV_WAIT ioctl takes an event number as input. 133*f80ad8b4SAndroid Build Coastguard Worker * The DM_SUSPEND, DM_DEV_REMOVE and DM_DEV_RENAME ioctls 134*f80ad8b4SAndroid Build Coastguard Worker * use the field as a cookie to return in the DM_COOKIE 135*f80ad8b4SAndroid Build Coastguard Worker * variable with the uevents they issue. 136*f80ad8b4SAndroid Build Coastguard Worker * For output, the ioctls return the event number, not the cookie. 137*f80ad8b4SAndroid Build Coastguard Worker */ 138*f80ad8b4SAndroid Build Coastguard Worker __u32 event_nr; /* in/out */ 139*f80ad8b4SAndroid Build Coastguard Worker __u32 padding; 140*f80ad8b4SAndroid Build Coastguard Worker 141*f80ad8b4SAndroid Build Coastguard Worker __u64 dev; /* in/out */ 142*f80ad8b4SAndroid Build Coastguard Worker 143*f80ad8b4SAndroid Build Coastguard Worker char name[DM_NAME_LEN]; /* device name */ 144*f80ad8b4SAndroid Build Coastguard Worker char uuid[DM_UUID_LEN]; /* unique identifier for 145*f80ad8b4SAndroid Build Coastguard Worker * the block device */ 146*f80ad8b4SAndroid Build Coastguard Worker char data[7]; /* padding or data */ 147*f80ad8b4SAndroid Build Coastguard Worker }; 148*f80ad8b4SAndroid Build Coastguard Worker 149*f80ad8b4SAndroid Build Coastguard Worker /* 150*f80ad8b4SAndroid Build Coastguard Worker * Used to specify tables. These structures appear after the 151*f80ad8b4SAndroid Build Coastguard Worker * dm_ioctl. 152*f80ad8b4SAndroid Build Coastguard Worker */ 153*f80ad8b4SAndroid Build Coastguard Worker struct dm_target_spec { 154*f80ad8b4SAndroid Build Coastguard Worker __u64 sector_start; 155*f80ad8b4SAndroid Build Coastguard Worker __u64 length; 156*f80ad8b4SAndroid Build Coastguard Worker __s32 status; /* used when reading from kernel only */ 157*f80ad8b4SAndroid Build Coastguard Worker 158*f80ad8b4SAndroid Build Coastguard Worker /* 159*f80ad8b4SAndroid Build Coastguard Worker * Location of the next dm_target_spec. 160*f80ad8b4SAndroid Build Coastguard Worker * - When specifying targets on a DM_TABLE_LOAD command, this value is 161*f80ad8b4SAndroid Build Coastguard Worker * the number of bytes from the start of the "current" dm_target_spec 162*f80ad8b4SAndroid Build Coastguard Worker * to the start of the "next" dm_target_spec. 163*f80ad8b4SAndroid Build Coastguard Worker * - When retrieving targets on a DM_TABLE_STATUS command, this value 164*f80ad8b4SAndroid Build Coastguard Worker * is the number of bytes from the start of the first dm_target_spec 165*f80ad8b4SAndroid Build Coastguard Worker * (that follows the dm_ioctl struct) to the start of the "next" 166*f80ad8b4SAndroid Build Coastguard Worker * dm_target_spec. 167*f80ad8b4SAndroid Build Coastguard Worker */ 168*f80ad8b4SAndroid Build Coastguard Worker __u32 next; 169*f80ad8b4SAndroid Build Coastguard Worker 170*f80ad8b4SAndroid Build Coastguard Worker char target_type[DM_MAX_TYPE_NAME]; 171*f80ad8b4SAndroid Build Coastguard Worker 172*f80ad8b4SAndroid Build Coastguard Worker /* 173*f80ad8b4SAndroid Build Coastguard Worker * Parameter string starts immediately after this object. 174*f80ad8b4SAndroid Build Coastguard Worker * Be careful to add padding after string to ensure correct 175*f80ad8b4SAndroid Build Coastguard Worker * alignment of subsequent dm_target_spec. 176*f80ad8b4SAndroid Build Coastguard Worker */ 177*f80ad8b4SAndroid Build Coastguard Worker }; 178*f80ad8b4SAndroid Build Coastguard Worker 179*f80ad8b4SAndroid Build Coastguard Worker /* 180*f80ad8b4SAndroid Build Coastguard Worker * Used to retrieve the target dependencies. 181*f80ad8b4SAndroid Build Coastguard Worker */ 182*f80ad8b4SAndroid Build Coastguard Worker struct dm_target_deps { 183*f80ad8b4SAndroid Build Coastguard Worker __u32 count; /* Array size */ 184*f80ad8b4SAndroid Build Coastguard Worker __u32 padding; /* unused */ 185*f80ad8b4SAndroid Build Coastguard Worker __u64 dev[]; /* out */ 186*f80ad8b4SAndroid Build Coastguard Worker }; 187*f80ad8b4SAndroid Build Coastguard Worker 188*f80ad8b4SAndroid Build Coastguard Worker /* 189*f80ad8b4SAndroid Build Coastguard Worker * Used to get a list of all dm devices. 190*f80ad8b4SAndroid Build Coastguard Worker */ 191*f80ad8b4SAndroid Build Coastguard Worker struct dm_name_list { 192*f80ad8b4SAndroid Build Coastguard Worker __u64 dev; 193*f80ad8b4SAndroid Build Coastguard Worker __u32 next; /* offset to the next record from 194*f80ad8b4SAndroid Build Coastguard Worker the _start_ of this */ 195*f80ad8b4SAndroid Build Coastguard Worker char name[]; 196*f80ad8b4SAndroid Build Coastguard Worker 197*f80ad8b4SAndroid Build Coastguard Worker /* 198*f80ad8b4SAndroid Build Coastguard Worker * The following members can be accessed by taking a pointer that 199*f80ad8b4SAndroid Build Coastguard Worker * points immediately after the terminating zero character in "name" 200*f80ad8b4SAndroid Build Coastguard Worker * and aligning this pointer to next 8-byte boundary. 201*f80ad8b4SAndroid Build Coastguard Worker * Uuid is present if the flag DM_NAME_LIST_FLAG_HAS_UUID is set. 202*f80ad8b4SAndroid Build Coastguard Worker * 203*f80ad8b4SAndroid Build Coastguard Worker * __u32 event_nr; 204*f80ad8b4SAndroid Build Coastguard Worker * __u32 flags; 205*f80ad8b4SAndroid Build Coastguard Worker * char uuid[0]; 206*f80ad8b4SAndroid Build Coastguard Worker */ 207*f80ad8b4SAndroid Build Coastguard Worker }; 208*f80ad8b4SAndroid Build Coastguard Worker 209*f80ad8b4SAndroid Build Coastguard Worker #define DM_NAME_LIST_FLAG_HAS_UUID 1 210*f80ad8b4SAndroid Build Coastguard Worker #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2 211*f80ad8b4SAndroid Build Coastguard Worker 212*f80ad8b4SAndroid Build Coastguard Worker /* 213*f80ad8b4SAndroid Build Coastguard Worker * Used to retrieve the target versions 214*f80ad8b4SAndroid Build Coastguard Worker */ 215*f80ad8b4SAndroid Build Coastguard Worker struct dm_target_versions { 216*f80ad8b4SAndroid Build Coastguard Worker __u32 next; 217*f80ad8b4SAndroid Build Coastguard Worker __u32 version[3]; 218*f80ad8b4SAndroid Build Coastguard Worker 219*f80ad8b4SAndroid Build Coastguard Worker char name[]; 220*f80ad8b4SAndroid Build Coastguard Worker }; 221*f80ad8b4SAndroid Build Coastguard Worker 222*f80ad8b4SAndroid Build Coastguard Worker /* 223*f80ad8b4SAndroid Build Coastguard Worker * Used to pass message to a target 224*f80ad8b4SAndroid Build Coastguard Worker */ 225*f80ad8b4SAndroid Build Coastguard Worker struct dm_target_msg { 226*f80ad8b4SAndroid Build Coastguard Worker __u64 sector; /* Device sector */ 227*f80ad8b4SAndroid Build Coastguard Worker 228*f80ad8b4SAndroid Build Coastguard Worker char message[]; 229*f80ad8b4SAndroid Build Coastguard Worker }; 230*f80ad8b4SAndroid Build Coastguard Worker 231*f80ad8b4SAndroid Build Coastguard Worker /* 232*f80ad8b4SAndroid Build Coastguard Worker * If you change this make sure you make the corresponding change 233*f80ad8b4SAndroid Build Coastguard Worker * to dm-ioctl.c:lookup_ioctl() 234*f80ad8b4SAndroid Build Coastguard Worker */ 235*f80ad8b4SAndroid Build Coastguard Worker enum { 236*f80ad8b4SAndroid Build Coastguard Worker /* Top level cmds */ 237*f80ad8b4SAndroid Build Coastguard Worker DM_VERSION_CMD = 0, 238*f80ad8b4SAndroid Build Coastguard Worker DM_REMOVE_ALL_CMD, 239*f80ad8b4SAndroid Build Coastguard Worker DM_LIST_DEVICES_CMD, 240*f80ad8b4SAndroid Build Coastguard Worker 241*f80ad8b4SAndroid Build Coastguard Worker /* device level cmds */ 242*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_CREATE_CMD, 243*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_REMOVE_CMD, 244*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_RENAME_CMD, 245*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_SUSPEND_CMD, 246*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_STATUS_CMD, 247*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_WAIT_CMD, 248*f80ad8b4SAndroid Build Coastguard Worker 249*f80ad8b4SAndroid Build Coastguard Worker /* Table level cmds */ 250*f80ad8b4SAndroid Build Coastguard Worker DM_TABLE_LOAD_CMD, 251*f80ad8b4SAndroid Build Coastguard Worker DM_TABLE_CLEAR_CMD, 252*f80ad8b4SAndroid Build Coastguard Worker DM_TABLE_DEPS_CMD, 253*f80ad8b4SAndroid Build Coastguard Worker DM_TABLE_STATUS_CMD, 254*f80ad8b4SAndroid Build Coastguard Worker 255*f80ad8b4SAndroid Build Coastguard Worker /* Added later */ 256*f80ad8b4SAndroid Build Coastguard Worker DM_LIST_VERSIONS_CMD, 257*f80ad8b4SAndroid Build Coastguard Worker DM_TARGET_MSG_CMD, 258*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_SET_GEOMETRY_CMD, 259*f80ad8b4SAndroid Build Coastguard Worker DM_DEV_ARM_POLL_CMD, 260*f80ad8b4SAndroid Build Coastguard Worker DM_GET_TARGET_VERSION_CMD, 261*f80ad8b4SAndroid Build Coastguard Worker }; 262*f80ad8b4SAndroid Build Coastguard Worker 263*f80ad8b4SAndroid Build Coastguard Worker #define DM_IOCTL 0xfd 264*f80ad8b4SAndroid Build Coastguard Worker 265*f80ad8b4SAndroid Build Coastguard Worker #define DM_VERSION _IOWR(DM_IOCTL, DM_VERSION_CMD, struct dm_ioctl) 266*f80ad8b4SAndroid Build Coastguard Worker #define DM_REMOVE_ALL _IOWR(DM_IOCTL, DM_REMOVE_ALL_CMD, struct dm_ioctl) 267*f80ad8b4SAndroid Build Coastguard Worker #define DM_LIST_DEVICES _IOWR(DM_IOCTL, DM_LIST_DEVICES_CMD, struct dm_ioctl) 268*f80ad8b4SAndroid Build Coastguard Worker 269*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_CREATE _IOWR(DM_IOCTL, DM_DEV_CREATE_CMD, struct dm_ioctl) 270*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_REMOVE _IOWR(DM_IOCTL, DM_DEV_REMOVE_CMD, struct dm_ioctl) 271*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_RENAME _IOWR(DM_IOCTL, DM_DEV_RENAME_CMD, struct dm_ioctl) 272*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_SUSPEND _IOWR(DM_IOCTL, DM_DEV_SUSPEND_CMD, struct dm_ioctl) 273*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_STATUS _IOWR(DM_IOCTL, DM_DEV_STATUS_CMD, struct dm_ioctl) 274*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_WAIT _IOWR(DM_IOCTL, DM_DEV_WAIT_CMD, struct dm_ioctl) 275*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_ARM_POLL _IOWR(DM_IOCTL, DM_DEV_ARM_POLL_CMD, struct dm_ioctl) 276*f80ad8b4SAndroid Build Coastguard Worker 277*f80ad8b4SAndroid Build Coastguard Worker #define DM_TABLE_LOAD _IOWR(DM_IOCTL, DM_TABLE_LOAD_CMD, struct dm_ioctl) 278*f80ad8b4SAndroid Build Coastguard Worker #define DM_TABLE_CLEAR _IOWR(DM_IOCTL, DM_TABLE_CLEAR_CMD, struct dm_ioctl) 279*f80ad8b4SAndroid Build Coastguard Worker #define DM_TABLE_DEPS _IOWR(DM_IOCTL, DM_TABLE_DEPS_CMD, struct dm_ioctl) 280*f80ad8b4SAndroid Build Coastguard Worker #define DM_TABLE_STATUS _IOWR(DM_IOCTL, DM_TABLE_STATUS_CMD, struct dm_ioctl) 281*f80ad8b4SAndroid Build Coastguard Worker 282*f80ad8b4SAndroid Build Coastguard Worker #define DM_LIST_VERSIONS _IOWR(DM_IOCTL, DM_LIST_VERSIONS_CMD, struct dm_ioctl) 283*f80ad8b4SAndroid Build Coastguard Worker #define DM_GET_TARGET_VERSION _IOWR(DM_IOCTL, DM_GET_TARGET_VERSION_CMD, struct dm_ioctl) 284*f80ad8b4SAndroid Build Coastguard Worker 285*f80ad8b4SAndroid Build Coastguard Worker #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl) 286*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) 287*f80ad8b4SAndroid Build Coastguard Worker 288*f80ad8b4SAndroid Build Coastguard Worker #define DM_VERSION_MAJOR 4 289*f80ad8b4SAndroid Build Coastguard Worker #define DM_VERSION_MINOR 48 290*f80ad8b4SAndroid Build Coastguard Worker #define DM_VERSION_PATCHLEVEL 0 291*f80ad8b4SAndroid Build Coastguard Worker #define DM_VERSION_EXTRA "-ioctl (2023-03-01)" 292*f80ad8b4SAndroid Build Coastguard Worker 293*f80ad8b4SAndroid Build Coastguard Worker /* Status bits */ 294*f80ad8b4SAndroid Build Coastguard Worker #define DM_READONLY_FLAG (1 << 0) /* In/Out */ 295*f80ad8b4SAndroid Build Coastguard Worker #define DM_SUSPEND_FLAG (1 << 1) /* In/Out */ 296*f80ad8b4SAndroid Build Coastguard Worker #define DM_PERSISTENT_DEV_FLAG (1 << 3) /* In */ 297*f80ad8b4SAndroid Build Coastguard Worker 298*f80ad8b4SAndroid Build Coastguard Worker /* 299*f80ad8b4SAndroid Build Coastguard Worker * Flag passed into ioctl STATUS command to get table information 300*f80ad8b4SAndroid Build Coastguard Worker * rather than current status. 301*f80ad8b4SAndroid Build Coastguard Worker */ 302*f80ad8b4SAndroid Build Coastguard Worker #define DM_STATUS_TABLE_FLAG (1 << 4) /* In */ 303*f80ad8b4SAndroid Build Coastguard Worker 304*f80ad8b4SAndroid Build Coastguard Worker /* 305*f80ad8b4SAndroid Build Coastguard Worker * Flags that indicate whether a table is present in either of 306*f80ad8b4SAndroid Build Coastguard Worker * the two table slots that a device has. 307*f80ad8b4SAndroid Build Coastguard Worker */ 308*f80ad8b4SAndroid Build Coastguard Worker #define DM_ACTIVE_PRESENT_FLAG (1 << 5) /* Out */ 309*f80ad8b4SAndroid Build Coastguard Worker #define DM_INACTIVE_PRESENT_FLAG (1 << 6) /* Out */ 310*f80ad8b4SAndroid Build Coastguard Worker 311*f80ad8b4SAndroid Build Coastguard Worker /* 312*f80ad8b4SAndroid Build Coastguard Worker * Indicates that the buffer passed in wasn't big enough for the 313*f80ad8b4SAndroid Build Coastguard Worker * results. 314*f80ad8b4SAndroid Build Coastguard Worker */ 315*f80ad8b4SAndroid Build Coastguard Worker #define DM_BUFFER_FULL_FLAG (1 << 8) /* Out */ 316*f80ad8b4SAndroid Build Coastguard Worker 317*f80ad8b4SAndroid Build Coastguard Worker /* 318*f80ad8b4SAndroid Build Coastguard Worker * This flag is now ignored. 319*f80ad8b4SAndroid Build Coastguard Worker */ 320*f80ad8b4SAndroid Build Coastguard Worker #define DM_SKIP_BDGET_FLAG (1 << 9) /* In */ 321*f80ad8b4SAndroid Build Coastguard Worker 322*f80ad8b4SAndroid Build Coastguard Worker /* 323*f80ad8b4SAndroid Build Coastguard Worker * Set this to avoid attempting to freeze any filesystem when suspending. 324*f80ad8b4SAndroid Build Coastguard Worker */ 325*f80ad8b4SAndroid Build Coastguard Worker #define DM_SKIP_LOCKFS_FLAG (1 << 10) /* In */ 326*f80ad8b4SAndroid Build Coastguard Worker 327*f80ad8b4SAndroid Build Coastguard Worker /* 328*f80ad8b4SAndroid Build Coastguard Worker * Set this to suspend without flushing queued ios. 329*f80ad8b4SAndroid Build Coastguard Worker * Also disables flushing uncommitted changes in the thin target before 330*f80ad8b4SAndroid Build Coastguard Worker * generating statistics for DM_TABLE_STATUS and DM_DEV_WAIT. 331*f80ad8b4SAndroid Build Coastguard Worker */ 332*f80ad8b4SAndroid Build Coastguard Worker #define DM_NOFLUSH_FLAG (1 << 11) /* In */ 333*f80ad8b4SAndroid Build Coastguard Worker 334*f80ad8b4SAndroid Build Coastguard Worker /* 335*f80ad8b4SAndroid Build Coastguard Worker * If set, any table information returned will relate to the inactive 336*f80ad8b4SAndroid Build Coastguard Worker * table instead of the live one. Always check DM_INACTIVE_PRESENT_FLAG 337*f80ad8b4SAndroid Build Coastguard Worker * is set before using the data returned. 338*f80ad8b4SAndroid Build Coastguard Worker */ 339*f80ad8b4SAndroid Build Coastguard Worker #define DM_QUERY_INACTIVE_TABLE_FLAG (1 << 12) /* In */ 340*f80ad8b4SAndroid Build Coastguard Worker 341*f80ad8b4SAndroid Build Coastguard Worker /* 342*f80ad8b4SAndroid Build Coastguard Worker * If set, a uevent was generated for which the caller may need to wait. 343*f80ad8b4SAndroid Build Coastguard Worker */ 344*f80ad8b4SAndroid Build Coastguard Worker #define DM_UEVENT_GENERATED_FLAG (1 << 13) /* Out */ 345*f80ad8b4SAndroid Build Coastguard Worker 346*f80ad8b4SAndroid Build Coastguard Worker /* 347*f80ad8b4SAndroid Build Coastguard Worker * If set, rename changes the uuid not the name. Only permitted 348*f80ad8b4SAndroid Build Coastguard Worker * if no uuid was previously supplied: an existing uuid cannot be changed. 349*f80ad8b4SAndroid Build Coastguard Worker */ 350*f80ad8b4SAndroid Build Coastguard Worker #define DM_UUID_FLAG (1 << 14) /* In */ 351*f80ad8b4SAndroid Build Coastguard Worker 352*f80ad8b4SAndroid Build Coastguard Worker /* 353*f80ad8b4SAndroid Build Coastguard Worker * If set, all buffers are wiped after use. Use when sending 354*f80ad8b4SAndroid Build Coastguard Worker * or requesting sensitive data such as an encryption key. 355*f80ad8b4SAndroid Build Coastguard Worker */ 356*f80ad8b4SAndroid Build Coastguard Worker #define DM_SECURE_DATA_FLAG (1 << 15) /* In */ 357*f80ad8b4SAndroid Build Coastguard Worker 358*f80ad8b4SAndroid Build Coastguard Worker /* 359*f80ad8b4SAndroid Build Coastguard Worker * If set, a message generated output data. 360*f80ad8b4SAndroid Build Coastguard Worker */ 361*f80ad8b4SAndroid Build Coastguard Worker #define DM_DATA_OUT_FLAG (1 << 16) /* Out */ 362*f80ad8b4SAndroid Build Coastguard Worker 363*f80ad8b4SAndroid Build Coastguard Worker /* 364*f80ad8b4SAndroid Build Coastguard Worker * If set with DM_DEV_REMOVE or DM_REMOVE_ALL this indicates that if 365*f80ad8b4SAndroid Build Coastguard Worker * the device cannot be removed immediately because it is still in use 366*f80ad8b4SAndroid Build Coastguard Worker * it should instead be scheduled for removal when it gets closed. 367*f80ad8b4SAndroid Build Coastguard Worker * 368*f80ad8b4SAndroid Build Coastguard Worker * On return from DM_DEV_REMOVE, DM_DEV_STATUS or other ioctls, this 369*f80ad8b4SAndroid Build Coastguard Worker * flag indicates that the device is scheduled to be removed when it 370*f80ad8b4SAndroid Build Coastguard Worker * gets closed. 371*f80ad8b4SAndroid Build Coastguard Worker */ 372*f80ad8b4SAndroid Build Coastguard Worker #define DM_DEFERRED_REMOVE (1 << 17) /* In/Out */ 373*f80ad8b4SAndroid Build Coastguard Worker 374*f80ad8b4SAndroid Build Coastguard Worker /* 375*f80ad8b4SAndroid Build Coastguard Worker * If set, the device is suspended internally. 376*f80ad8b4SAndroid Build Coastguard Worker */ 377*f80ad8b4SAndroid Build Coastguard Worker #define DM_INTERNAL_SUSPEND_FLAG (1 << 18) /* Out */ 378*f80ad8b4SAndroid Build Coastguard Worker 379*f80ad8b4SAndroid Build Coastguard Worker /* 380*f80ad8b4SAndroid Build Coastguard Worker * If set, returns in the in buffer passed by UM, the raw table information 381*f80ad8b4SAndroid Build Coastguard Worker * that would be measured by IMA subsystem on device state change. 382*f80ad8b4SAndroid Build Coastguard Worker */ 383*f80ad8b4SAndroid Build Coastguard Worker #define DM_IMA_MEASUREMENT_FLAG (1 << 19) /* In */ 384*f80ad8b4SAndroid Build Coastguard Worker 385*f80ad8b4SAndroid Build Coastguard Worker #endif /* _LINUX_DM_IOCTL_H */ 386