51 extern int vdev_validate(vdev_t *); |
51 extern int vdev_validate(vdev_t *); |
52 extern void vdev_close(vdev_t *); |
52 extern void vdev_close(vdev_t *); |
53 extern int vdev_create(vdev_t *, uint64_t txg, boolean_t isreplace); |
53 extern int vdev_create(vdev_t *, uint64_t txg, boolean_t isreplace); |
54 extern void vdev_init(vdev_t *, uint64_t txg); |
54 extern void vdev_init(vdev_t *, uint64_t txg); |
55 extern void vdev_reopen(vdev_t *); |
55 extern void vdev_reopen(vdev_t *); |
56 extern int vdev_validate_spare(vdev_t *); |
56 extern int vdev_validate_aux(vdev_t *vd); |
57 extern int vdev_probe(vdev_t *); |
57 extern int vdev_probe(vdev_t *); |
58 |
58 |
59 extern vdev_t *vdev_lookup_top(spa_t *spa, uint64_t vdev); |
59 extern vdev_t *vdev_lookup_top(spa_t *spa, uint64_t vdev); |
60 extern vdev_t *vdev_lookup_by_guid(vdev_t *vd, uint64_t guid); |
60 extern vdev_t *vdev_lookup_by_guid(vdev_t *vd, uint64_t guid); |
61 extern void vdev_dtl_dirty(space_map_t *sm, uint64_t txg, uint64_t size); |
61 extern void vdev_dtl_dirty(space_map_t *sm, uint64_t txg, uint64_t size); |
67 |
67 |
68 extern int vdev_metaslab_init(vdev_t *vd, uint64_t txg); |
68 extern int vdev_metaslab_init(vdev_t *vd, uint64_t txg); |
69 extern void vdev_metaslab_fini(vdev_t *vd); |
69 extern void vdev_metaslab_fini(vdev_t *vd); |
70 |
70 |
71 extern void vdev_get_stats(vdev_t *vd, vdev_stat_t *vs); |
71 extern void vdev_get_stats(vdev_t *vd, vdev_stat_t *vs); |
|
72 extern void vdev_clear_stats(vdev_t *vd); |
72 extern void vdev_stat_update(zio_t *zio); |
73 extern void vdev_stat_update(zio_t *zio); |
73 extern void vdev_scrub_stat_update(vdev_t *vd, pool_scrub_type_t type, |
74 extern void vdev_scrub_stat_update(vdev_t *vd, pool_scrub_type_t type, |
74 boolean_t complete); |
75 boolean_t complete); |
75 extern int vdev_getspec(spa_t *spa, uint64_t vdev, char **vdev_spec); |
76 extern int vdev_getspec(spa_t *spa, uint64_t vdev, char **vdev_spec); |
76 extern void vdev_propagate_state(vdev_t *vd); |
77 extern void vdev_propagate_state(vdev_t *vd); |
77 extern void vdev_set_state(vdev_t *vd, boolean_t isopen, vdev_state_t state, |
78 extern void vdev_set_state(vdev_t *vd, boolean_t isopen, vdev_state_t state, |
78 vdev_aux_t aux); |
79 vdev_aux_t aux); |
79 |
80 |
80 extern void vdev_space_update(vdev_t *vd, int64_t space_delta, |
81 extern void vdev_space_update(vdev_t *vd, int64_t space_delta, |
81 int64_t alloc_delta); |
82 int64_t alloc_delta, boolean_t update_root); |
82 |
83 |
83 extern uint64_t vdev_psize_to_asize(vdev_t *vd, uint64_t psize); |
84 extern uint64_t vdev_psize_to_asize(vdev_t *vd, uint64_t psize); |
84 |
85 |
85 extern void vdev_io_start(zio_t *zio); |
86 extern void vdev_io_start(zio_t *zio); |
86 extern void vdev_io_done(zio_t *zio); |
87 extern void vdev_io_done(zio_t *zio); |
111 extern void vdev_config_dirty(vdev_t *vd); |
112 extern void vdev_config_dirty(vdev_t *vd); |
112 extern void vdev_config_clean(vdev_t *vd); |
113 extern void vdev_config_clean(vdev_t *vd); |
113 extern int vdev_config_sync(vdev_t *vd, uint64_t txg); |
114 extern int vdev_config_sync(vdev_t *vd, uint64_t txg); |
114 |
115 |
115 extern nvlist_t *vdev_config_generate(spa_t *spa, vdev_t *vd, |
116 extern nvlist_t *vdev_config_generate(spa_t *spa, vdev_t *vd, |
116 boolean_t getstats, boolean_t isspare); |
117 boolean_t getstats, boolean_t isspare, boolean_t isl2cache); |
117 |
118 |
118 /* |
119 /* |
119 * Label routines |
120 * Label routines |
120 */ |
121 */ |
121 struct uberblock; |
122 struct uberblock; |
125 |
126 |
126 typedef enum { |
127 typedef enum { |
127 VDEV_LABEL_CREATE, /* create/add a new device */ |
128 VDEV_LABEL_CREATE, /* create/add a new device */ |
128 VDEV_LABEL_REPLACE, /* replace an existing device */ |
129 VDEV_LABEL_REPLACE, /* replace an existing device */ |
129 VDEV_LABEL_SPARE, /* add a new hot spare */ |
130 VDEV_LABEL_SPARE, /* add a new hot spare */ |
130 VDEV_LABEL_REMOVE /* remove an existing device */ |
131 VDEV_LABEL_REMOVE, /* remove an existing device */ |
|
132 VDEV_LABEL_L2CACHE /* add an L2ARC cache device */ |
131 } vdev_labeltype_t; |
133 } vdev_labeltype_t; |
132 |
134 |
133 extern int vdev_label_init(vdev_t *vd, uint64_t txg, vdev_labeltype_t reason); |
135 extern int vdev_label_init(vdev_t *vd, uint64_t txg, vdev_labeltype_t reason); |
134 |
136 |
135 #ifdef __cplusplus |
137 #ifdef __cplusplus |