github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/daemon/graphdriver/devmapper/devmapper_doc.go (about) 1 package devmapper // import "github.com/demonoid81/moby/daemon/graphdriver/devmapper" 2 3 // Definition of struct dm_task and sub structures (from lvm2) 4 // 5 // struct dm_ioctl { 6 // /* 7 // * The version number is made up of three parts: 8 // * major - no backward or forward compatibility, 9 // * minor - only backwards compatible, 10 // * patch - both backwards and forwards compatible. 11 // * 12 // * All clients of the ioctl interface should fill in the 13 // * version number of the interface that they were 14 // * compiled with. 15 // * 16 // * All recognized ioctl commands (ie. those that don't 17 // * return -ENOTTY) fill out this field, even if the 18 // * command failed. 19 // */ 20 // uint32_t version[3]; /* in/out */ 21 // uint32_t data_size; /* total size of data passed in 22 // * including this struct */ 23 24 // uint32_t data_start; /* offset to start of data 25 // * relative to start of this struct */ 26 27 // uint32_t target_count; /* in/out */ 28 // int32_t open_count; /* out */ 29 // uint32_t flags; /* in/out */ 30 31 // /* 32 // * event_nr holds either the event number (input and output) or the 33 // * udev cookie value (input only). 34 // * The DM_DEV_WAIT ioctl takes an event number as input. 35 // * The DM_SUSPEND, DM_DEV_REMOVE and DM_DEV_RENAME ioctls 36 // * use the field as a cookie to return in the DM_COOKIE 37 // * variable with the uevents they issue. 38 // * For output, the ioctls return the event number, not the cookie. 39 // */ 40 // uint32_t event_nr; /* in/out */ 41 // uint32_t padding; 42 43 // uint64_t dev; /* in/out */ 44 45 // char name[DM_NAME_LEN]; /* device name */ 46 // char uuid[DM_UUID_LEN]; /* unique identifier for 47 // * the block device */ 48 // char data[7]; /* padding or data */ 49 // }; 50 51 // struct target { 52 // uint64_t start; 53 // uint64_t length; 54 // char *type; 55 // char *params; 56 57 // struct target *next; 58 // }; 59 60 // typedef enum { 61 // DM_ADD_NODE_ON_RESUME, /* add /dev/mapper node with dmsetup resume */ 62 // DM_ADD_NODE_ON_CREATE /* add /dev/mapper node with dmsetup create */ 63 // } dm_add_node_t; 64 65 // struct dm_task { 66 // int type; 67 // char *dev_name; 68 // char *mangled_dev_name; 69 70 // struct target *head, *tail; 71 72 // int read_only; 73 // uint32_t event_nr; 74 // int major; 75 // int minor; 76 // int allow_default_major_fallback; 77 // uid_t uid; 78 // gid_t gid; 79 // mode_t mode; 80 // uint32_t read_ahead; 81 // uint32_t read_ahead_flags; 82 // union { 83 // struct dm_ioctl *v4; 84 // } dmi; 85 // char *newname; 86 // char *message; 87 // char *geometry; 88 // uint64_t sector; 89 // int no_flush; 90 // int no_open_count; 91 // int skip_lockfs; 92 // int query_inactive_table; 93 // int suppress_identical_reload; 94 // dm_add_node_t add_node; 95 // uint64_t existing_table_size; 96 // int cookie_set; 97 // int new_uuid; 98 // int secure_data; 99 // int retry_remove; 100 // int enable_checks; 101 // int expected_errno; 102 103 // char *uuid; 104 // char *mangled_uuid; 105 // }; 106 //