Lines Matching refs:vdev

224 vdev_read_phys(vdev_t *vdev, const blkptr_t *bp, void *buf,  in vdev_read_phys()  argument
230 if (vdev->v_phys_read == NULL) in vdev_read_phys()
239 rc = vdev->v_phys_read(vdev, vdev->v_priv, offset, buf, psize); in vdev_read_phys()
242 rc = zio_checksum_verify(vdev->v_spa, bp, buf); in vdev_read_phys()
249 vdev_write_phys(vdev_t *vdev, void *buf, off_t offset, size_t size) in vdev_write_phys() argument
251 if (vdev->v_phys_write == NULL) in vdev_write_phys()
254 return (vdev->v_phys_write(vdev, offset, buf, size)); in vdev_write_phys()
530 vdev_lookup_top(spa_t *spa, uint64_t vdev) in vdev_lookup_top() argument
537 if (rvd->v_id == vdev) in vdev_lookup_top()
689 vdev_indirect_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_indirect_read() argument
693 spa_t *spa = vdev->v_spa; in vdev_indirect_read()
711 zio.io_vd = vdev; in vdev_indirect_read()
714 if (vdev->v_mapping == NULL) { in vdev_indirect_read()
717 vic = &vdev->vdev_indirect_config; in vdev_indirect_read()
718 vdev->v_mapping = vdev_indirect_mapping_open(spa, in vdev_indirect_read()
722 vdev_indirect_remap(vdev, offset, bytes, &zio); in vdev_indirect_read()
777 vdev_disk_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_disk_read() argument
781 return (vdev_read_phys(vdev, bp, buf, in vdev_disk_read()
786 vdev_missing_read(vdev_t *vdev __unused, const blkptr_t *bp __unused, in vdev_missing_read()
794 vdev_mirror_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_mirror_read() argument
801 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_mirror_read()
813 vdev_replacing_read(vdev_t *vdev, const blkptr_t *bp, void *buf, in vdev_replacing_read() argument
825 kid = STAILQ_FIRST(&vdev->v_children); in vdev_replacing_read()
836 vdev_t *vdev; in vdev_find() local
838 STAILQ_FOREACH(vdev, &zfs_vdevs, v_alllink) in vdev_find()
839 if (vdev->v_guid == guid) in vdev_find()
840 return (vdev); in vdev_find()
848 vdev_t *vdev; in vdev_create() local
851 vdev = calloc(1, sizeof (vdev_t)); in vdev_create()
852 if (vdev != NULL) { in vdev_create()
853 STAILQ_INIT(&vdev->v_children); in vdev_create()
854 vdev->v_guid = guid; in vdev_create()
855 vdev->v_read = vdev_read; in vdev_create()
863 vic = &vdev->vdev_indirect_config; in vdev_create()
865 STAILQ_INSERT_TAIL(&zfs_vdevs, vdev, v_alllink); in vdev_create()
869 return (vdev); in vdev_create()
873 vdev_set_initial_state(vdev_t *vdev, const nvlist_t *nvlist) in vdev_set_initial_state() argument
894 vdev->v_state = VDEV_STATE_OFFLINE; in vdev_set_initial_state()
896 vdev->v_state = VDEV_STATE_REMOVED; in vdev_set_initial_state()
898 vdev->v_state = VDEV_STATE_FAULTED; in vdev_set_initial_state()
900 vdev->v_state = VDEV_STATE_DEGRADED; in vdev_set_initial_state()
902 vdev->v_state = VDEV_STATE_CANT_OPEN; in vdev_set_initial_state()
904 vdev->v_islog = is_log != 0; in vdev_set_initial_state()
915 vdev_t *vdev; in vdev_init() local
939 vdev = vdev_create(guid, vdev_mirror_read); in vdev_init()
941 vdev = vdev_create(guid, vdev_raidz_read); in vdev_init()
943 vdev = vdev_create(guid, vdev_replacing_read); in vdev_init()
947 vdev = vdev_create(guid, vdev_indirect_read); in vdev_init()
948 if (vdev != NULL) { in vdev_init()
949 vdev->v_state = VDEV_STATE_HEALTHY; in vdev_init()
950 vic = &vdev->vdev_indirect_config; in vdev_init()
966 vdev = vdev_create(guid, vdev_missing_read); in vdev_init()
968 vdev = vdev_create(guid, vdev_disk_read); in vdev_init()
971 if (vdev == NULL) in vdev_init()
974 vdev_set_initial_state(vdev, nvlist); in vdev_init()
975 vdev->v_id = id; in vdev_init()
978 vdev->v_ashift = ashift; in vdev_init()
982 vdev->v_psize = asize + in vdev_init()
988 vdev->v_nparity = nparity; in vdev_init()
1004 vdev->v_name = name; in vdev_init()
1005 vdev->v_phys_path = NULL; in vdev_init()
1006 vdev->v_devid = NULL; in vdev_init()
1013 vdev->v_phys_path = name; in vdev_init()
1022 vdev->v_devid = name; in vdev_init()
1028 if (vdev->v_nparity < 1 || in vdev_init()
1029 vdev->v_nparity > 3) { in vdev_init()
1031 vdev->v_nparity); in vdev_init()
1035 vdev->v_nparity, id); in vdev_init()
1039 vdev->v_name = name; in vdev_init()
1041 *vdevp = vdev; in vdev_init()
1051 vdev_find_previous(vdev_t *top_vdev, vdev_t *vdev) in vdev_find_previous() argument
1060 if (v->v_id > vdev->v_id) in vdev_find_previous()
1063 if (v->v_id == vdev->v_id) in vdev_find_previous()
1066 if (v->v_id < vdev->v_id) in vdev_find_previous()
1073 vdev_child_count(vdev_t *vdev) in vdev_child_count() argument
1079 STAILQ_FOREACH(v, &vdev->v_children, v_childlink) { in vdev_child_count()
1089 vdev_insert(vdev_t *top_vdev, vdev_t *vdev) in vdev_insert() argument
1101 previous = vdev_find_previous(top_vdev, vdev); in vdev_insert()
1104 STAILQ_INSERT_HEAD(&top_vdev->v_children, vdev, v_childlink); in vdev_insert()
1105 } else if (previous->v_id == vdev->v_id) { in vdev_insert()
1112 STAILQ_INSERT_AFTER(&top_vdev->v_children, previous, vdev, in vdev_insert()
1124 vdev_t *top_vdev, *vdev; in vdev_from_nvlist() local
1151 rc = vdev_init(guid, kids[i], &vdev); in vdev_from_nvlist()
1155 vdev->v_spa = spa; in vdev_from_nvlist()
1156 vdev->v_top = top_vdev; in vdev_from_nvlist()
1157 vdev_insert(top_vdev, vdev); in vdev_from_nvlist()
1199 vdev_set_state(vdev_t *vdev) in vdev_set_state() argument
1205 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_set_state()
1214 if (STAILQ_FIRST(&vdev->v_children)) { in vdev_set_state()
1217 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_set_state()
1224 vdev->v_state = VDEV_STATE_HEALTHY; in vdev_set_state()
1226 if (vdev->v_read == vdev_mirror_read) { in vdev_set_state()
1228 vdev->v_state = VDEV_STATE_DEGRADED; in vdev_set_state()
1230 vdev->v_state = VDEV_STATE_OFFLINE; in vdev_set_state()
1232 } else if (vdev->v_read == vdev_raidz_read) { in vdev_set_state()
1233 if (bad_kids > vdev->v_nparity) { in vdev_set_state()
1234 vdev->v_state = VDEV_STATE_OFFLINE; in vdev_set_state()
1236 vdev->v_state = VDEV_STATE_DEGRADED; in vdev_set_state()
1246 vdev_t *vdev; in vdev_update_from_nvlist() local
1251 vdev = vdev_find(top_guid); in vdev_update_from_nvlist()
1252 if (vdev != NULL) in vdev_update_from_nvlist()
1253 vdev_set_initial_state(vdev, nvlist); in vdev_update_from_nvlist()
1267 vdev = vdev_find(guid); in vdev_update_from_nvlist()
1268 if (vdev != NULL) in vdev_update_from_nvlist()
1269 vdev_set_initial_state(vdev, kids[i]); in vdev_update_from_nvlist()
1320 vdev_t *vdev; in vdev_init_from_nvlist() local
1326 vdev = vdev_find(guid); in vdev_init_from_nvlist()
1330 if (vdev == NULL) in vdev_init_from_nvlist()
1456 vdev_status(vdev_t *vdev, int indent) in vdev_status() argument
1461 if (vdev->v_islog) { in vdev_status()
1466 ret = print_state(indent, vdev->v_name, vdev->v_state); in vdev_status()
1470 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_status()
1484 vdev_t *vdev; in spa_status() local
1513 STAILQ_FOREACH(vdev, vlist, v_childlink) { in spa_status()
1514 if (vdev->v_state == VDEV_STATE_HEALTHY) in spa_status()
1516 else if (vdev->v_state == VDEV_STATE_DEGRADED) in spa_status()
1532 STAILQ_FOREACH(vdev, vlist, v_childlink) { in spa_status()
1533 ret = vdev_status(vdev, 1); in spa_status()
1697 vdev_write_bootenv_impl(vdev_t *vdev, vdev_boot_envblock_t *be) in vdev_write_bootenv_impl() argument
1702 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_write_bootenv_impl()
1713 if (vdev->v_phys_write == NULL) in vdev_write_bootenv_impl()
1717 err = vdev_label_write(vdev, l, be, in vdev_write_bootenv_impl()
1721 vdev->v_name ? vdev->v_name : "unknown", l, err); in vdev_write_bootenv_impl()
1729 vdev_write_bootenv(vdev_t *vdev, nvlist_t *nvl) in vdev_write_bootenv() argument
1740 nvp = vdev_read_bootenv(vdev); in vdev_write_bootenv()
1780 rv = vdev_write_bootenv_impl(vdev, be); in vdev_write_bootenv()
1791 vdev_read_bootenv(vdev_t *vdev) in vdev_read_bootenv() argument
1800 STAILQ_FOREACH(kid, &vdev->v_children, v_childlink) { in vdev_read_bootenv()
1815 rv = vdev_label_read(vdev, l, be, in vdev_read_bootenv()
2021 vdev_t *vdev; in vdev_probe() local
2132 vdev = vdev_find(guid); in vdev_probe()
2134 if (vdev && vdev->v_phys_read) { in vdev_probe()
2148 vdev = vdev_find(guid); in vdev_probe()
2149 if (vdev != NULL) { in vdev_probe()
2150 vdev->v_phys_read = _read; in vdev_probe()
2151 vdev->v_phys_write = _write; in vdev_probe()
2152 vdev->v_priv = priv; in vdev_probe()
2153 vdev->v_psize = vtmp.v_psize; in vdev_probe()
2157 if (vdev->v_state == VDEV_STATE_UNKNOWN) in vdev_probe()
2158 vdev->v_state = VDEV_STATE_HEALTHY; in vdev_probe()
2164 if (vdev->v_islog) in vdev_probe()
2165 spa->spa_with_log = vdev->v_islog; in vdev_probe()
2169 spa->spa_boot_vdev = vdev; in vdev_probe()
2174 vdev_set_state(vdev->v_top); in vdev_probe()
2181 vdev_uberblock_load(vdev, &spa->spa_uberblock); in vdev_probe()
2279 vdev_t *vdev; in zio_read() local
2290 STAILQ_FOREACH(vdev, vlist, v_childlink) { in zio_read()
2291 if (vdev->v_id == vdevid) in zio_read()
2294 if (!vdev || !vdev->v_read) in zio_read()
2298 if (vdev->v_read == vdev_raidz_read) { in zio_read()
2299 align = 1ULL << vdev->v_ashift; in zio_read()
2316 error = vdev->v_read(vdev, bp, pbuf, offset, size); in zio_read()