Sync usage with man page.
[netbsd-mini2440.git] / sys / dev / dm / doc / proposal-dm.txt
blob2caa80139916e115511a8b08b49be6ba9eeb14c6
3 /* constant dm_target structures for error, zero, linear, stripes etc. */
4 struct dm_target {
5         int (*init)(struct dm_table_entry *, int argc, char **argv);
6         int (*destroy)(struct dm_table_entry *);
7         int (*strategy)(struct dm_table_entry *, struct buf *);
8         int (*upcall)(struct dm_table_entry *, struct buf *);
10         SLIST_ENTRY(dm_target) next;
14 struct dm_table_entry {
15         struct dm_dev *dm_dev;          /* backlink */
16         uint64_t start;
17         uint64_t length;
19         struct dm_target *target;
20         void *target_config;
21         SLIST_ENTRY(dm_table_entry) next;
23 SLIST(dm_table, dm_table_entry);
26 struct dm_pdev {
27         struct vnode *pdev_vnode;
28         int refcnt;
29         SLIST_ENTRY(dm_pdev) next_pdev;
31 SLIST(dm_pdevs, pm_pdev);
34 struct dm_dev {
35         char name[DM_NAME_LEN];
36         char uuid[DM_UUID_LEN];
38         int minor;
39         uint32_t flags;
41         kmutex_t dev_mtx;
42         uint32_t event_nr;
43         uint32_t ref_cnt;
45         struct dm_pdev pdevs;
47         int cur_active_table;
48         struct dm_table tables[2];
50         struct dm_dev_list upcalls;
51         SLIST_NEXT(dm_dev) next_upcall;
53         SLIST_NEXT(dm_dev) next_devlist;
55 SLIST(dm_dev_list, dm_dev) dm_devs;
58 /* for zero,error : dm_target->target_config == NULL */
59 /* for linear : */
60 struct target_linear_config {
61         struct dm_pdev *pdev;
62         uint64_t offset;
66 /* for mirror : */
67 struct target_mirror_config {
68         struct dm_pdev *orig;
69         struct dm_pdev *copies[MAX_MIRROR_COPIES];
71         /* copied blocks bitmaps administration etc*/
72         struct dm_pdev *log_pdev;       /* for administration */
73         uint64_t log_regionsize;        /* blocksize of mirror */
75         /* list of parts that still need copied etc.; run length encoded? */
76         ....
80 /* for snapshot : */
81 struct target_snapshot_config {
82         struct dm_dev *orig;
84         /* modified blocks bitmaps administration etc*/
85         struct dm_pdev *log_pdev;
86         uint64_t log_regionsize;
87         /* list of sector renames to the log device */
88         ...