| package devmapper |
| |
| // Definition of struct dm_task and sub structures (from lvm2) |
| // |
| // struct dm_ioctl { |
| // /* |
| // * The version number is made up of three parts: |
| // * major - no backward or forward compatibility, |
| // * minor - only backwards compatible, |
| // * patch - both backwards and forwards compatible. |
| // * |
| // * All clients of the ioctl interface should fill in the |
| // * version number of the interface that they were |
| // * compiled with. |
| // * |
| // * All recognised ioctl commands (ie. those that don't |
| // * return -ENOTTY) fill out this field, even if the |
| // * command failed. |
| // */ |
| // uint32_t version[3]; /* in/out */ |
| // uint32_t data_size; /* total size of data passed in |
| // * including this struct */ |
| |
| // uint32_t data_start; /* offset to start of data |
| // * relative to start of this struct */ |
| |
| // uint32_t target_count; /* in/out */ |
| // int32_t open_count; /* out */ |
| // uint32_t flags; /* in/out */ |
| |
| // /* |
| // * event_nr holds either the event number (input and output) or the |
| // * udev cookie value (input only). |
| // * The DM_DEV_WAIT ioctl takes an event number as input. |
| // * The DM_SUSPEND, DM_DEV_REMOVE and DM_DEV_RENAME ioctls |
| // * use the field as a cookie to return in the DM_COOKIE |
| // * variable with the uevents they issue. |
| // * For output, the ioctls return the event number, not the cookie. |
| // */ |
| // uint32_t event_nr; /* in/out */ |
| // uint32_t padding; |
| |
| // uint64_t dev; /* in/out */ |
| |
| // char name[DM_NAME_LEN]; /* device name */ |
| // char uuid[DM_UUID_LEN]; /* unique identifier for |
| // * the block device */ |
| // char data[7]; /* padding or data */ |
| // }; |
| |
| // struct target { |
| // uint64_t start; |
| // uint64_t length; |
| // char *type; |
| // char *params; |
| |
| // struct target *next; |
| // }; |
| |
| // typedef enum { |
| // DM_ADD_NODE_ON_RESUME, /* add /dev/mapper node with dmsetup resume */ |
| // DM_ADD_NODE_ON_CREATE /* add /dev/mapper node with dmsetup create */ |
| // } dm_add_node_t; |
| |
| // struct dm_task { |
| // int type; |
| // char *dev_name; |
| // char *mangled_dev_name; |
| |
| // struct target *head, *tail; |
| |
| // int read_only; |
| // uint32_t event_nr; |
| // int major; |
| // int minor; |
| // int allow_default_major_fallback; |
| // uid_t uid; |
| // gid_t gid; |
| // mode_t mode; |
| // uint32_t read_ahead; |
| // uint32_t read_ahead_flags; |
| // union { |
| // struct dm_ioctl *v4; |
| // } dmi; |
| // char *newname; |
| // char *message; |
| // char *geometry; |
| // uint64_t sector; |
| // int no_flush; |
| // int no_open_count; |
| // int skip_lockfs; |
| // int query_inactive_table; |
| // int suppress_identical_reload; |
| // dm_add_node_t add_node; |
| // uint64_t existing_table_size; |
| // int cookie_set; |
| // int new_uuid; |
| // int secure_data; |
| // int retry_remove; |
| // int enable_checks; |
| // int expected_errno; |
| |
| // char *uuid; |
| // char *mangled_uuid; |
| // }; |
| // |