Lines Matching refs:vdev

233 vdev_read_phys(vdev_t *vdev, const blkptr_t *bp, void *buf,  in vdev_read_phys()  argument
239 if (vdev->v_phys_read == NULL) in vdev_read_phys()
248 rc = vdev->v_phys_read(vdev, vdev->v_priv, offset, buf, psize); in vdev_read_phys()
251 rc = zio_checksum_verify(vdev->v_spa, bp, buf); in vdev_read_phys()
258 vdev_write_phys(vdev_t *vdev, void *buf, off_t offset, size_t size) in vdev_write_phys() argument
260 if (vdev->v_phys_write == NULL) in vdev_write_phys()
263 return (vdev->v_phys_write(vdev, offset, buf, size)); in vdev_write_phys()
539 vdev_lookup_top(spa_t *spa, uint64_t vdev) in vdev_lookup_top() argument
546 if (rvd->v_id == vdev) in vdev_lookup_top()
698 vdev_indirect_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_indirect_read() argument
702 spa_t *spa = vdev->v_spa; in vdev_indirect_read()
720 zio.io_vd = vdev; in vdev_indirect_read()
723 if (vdev->v_mapping == NULL) { in vdev_indirect_read()
726 vic = &vdev->vdev_indirect_config; in vdev_indirect_read()
727 vdev->v_mapping = vdev_indirect_mapping_open(spa, in vdev_indirect_read()
731 vdev_indirect_remap(vdev, offset, bytes, &zio); in vdev_indirect_read()
786 vdev_disk_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_disk_read() argument
790 return (vdev_read_phys(vdev, bp, buf, in vdev_disk_read()
795 vdev_missing_read(vdev_t *vdev __unused, const blkptr_t *bp __unused, in vdev_missing_read()
803 vdev_mirror_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_mirror_read() argument
810 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_mirror_read()
822 vdev_replacing_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_replacing_read() argument
834 kid = STAILQ_FIRST(&vdev->v_children); in vdev_replacing_read()
845 vdev_t *vdev; in vdev_find() local
847 STAILQ_FOREACH(vdev, &zfs_vdevs, v_alllink) in vdev_find()
848 if (vdev->v_guid == guid) in vdev_find()
849 return (vdev); in vdev_find()
857 vdev_t *vdev; in vdev_create() local
860 vdev = calloc(1, sizeof(vdev_t)); in vdev_create()
861 if (vdev != NULL) { in vdev_create()
862 STAILQ_INIT(&vdev->v_children); in vdev_create()
863 vdev->v_guid = guid; in vdev_create()
864 vdev->v_read = _read; in vdev_create()
872 vic = &vdev->vdev_indirect_config; in vdev_create()
874 STAILQ_INSERT_TAIL(&zfs_vdevs, vdev, v_alllink); in vdev_create()
878 return (vdev); in vdev_create()
882 vdev_set_initial_state(vdev_t *vdev, const nvlist_t *nvlist) in vdev_set_initial_state() argument
903 vdev->v_state = VDEV_STATE_OFFLINE; in vdev_set_initial_state()
905 vdev->v_state = VDEV_STATE_REMOVED; in vdev_set_initial_state()
907 vdev->v_state = VDEV_STATE_FAULTED; in vdev_set_initial_state()
909 vdev->v_state = VDEV_STATE_DEGRADED; in vdev_set_initial_state()
911 vdev->v_state = VDEV_STATE_CANT_OPEN; in vdev_set_initial_state()
913 vdev->v_islog = is_log != 0; in vdev_set_initial_state()
924 vdev_t *vdev; in vdev_init() local
948 vdev = vdev_create(guid, vdev_mirror_read); in vdev_init()
950 vdev = vdev_create(guid, vdev_raidz_read); in vdev_init()
952 vdev = vdev_create(guid, vdev_replacing_read); in vdev_init()
956 vdev = vdev_create(guid, vdev_indirect_read); in vdev_init()
957 if (vdev != NULL) { in vdev_init()
958 vdev->v_state = VDEV_STATE_HEALTHY; in vdev_init()
959 vic = &vdev->vdev_indirect_config; in vdev_init()
975 vdev = vdev_create(guid, vdev_missing_read); in vdev_init()
977 vdev = vdev_create(guid, vdev_disk_read); in vdev_init()
980 if (vdev == NULL) in vdev_init()
983 vdev_set_initial_state(vdev, nvlist); in vdev_init()
984 vdev->v_id = id; in vdev_init()
987 vdev->v_ashift = ashift; in vdev_init()
991 vdev->v_psize = asize + in vdev_init()
997 vdev->v_nparity = nparity; in vdev_init()
1011 vdev->v_name = name; in vdev_init()
1015 if (vdev->v_nparity < 1 || in vdev_init()
1016 vdev->v_nparity > 3) { in vdev_init()
1018 vdev->v_nparity); in vdev_init()
1022 vdev->v_nparity, id); in vdev_init()
1026 vdev->v_name = name; in vdev_init()
1028 *vdevp = vdev; in vdev_init()
1038 vdev_find_previous(vdev_t *top_vdev, vdev_t *vdev) in vdev_find_previous() argument
1047 if (v->v_id > vdev->v_id) in vdev_find_previous()
1050 if (v->v_id == vdev->v_id) in vdev_find_previous()
1053 if (v->v_id < vdev->v_id) in vdev_find_previous()
1060 vdev_child_count(vdev_t *vdev) in vdev_child_count() argument
1066 STAILQ_FOREACH(v, &vdev->v_children, v_childlink) { in vdev_child_count()
1076 vdev_insert(vdev_t *top_vdev, vdev_t *vdev) in vdev_insert() argument
1088 previous = vdev_find_previous(top_vdev, vdev); in vdev_insert()
1091 STAILQ_INSERT_HEAD(&top_vdev->v_children, vdev, v_childlink); in vdev_insert()
1092 } else if (previous->v_id == vdev->v_id) { in vdev_insert()
1099 STAILQ_INSERT_AFTER(&top_vdev->v_children, previous, vdev, in vdev_insert()
1112 vdev_t *top_vdev, *vdev; in vdev_from_nvlist() local
1140 rc = vdev_init(guid, kids[i], &vdev); in vdev_from_nvlist()
1144 vdev->v_spa = spa; in vdev_from_nvlist()
1145 vdev->v_top = top_vdev; in vdev_from_nvlist()
1146 vdev_insert(top_vdev, vdev); in vdev_from_nvlist()
1190 vdev_set_state(vdev_t *vdev) in vdev_set_state() argument
1196 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_set_state()
1205 if (STAILQ_FIRST(&vdev->v_children)) { in vdev_set_state()
1208 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_set_state()
1215 vdev->v_state = VDEV_STATE_HEALTHY; in vdev_set_state()
1217 if (vdev->v_read == vdev_mirror_read) { in vdev_set_state()
1219 vdev->v_state = VDEV_STATE_DEGRADED; in vdev_set_state()
1221 vdev->v_state = VDEV_STATE_OFFLINE; in vdev_set_state()
1223 } else if (vdev->v_read == vdev_raidz_read) { in vdev_set_state()
1224 if (bad_kids > vdev->v_nparity) { in vdev_set_state()
1225 vdev->v_state = VDEV_STATE_OFFLINE; in vdev_set_state()
1227 vdev->v_state = VDEV_STATE_DEGRADED; in vdev_set_state()
1237 vdev_t *vdev; in vdev_update_from_nvlist() local
1242 vdev = vdev_find(top_guid); in vdev_update_from_nvlist()
1243 if (vdev != NULL) in vdev_update_from_nvlist()
1244 vdev_set_initial_state(vdev, nvlist); in vdev_update_from_nvlist()
1258 vdev = vdev_find(guid); in vdev_update_from_nvlist()
1259 if (vdev != NULL) in vdev_update_from_nvlist()
1260 vdev_set_initial_state(vdev, kids[i]); in vdev_update_from_nvlist()
1279 vdev_free(struct vdev *vdev) in vdev_free() argument
1281 struct vdev *kid, *safe; in vdev_free()
1283 STAILQ_FOREACH_SAFE(kid, &vdev->v_children, v_childlink, safe) in vdev_free()
1285 STAILQ_REMOVE(&zfs_vdevs, vdev, vdev, v_alllink); in vdev_free()
1286 free(vdev); in vdev_free()
1326 vdev_t *vdev; in vdev_init_from_nvlist() local
1332 vdev = vdev_find(guid); in vdev_init_from_nvlist()
1337 if (vdev == NULL) in vdev_init_from_nvlist()
1460 vdev_status(vdev_t *vdev, int indent) in vdev_status() argument
1465 if (vdev->v_islog) { in vdev_status()
1470 ret = print_state(indent, vdev->v_name, vdev->v_state); in vdev_status()
1474 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_status()
1488 vdev_t *vdev; in spa_status() local
1517 STAILQ_FOREACH(vdev, vlist, v_childlink) { in spa_status()
1518 if (vdev->v_state == VDEV_STATE_HEALTHY) in spa_status()
1520 else if (vdev->v_state == VDEV_STATE_DEGRADED) in spa_status()
1536 STAILQ_FOREACH(vdev, vlist, v_childlink) { in spa_status()
1537 ret = vdev_status(vdev, 1); in spa_status()
1701 vdev_write_bootenv_impl(vdev_t *vdev, vdev_boot_envblock_t *be) in vdev_write_bootenv_impl() argument
1706 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_write_bootenv_impl()
1717 if (vdev->v_phys_write == NULL) in vdev_write_bootenv_impl()
1721 err = vdev_label_write(vdev, l, be, in vdev_write_bootenv_impl()
1725 vdev->v_name ? vdev->v_name : "unknown", l, err); in vdev_write_bootenv_impl()
1733 vdev_write_bootenv(vdev_t *vdev, nvlist_t *nvl) in vdev_write_bootenv() argument
1744 nvp = vdev_read_bootenv(vdev); in vdev_write_bootenv()
1784 rv = vdev_write_bootenv_impl(vdev, be); in vdev_write_bootenv()
1795 vdev_read_bootenv(vdev_t *vdev) in vdev_read_bootenv() argument
1804 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_read_bootenv()
1819 rv = vdev_label_read(vdev, l, be, in vdev_read_bootenv()
2026 vdev_t *vdev; in vdev_probe() local
2123 struct vdev *kid; in vdev_probe()
2133 kid, vdev, v_childlink); in vdev_probe()
2145 vdev = vdev_find(guid); in vdev_probe()
2147 if (vdev && vdev->v_phys_read) { in vdev_probe()
2161 vdev = vdev_find(guid); in vdev_probe()
2162 if (vdev != NULL) { in vdev_probe()
2163 vdev->v_phys_read = _read; in vdev_probe()
2164 vdev->v_phys_write = _write; in vdev_probe()
2165 vdev->v_priv = priv; in vdev_probe()
2166 vdev->v_psize = vtmp.v_psize; in vdev_probe()
2170 if (vdev->v_state == VDEV_STATE_UNKNOWN) in vdev_probe()
2171 vdev->v_state = VDEV_STATE_HEALTHY; in vdev_probe()
2177 if (vdev->v_islog) in vdev_probe()
2178 spa->spa_with_log = vdev->v_islog; in vdev_probe()
2183 vdev_set_state(vdev->v_top); in vdev_probe()
2190 vdev_uberblock_load(vdev, spa->spa_uberblock); in vdev_probe()
2288 vdev_t *vdev; in zio_read() local
2299 STAILQ_FOREACH(vdev, vlist, v_childlink) { in zio_read()
2300 if (vdev->v_id == vdevid) in zio_read()
2303 if (!vdev || !vdev->v_read) in zio_read()
2307 if (vdev->v_read == vdev_raidz_read) { in zio_read()
2308 align = 1ULL << vdev->v_ashift; in zio_read()
2325 error = vdev->v_read(vdev, bp, pbuf, offset, size); in zio_read()