Lines Matching refs:vol

1382 	struct g_raid_volume	*vol;
1385 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
1386 pv = vol->v_md_data;
1390 return (vol);
1417 struct g_raid_volume *vol, *tvol;
1422 TAILQ_FOREACH_SAFE(vol, &sc->sc_volumes, v_next, tvol) {
1423 pv = vol->v_md_data;
1424 if (vol->v_stopping)
1426 for (i = 0; i < vol->v_disks_count; i++) {
1427 if (vol->v_subdisks[i].sd_state != G_RAID_SUBDISK_S_NONE)
1430 if (i >= vol->v_disks_count) {
1431 g_raid_destroy_volume(vol);
1443 struct g_raid_volume *vol;
1455 vol = g_raid_md_ddf_get_volume(sc,
1457 if (vol != NULL && !vol->v_stopping) {
1602 g_raid_md_ddf_start_disk(struct g_raid_disk *disk, struct g_raid_volume *vol)
1625 pv = vol->v_md_data;
1637 g_raid_get_diskname(disk), vol->v_name);
1671 for (i = 0; i < vol->v_disks_count; i++) {
1672 sd = &vol->v_subdisks[i];
1677 vol->v_subdisks[i].sd_state < sd->sd_state))
1681 vol->v_raid_level != G_RAID_VOLUME_RL_CONCAT &&
1689 if (vol->v_raid_level != G_RAID_VOLUME_RL_CONCAT)
1718 g_raid_get_diskname(disk), disk_pos, vol->v_name);
1722 sd = &vol->v_subdisks[disk_pos];
1730 vol->v_subdisks[disk_pos].sd_disk = disk;
1785 struct g_raid_volume *vol;
1796 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
1797 pv = vol->v_md_data;
1798 if (!pv->pv_started || vol->v_stopping)
1803 for (i = 0; i < vol->v_disks_count; i++) {
1804 sd = &vol->v_subdisks[i];
1813 "trying to refill.", vol->v_name);
1820 for (i = 0; i < vol->v_disks_count; i++) {
1821 sd = &vol->v_subdisks[i];
1825 if (i < vol->v_disks_count)
1832 update = g_raid_md_ddf_start_disk(disk, vol);
1837 g_raid_md_write_ddf(md, vol, NULL, disk);
1847 g_raid_md_ddf_start(struct g_raid_volume *vol)
1861 sc = vol->v_softc;
1864 pv = vol->v_md_data;
1868 vol->v_raid_level = GET8(vmeta, vdc->Primary_RAID_Level);
1869 vol->v_raid_level_qualifier = GET8(vmeta, vdc->RLQ);
1871 vol->v_raid_level == G_RAID_VOLUME_RL_RAID1 &&
1873 vol->v_raid_level = G_RAID_VOLUME_RL_RAID1E;
1874 vol->v_sectorsize = GET16(vmeta, vdc->Block_Size);
1875 if (vol->v_sectorsize == 0xffff)
1876 vol->v_sectorsize = vmeta->sectorsize;
1877 vol->v_strip_size = vol->v_sectorsize << GET8(vmeta, vdc->Stripe_Size);
1878 vol->v_disks_count = GET16(vmeta, vdc->Primary_Element_Count) *
1880 vol->v_mdf_pdisks = GET8(vmeta, vdc->MDF_Parity_Disks);
1881 vol->v_mdf_polynomial = GET16(vmeta, vdc->MDF_Parity_Generator_Polynomial);
1882 vol->v_mdf_method = GET8(vmeta, vdc->MDF_Constant_Generation_Method);
1884 vol->v_rotate_parity = 1;
1886 vol->v_rotate_parity = 1 << GET8(vmeta, vdc->Rotate_Parity_count);
1887 vol->v_mediasize = GET64(vmeta, vdc->VD_Size) * vol->v_sectorsize;
1888 for (i = 0, j = 0, bvd = 0; i < vol->v_disks_count; i++, j++) {
1893 sd = &vol->v_subdisks[i];
1897 vol->v_sectorsize;
1902 sd->sd_offset = GET64P(vmeta, val2 + j) * vol->v_sectorsize;
1904 vol->v_sectorsize;
1906 g_raid_start_volume(vol);
1912 g_raid_md_ddf_start_disk(disk, vol);
1919 g_raid_md_write_ddf(md, vol, NULL, NULL);
1924 g_raid_event_send(vol, G_RAID_VOLUME_E_START, G_RAID_EVENT_VOLUME);
1930 struct g_raid_volume *vol;
1934 vol = arg;
1935 pv = vol->v_md_data;
1936 sc = vol->v_softc;
1939 g_raid_event_send(vol, G_RAID_VOLUME_E_STARTMD,
1952 struct g_raid_volume *vol;
1990 vol = g_raid_md_ddf_get_volume(sc, vdc->VD_GUID);
1991 if (vol == NULL) {
1993 vol = g_raid_create_volume(sc, buf,
1996 vol->v_md_data = pv;
2000 g_raid_ddf_go, vol);
2003 pv = vol->v_md_data;
2015 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
2016 pv = vol->v_md_data;
2023 if (g_raid_md_ddf_start_disk(disk, vol))
2024 g_raid_md_write_ddf(md, vol, NULL, NULL);
2045 vol->v_name, have, need);
2047 g_raid_md_ddf_start(vol);
2224 struct g_raid_volume *vol, u_int event)
2228 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data;
2232 g_raid_md_ddf_start(vol);
2243 struct g_raid_volume *vol, *vol1;
2441 vol = g_raid_create_volume(sc, volname, -1);
2442 vol->v_md_data = pv;
2443 vol->v_raid_level = level;
2444 vol->v_raid_level_qualifier = qual;
2445 vol->v_strip_size = strip;
2446 vol->v_disks_count = numdisks;
2450 vol->v_mediasize = size * numdisks;
2452 vol->v_mediasize = size;
2456 vol->v_mediasize = size * (numdisks - 1);
2458 vol->v_mediasize = size * (numdisks - 1);
2459 vol->v_rotate_parity = 1024;
2463 vol->v_mediasize = size * (numdisks - 2);
2466 vol->v_mdf_pdisks = 2;
2468 vol->v_mdf_pdisks = 3;
2469 vol->v_mdf_polynomial = 0x11d;
2470 vol->v_mdf_method = 0x00;
2471 vol->v_mediasize = size * (numdisks - vol->v_mdf_pdisks);
2473 vol->v_mediasize = ((size * numdisks) / strip / 2) *
2476 vol->v_sectorsize = sectorsize;
2477 g_raid_start_volume(vol);
2482 sd = &vol->v_subdisks[i];
2499 g_raid_md_write_ddf(md, vol, NULL, NULL);
2504 g_raid_event_send(vol, G_RAID_VOLUME_E_START,
2551 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
2552 if (strcmp(vol->v_name, volname) == 0)
2554 pp = vol->v_provider;
2563 if (vol == NULL) {
2566 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
2567 if (vol->v_global_id == i)
2572 if (vol == NULL) {
2580 vol->v_provider_open != 0) {
2590 g_raid_destroy_volume(vol);
2723 struct g_raid_volume *vol;
2763 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
2764 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data;
2765 if (vol->v_stopping || !pv->pv_started)
2771 if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E &&
2772 vol->v_disks_count % 2 == 0)
2776 vol->v_disks_count);
2778 ffs(vol->v_strip_size / vol->v_sectorsize) - 1);
2779 if (vol->v_raid_level == G_RAID_VOLUME_RL_RAID1E &&
2780 vol->v_disks_count % 2 == 0) {
2785 vol->v_disks_count / 2);
2789 vol->v_raid_level);
2791 vol->v_raid_level_qualifier);
2797 SET64(vmeta, vdc->VD_Size, vol->v_mediasize / vol->v_sectorsize);
2798 SET16(vmeta, vdc->Block_Size, vol->v_sectorsize);
2800 fls(vol->v_rotate_parity) - 1);
2801 SET8(vmeta, vdc->MDF_Parity_Disks, vol->v_mdf_pdisks);
2803 vol->v_mdf_polynomial);
2805 vol->v_mdf_method);
2807 SET16(vmeta, vde->VD_Number, vol->v_global_id);
2808 if (vol->v_state <= G_RAID_VOLUME_S_BROKEN)
2810 else if (vol->v_state <= G_RAID_VOLUME_S_DEGRADED)
2812 else if (vol->v_state <= G_RAID_VOLUME_S_SUBOPTIMAL)
2816 if (vol->v_dirty ||
2817 g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_STALE) > 0 ||
2818 g_raid_nsubdisks(vol, G_RAID_SUBDISK_S_RESYNC) > 0)
2822 ddf_meta_put_name(vmeta, vol->v_name);
2824 for (i = 0; i < vol->v_disks_count; i++) {
2825 sd = &vol->v_subdisks[i];
2843 sd->sd_size / vol->v_sectorsize);
2849 sd->sd_offset / vol->v_sectorsize);
2939 TAILQ_FOREACH(vol, &sc->sc_volumes, v_next) {
2940 if (vol->v_stopping)
2942 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data;
2965 vol = sd->sd_volume;
2966 if (vol->v_stopping)
2968 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data;
3049 struct g_raid_volume *vol)
3055 pv = (struct g_raid_md_ddf_pervolume *)vol->v_md_data;
3063 vol->v_md_data = NULL;