3 /* constant dm_target structures for error, zero, linear, stripes etc. */
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 */
19 struct dm_target *target;
21 SLIST_ENTRY(dm_table_entry) next;
23 SLIST(dm_table, dm_table_entry);
27 struct vnode *pdev_vnode;
29 SLIST_ENTRY(dm_pdev) next_pdev;
31 SLIST(dm_pdevs, pm_pdev);
35 char name[DM_NAME_LEN];
36 char uuid[DM_UUID_LEN];
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 */
60 struct target_linear_config {
67 struct target_mirror_config {
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? */
81 struct target_snapshot_config {
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 */