xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/dm-ioctl.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
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