Lines Matching refs:vol

1391 	struct g_raid_volume	*vol;  in g_raid_md_ddf_get_volume()  local
1394 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_ddf_get_volume()
1395 pv = vol->v_md_data; in g_raid_md_ddf_get_volume()
1399 return (vol); in g_raid_md_ddf_get_volume()
1426 struct g_raid_volume *vol, *tvol; in g_raid_md_ddf_purge_volumes() local
1430 TAILQ_FOREACH_SAFE(vol, &sc->sc_volumes, v_next, tvol) { in g_raid_md_ddf_purge_volumes()
1431 if (vol->v_stopping) in g_raid_md_ddf_purge_volumes()
1433 for (i = 0; i < vol->v_disks_count; i++) { in g_raid_md_ddf_purge_volumes()
1434 if (vol->v_subdisks[i].sd_state != G_RAID_SUBDISK_S_NONE) in g_raid_md_ddf_purge_volumes()
1437 if (i >= vol->v_disks_count) { in g_raid_md_ddf_purge_volumes()
1438 g_raid_destroy_volume(vol); in g_raid_md_ddf_purge_volumes()
1450 struct g_raid_volume *vol; in g_raid_md_ddf_purge_disks()
1462 vol = g_raid_md_ddf_get_volume(sc, in g_raid_md_ddf_purge_disks()
1464 if (vol != NULL && !vol->v_stopping) { in g_raid_md_ddf_purge_disks()
1609 g_raid_md_ddf_start_disk(struct g_raid_disk *disk, struct g_raid_volume *vol) in g_raid_md_ddf_start_disk() argument
1632 pv = vol->v_md_data; in g_raid_md_ddf_start_disk()
1644 g_raid_get_diskname(disk), vol->v_name); in g_raid_md_ddf_start_disk()
1678 for (i = 0; i < vol->v_disks_count; i++) { in g_raid_md_ddf_start_disk()
1679 sd = &vol->v_subdisks[i]; in g_raid_md_ddf_start_disk()
1684 vol->v_subdisks[i].sd_state < sd->sd_state)) in g_raid_md_ddf_start_disk()
1688 vol->v_raid_level != G_RAID_VOLUME_RL_CONCAT && in g_raid_md_ddf_start_disk()
1696 if (vol->v_raid_level != G_RAID_VOLUME_RL_CONCAT) in g_raid_md_ddf_start_disk()
1725 g_raid_get_diskname(disk), disk_pos, vol->v_name); in g_raid_md_ddf_start_disk()
1729 sd = &vol->v_subdisks[disk_pos]; in g_raid_md_ddf_start_disk()
1737 vol->v_subdisks[disk_pos].sd_disk = disk; in g_raid_md_ddf_start_disk()
1792 struct g_raid_volume *vol; in g_raid_md_ddf_refill() local
1803 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_ddf_refill()
1804 pv = vol->v_md_data; in g_raid_md_ddf_refill()
1805 if (!pv->pv_started || vol->v_stopping) in g_raid_md_ddf_refill()
1810 for (i = 0; i < vol->v_disks_count; i++) { in g_raid_md_ddf_refill()
1811 sd = &vol->v_subdisks[i]; in g_raid_md_ddf_refill()
1820 "trying to refill.", vol->v_name); in g_raid_md_ddf_refill()
1827 for (i = 0; i < vol->v_disks_count; i++) { in g_raid_md_ddf_refill()
1828 sd = &vol->v_subdisks[i]; in g_raid_md_ddf_refill()
1832 if (i < vol->v_disks_count) in g_raid_md_ddf_refill()
1839 update = g_raid_md_ddf_start_disk(disk, vol); in g_raid_md_ddf_refill()
1844 g_raid_md_write_ddf(md, vol, NULL, disk); in g_raid_md_ddf_refill()
1854 g_raid_md_ddf_start(struct g_raid_volume *vol) in g_raid_md_ddf_start() argument
1867 sc = vol->v_softc; in g_raid_md_ddf_start()
1870 pv = vol->v_md_data; in g_raid_md_ddf_start()
1873 vol->v_raid_level = GET8(vmeta, vdc->Primary_RAID_Level); in g_raid_md_ddf_start()
1874 vol->v_raid_level_qualifier = GET8(vmeta, vdc->RLQ); in g_raid_md_ddf_start()
1876 vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 && in g_raid_md_ddf_start()
1878 vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E; in g_raid_md_ddf_start()
1879 vol->v_sectorsize = GET16(vmeta, vdc->Block_Size); in g_raid_md_ddf_start()
1880 if (vol->v_sectorsize == 0xffff) in g_raid_md_ddf_start()
1881 vol->v_sectorsize = vmeta->sectorsize; in g_raid_md_ddf_start()
1882 vol->v_strip_size = vol->v_sectorsize << GET8(vmeta, vdc->Stripe_Size); in g_raid_md_ddf_start()
1883 vol->v_disks_count = GET16(vmeta, vdc->Primary_Element_Count) * in g_raid_md_ddf_start()
1885 vol->v_mdf_pdisks = GET8(vmeta, vdc->MDF_Parity_Disks); in g_raid_md_ddf_start()
1886 vol->v_mdf_polynomial = GET16(vmeta, vdc->MDF_Parity_Generator_Polynomial); in g_raid_md_ddf_start()
1887 vol->v_mdf_method = GET8(vmeta, vdc->MDF_Constant_Generation_Method); in g_raid_md_ddf_start()
1889 vol->v_rotate_parity = 1; in g_raid_md_ddf_start()
1891 vol->v_rotate_parity = 1 << GET8(vmeta, vdc->Rotate_Parity_count); in g_raid_md_ddf_start()
1892 vol->v_mediasize = GET64(vmeta, vdc->VD_Size) * vol->v_sectorsize; in g_raid_md_ddf_start()
1893 for (i = 0, j = 0, bvd = 0; i < vol->v_disks_count; i++, j++) { in g_raid_md_ddf_start()
1898 sd = &vol->v_subdisks[i]; in g_raid_md_ddf_start()
1902 vol->v_sectorsize; in g_raid_md_ddf_start()
1907 sd->sd_offset = GET64P(vmeta, val2 + j) * vol->v_sectorsize; in g_raid_md_ddf_start()
1909 vol->v_sectorsize; in g_raid_md_ddf_start()
1911 g_raid_start_volume(vol); in g_raid_md_ddf_start()
1917 g_raid_md_ddf_start_disk(disk, vol); in g_raid_md_ddf_start()
1924 g_raid_md_write_ddf(md, vol, NULL, NULL); in g_raid_md_ddf_start()
1929 g_raid_event_send(vol, G_RAID_VOLUME_E_START, G_RAID_EVENT_VOLUME); in g_raid_md_ddf_start()
1935 struct g_raid_volume *vol; in g_raid_ddf_go() local
1939 vol = arg; in g_raid_ddf_go()
1940 pv = vol->v_md_data; in g_raid_ddf_go()
1941 sc = vol->v_softc; in g_raid_ddf_go()
1944 g_raid_event_send(vol, G_RAID_VOLUME_E_STARTMD, in g_raid_ddf_go()
1957 struct g_raid_volume *vol; in g_raid_md_ddf_new_disk() local
1995 vol = g_raid_md_ddf_get_volume(sc, vdc->VD_GUID); in g_raid_md_ddf_new_disk()
1996 if (vol == NULL) { in g_raid_md_ddf_new_disk()
1998 vol = g_raid_create_volume(sc, buf, in g_raid_md_ddf_new_disk()
2001 vol->v_md_data = pv; in g_raid_md_ddf_new_disk()
2005 g_raid_ddf_go, vol); in g_raid_md_ddf_new_disk()
2008 pv = vol->v_md_data; in g_raid_md_ddf_new_disk()
2020 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_ddf_new_disk()
2021 pv = vol->v_md_data; in g_raid_md_ddf_new_disk()
2028 if (g_raid_md_ddf_start_disk(disk, vol)) in g_raid_md_ddf_new_disk()
2029 g_raid_md_write_ddf(md, vol, NULL, NULL); in g_raid_md_ddf_new_disk()
2050 vol->v_name, have, need); in g_raid_md_ddf_new_disk()
2052 g_raid_md_ddf_start(vol); in g_raid_md_ddf_new_disk()
2229 struct g_raid_volume *vol, u_int event) in g_raid_md_volume_event_ddf() argument
2233 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data; in g_raid_md_volume_event_ddf()
2237 g_raid_md_ddf_start(vol); in g_raid_md_volume_event_ddf()
2248 struct g_raid_volume *vol, *vol1; in g_raid_md_ctl_ddf() local
2445 vol = g_raid_create_volume(sc, volname, -1); in g_raid_md_ctl_ddf()
2446 vol->v_md_data = pv; in g_raid_md_ctl_ddf()
2447 vol->v_raid_level = level; in g_raid_md_ctl_ddf()
2448 vol->v_raid_level_qualifier = qual; in g_raid_md_ctl_ddf()
2449 vol->v_strip_size = strip; in g_raid_md_ctl_ddf()
2450 vol->v_disks_count = numdisks; in g_raid_md_ctl_ddf()
2454 vol->v_mediasize = size * numdisks; in g_raid_md_ctl_ddf()
2456 vol->v_mediasize = size; in g_raid_md_ctl_ddf()
2460 vol->v_mediasize = size * (numdisks - 1); in g_raid_md_ctl_ddf()
2462 vol->v_mediasize = size * (numdisks - 1); in g_raid_md_ctl_ddf()
2463 vol->v_rotate_parity = 1024; in g_raid_md_ctl_ddf()
2467 vol->v_mediasize = size * (numdisks - 2); in g_raid_md_ctl_ddf()
2470 vol->v_mdf_pdisks = 2; in g_raid_md_ctl_ddf()
2472 vol->v_mdf_pdisks = 3; in g_raid_md_ctl_ddf()
2473 vol->v_mdf_polynomial = 0x11d; in g_raid_md_ctl_ddf()
2474 vol->v_mdf_method = 0x00; in g_raid_md_ctl_ddf()
2475 vol->v_mediasize = size * (numdisks - vol->v_mdf_pdisks); in g_raid_md_ctl_ddf()
2477 vol->v_mediasize = ((size * numdisks) / strip / 2) * in g_raid_md_ctl_ddf()
2480 vol->v_sectorsize = sectorsize; in g_raid_md_ctl_ddf()
2481 g_raid_start_volume(vol); in g_raid_md_ctl_ddf()
2486 sd = &vol->v_subdisks[i]; in g_raid_md_ctl_ddf()
2503 g_raid_md_write_ddf(md, vol, NULL, NULL); in g_raid_md_ctl_ddf()
2508 g_raid_event_send(vol, G_RAID_VOLUME_E_START, in g_raid_md_ctl_ddf()
2553 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_ctl_ddf()
2554 if (strcmp(vol->v_name, volname) == 0) in g_raid_md_ctl_ddf()
2556 pp = vol->v_provider; in g_raid_md_ctl_ddf()
2565 if (vol == NULL) { in g_raid_md_ctl_ddf()
2568 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_ctl_ddf()
2569 if (vol->v_global_id == i) in g_raid_md_ctl_ddf()
2574 if (vol == NULL) { in g_raid_md_ctl_ddf()
2582 vol->v_provider_open != 0) { in g_raid_md_ctl_ddf()
2592 g_raid_destroy_volume(vol); in g_raid_md_ctl_ddf()
2725 struct g_raid_volume *vol; in g_raid_md_write_ddf() local
2765 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_write_ddf()
2766 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data; in g_raid_md_write_ddf()
2767 if (vol->v_stopping || !pv->pv_started) in g_raid_md_write_ddf()
2773 if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E && in g_raid_md_write_ddf()
2774 vol->v_disks_count % 2 == 0) in g_raid_md_write_ddf()
2778 vol->v_disks_count); in g_raid_md_write_ddf()
2780 ffs(vol->v_strip_size / vol->v_sectorsize) - 1); in g_raid_md_write_ddf()
2781 if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E && in g_raid_md_write_ddf()
2782 vol->v_disks_count % 2 == 0) { in g_raid_md_write_ddf()
2787 vol->v_disks_count / 2); in g_raid_md_write_ddf()
2791 vol->v_raid_level); in g_raid_md_write_ddf()
2793 vol->v_raid_level_qualifier); in g_raid_md_write_ddf()
2799 SET64(vmeta, vdc->VD_Size, vol->v_mediasize / vol->v_sectorsize); in g_raid_md_write_ddf()
2800 SET16(vmeta, vdc->Block_Size, vol->v_sectorsize); in g_raid_md_write_ddf()
2802 fls(vol->v_rotate_parity) - 1); in g_raid_md_write_ddf()
2803 SET8(vmeta, vdc->MDF_Parity_Disks, vol->v_mdf_pdisks); in g_raid_md_write_ddf()
2805 vol->v_mdf_polynomial); in g_raid_md_write_ddf()
2807 vol->v_mdf_method); in g_raid_md_write_ddf()
2809 SET16(vmeta, vde->VD_Number, vol->v_global_id); in g_raid_md_write_ddf()
2810 if (vol->v_state <= G_RAID_VOLUME_S_BROKEN) in g_raid_md_write_ddf()
2812 else if (vol->v_state <= G_RAID_VOLUME_S_DEGRADED) in g_raid_md_write_ddf()
2814 else if (vol->v_state <= G_RAID_VOLUME_S_SUBOPTIMAL) in g_raid_md_write_ddf()
2818 if (vol->v_dirty || in g_raid_md_write_ddf()
2819 g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_STALE) > 0 || in g_raid_md_write_ddf()
2820 g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_RESYNC) > 0) in g_raid_md_write_ddf()
2824 ddf_meta_put_name(vmeta, vol->v_name); in g_raid_md_write_ddf()
2826 for (i = 0; i < vol->v_disks_count; i++) { in g_raid_md_write_ddf()
2827 sd = &vol->v_subdisks[i]; in g_raid_md_write_ddf()
2845 sd->sd_size / vol->v_sectorsize); in g_raid_md_write_ddf()
2851 sd->sd_offset / vol->v_sectorsize); in g_raid_md_write_ddf()
2941 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) { in g_raid_md_write_ddf()
2942 if (vol->v_stopping) in g_raid_md_write_ddf()
2944 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data; in g_raid_md_write_ddf()
2967 vol = sd->sd_volume; in g_raid_md_write_ddf()
2968 if (vol->v_stopping) in g_raid_md_write_ddf()
2970 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data; in g_raid_md_write_ddf()
3051 struct g_raid_volume *vol) in g_raid_md_free_volume_ddf() argument
3057 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data; in g_raid_md_free_volume_ddf()
3065 vol->v_md_data = NULL; in g_raid_md_free_volume_ddf()