Lines Matching refs:meta
148 g_raid_md_sii_print(struct sii_raid_conf *meta) in g_raid_md_sii_print() argument
156 (long long unsigned)meta->total_sectors); in g_raid_md_sii_print()
157 printf("product_id 0x%04x\n", meta->product_id); in g_raid_md_sii_print()
158 printf("vendor_id 0x%04x\n", meta->vendor_id); in g_raid_md_sii_print()
159 printf("version_minor 0x%04x\n", meta->version_minor); in g_raid_md_sii_print()
160 printf("version_major 0x%04x\n", meta->version_major); in g_raid_md_sii_print()
162 meta->timestamp[5], meta->timestamp[4], meta->timestamp[3], in g_raid_md_sii_print()
163 meta->timestamp[2], meta->timestamp[1], meta->timestamp[0]); in g_raid_md_sii_print()
164 printf("strip_sectors %d\n", meta->strip_sectors); in g_raid_md_sii_print()
165 printf("disk_number %d\n", meta->disk_number); in g_raid_md_sii_print()
166 printf("type 0x%02x\n", meta->type); in g_raid_md_sii_print()
167 printf("raid0_disks %d\n", meta->raid0_disks); in g_raid_md_sii_print()
168 printf("raid0_ident %d\n", meta->raid0_ident); in g_raid_md_sii_print()
169 printf("raid1_disks %d\n", meta->raid1_disks); in g_raid_md_sii_print()
170 printf("raid1_ident %d\n", meta->raid1_ident); in g_raid_md_sii_print()
172 (long long unsigned)meta->rebuild_lba); in g_raid_md_sii_print()
173 printf("generation %d\n", meta->generation); in g_raid_md_sii_print()
174 printf("disk_status %d\n", meta->disk_status); in g_raid_md_sii_print()
175 printf("raid_status %d\n", meta->raid_status); in g_raid_md_sii_print()
176 printf("raid_location %d\n", meta->raid_location); in g_raid_md_sii_print()
177 printf("disk_location %d\n", meta->disk_location); in g_raid_md_sii_print()
178 printf("auto_rebuild %d\n", meta->auto_rebuild); in g_raid_md_sii_print()
179 printf("name <%.16s>\n", meta->name); in g_raid_md_sii_print()
180 printf("checksum 0x%04x\n", meta->checksum); in g_raid_md_sii_print()
185 sii_meta_copy(struct sii_raid_conf *meta) in sii_meta_copy() argument
189 nmeta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK); in sii_meta_copy()
190 memcpy(nmeta, meta, sizeof(*meta)); in sii_meta_copy()
195 sii_meta_total_disks(struct sii_raid_conf *meta) in sii_meta_total_disks() argument
198 switch (meta->type) { in sii_meta_total_disks()
202 return (meta->raid0_disks); in sii_meta_total_disks()
204 return (meta->raid1_disks); in sii_meta_total_disks()
206 return (meta->raid0_disks * meta->raid1_disks); in sii_meta_total_disks()
215 sii_meta_disk_pos(struct sii_raid_conf *meta, struct sii_raid_conf *pdmeta) in sii_meta_disk_pos() argument
221 if (memcmp(&meta->timestamp, &pdmeta->timestamp, 6) != 0) in sii_meta_disk_pos()
240 sii_meta_get_name(struct sii_raid_conf *meta, char *buf) in sii_meta_get_name() argument
244 strncpy(buf, meta->name, 16); in sii_meta_get_name()
254 sii_meta_put_name(struct sii_raid_conf *meta, char *buf) in sii_meta_put_name() argument
257 memset(meta->name, 0x20, 16); in sii_meta_put_name()
258 memcpy(meta->name, buf, MIN(strlen(buf), 16)); in sii_meta_put_name()
265 struct sii_raid_conf *meta; in sii_meta_read() local
271 if (pp->sectorsize < sizeof(*meta)) in sii_meta_read()
281 meta = (struct sii_raid_conf *)buf; in sii_meta_read()
284 if (meta->vendor_id != 0x1095) { in sii_meta_read()
286 pp->name, meta->vendor_id); in sii_meta_read()
292 if (meta->version_major != 2) { in sii_meta_read()
294 pp->name, meta->version_major, meta->version_minor); in sii_meta_read()
298 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK); in sii_meta_read()
299 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize)); in sii_meta_read()
303 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i <= 159; i++) in sii_meta_read()
307 free(meta, M_MD_SII); in sii_meta_read()
312 if (meta->type != SII_T_RAID0 && meta->type != SII_T_RAID1 && in sii_meta_read()
313 meta->type != SII_T_RAID01 && meta->type != SII_T_SPARE && in sii_meta_read()
314 meta->type != SII_T_RAID5 && meta->type != SII_T_CONCAT && in sii_meta_read()
315 meta->type != SII_T_JBOD) { in sii_meta_read()
317 pp->name, meta->type); in sii_meta_read()
318 free(meta, M_MD_SII); in sii_meta_read()
322 return (meta); in sii_meta_read()
326 sii_meta_write(struct g_consumer *cp, struct sii_raid_conf *meta) in sii_meta_write() argument
336 meta->checksum = 0; in sii_meta_write()
337 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 159; i++) in sii_meta_write()
339 meta->checksum -= checksum; in sii_meta_write()
343 memcpy(buf, meta, sizeof(*meta)); in sii_meta_write()
387 struct sii_raid_conf *meta; in sii_meta_write_spare() local
390 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO); in sii_meta_write_spare()
391 meta->total_sectors = cp->provider->mediasize / in sii_meta_write_spare()
393 meta->vendor_id = 0x1095; in sii_meta_write_spare()
394 meta->version_minor = 0; in sii_meta_write_spare()
395 meta->version_major = 2; in sii_meta_write_spare()
396 meta->timestamp[0] = arc4random(); in sii_meta_write_spare()
397 meta->timestamp[1] = arc4random(); in sii_meta_write_spare()
398 meta->timestamp[2] = arc4random(); in sii_meta_write_spare()
399 meta->timestamp[3] = arc4random(); in sii_meta_write_spare()
400 meta->timestamp[4] = arc4random(); in sii_meta_write_spare()
401 meta->timestamp[5] = arc4random(); in sii_meta_write_spare()
402 meta->type = SII_T_SPARE; in sii_meta_write_spare()
403 meta->generation = 1; in sii_meta_write_spare()
404 meta->raid1_ident = 0xff; in sii_meta_write_spare()
405 meta->raid_location = arc4random(); in sii_meta_write_spare()
406 error = sii_meta_write(cp, meta); in sii_meta_write_spare()
407 free(meta, M_MD_SII); in sii_meta_write_spare()
483 struct sii_raid_conf *meta; in g_raid_md_sii_start_disk() local
489 meta = mdi->mdio_meta; in g_raid_md_sii_start_disk()
495 disk_pos = sii_meta_disk_pos(meta, pd->pd_meta); in g_raid_md_sii_start_disk()
591 if (meta->type == SII_T_CONCAT || meta->type == SII_T_JBOD) in g_raid_md_sii_start_disk()
602 if (pd->pd_meta->generation == meta->generation) in g_raid_md_sii_start_disk()
608 pd->pd_meta->generation != meta->generation) { in g_raid_md_sii_start_disk()
710 struct sii_raid_conf *meta; in g_raid_md_sii_start() local
721 meta = mdi->mdio_meta; in g_raid_md_sii_start()
724 sii_meta_get_name(meta, buf); in g_raid_md_sii_start()
726 vol->v_mediasize = (off_t)meta->total_sectors * 512; in g_raid_md_sii_start()
728 if (meta->type == SII_T_RAID0) { in g_raid_md_sii_start()
731 } else if (meta->type == SII_T_RAID1) { in g_raid_md_sii_start()
734 } else if (meta->type == SII_T_RAID01) { in g_raid_md_sii_start()
737 } else if (meta->type == SII_T_CONCAT) { in g_raid_md_sii_start()
743 } else if (meta->type == SII_T_RAID5) { in g_raid_md_sii_start()
747 } else if (meta->type == SII_T_JBOD) { in g_raid_md_sii_start()
754 vol->v_strip_size = meta->strip_sectors * 512; //ZZZ in g_raid_md_sii_start()
790 gendiff = meta->generation - in g_raid_md_sii_start()
913 struct sii_raid_conf *meta; in g_raid_md_taste_sii() local
932 meta = NULL; in g_raid_md_taste_sii()
938 meta = sii_meta_read(cp); in g_raid_md_taste_sii()
940 if (meta == NULL) { in g_raid_md_taste_sii()
957 disk_pos = sii_meta_disk_pos(meta, meta); in g_raid_md_taste_sii()
964 g_raid_md_sii_print(meta); in g_raid_md_taste_sii()
966 spare = (meta->type == SII_T_SPARE) ? 1 : 0; in g_raid_md_taste_sii()
985 if (mdi1->mdio_location == meta->raid_location && in g_raid_md_taste_sii()
987 &meta->timestamp, 6) == 0) in g_raid_md_taste_sii()
1003 memcpy(&mdi->mdio_timestamp, &meta->timestamp, 6); in g_raid_md_taste_sii()
1004 mdi->mdio_location = meta->raid_location; in g_raid_md_taste_sii()
1032 pd->pd_meta = meta; in g_raid_md_taste_sii()
1053 free(meta, M_MD_SII); in g_raid_md_taste_sii()
1489 struct sii_raid_conf *meta; in g_raid_md_write_sii() local
1505 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO); in g_raid_md_write_sii()
1507 memcpy(meta, mdi->mdio_meta, sizeof(*meta)); in g_raid_md_write_sii()
1508 meta->total_sectors = vol->v_mediasize / vol->v_sectorsize; in g_raid_md_write_sii()
1509 meta->vendor_id = 0x1095; in g_raid_md_write_sii()
1510 meta->version_minor = 0; in g_raid_md_write_sii()
1511 meta->version_major = 2; in g_raid_md_write_sii()
1512 memcpy(&meta->timestamp, &mdi->mdio_timestamp, 6); in g_raid_md_write_sii()
1513 meta->strip_sectors = vol->v_strip_size / vol->v_sectorsize; in g_raid_md_write_sii()
1515 meta->type = SII_T_RAID0; in g_raid_md_write_sii()
1516 meta->raid0_disks = vol->v_disks_count; in g_raid_md_write_sii()
1517 meta->raid1_disks = 0xff; in g_raid_md_write_sii()
1519 meta->type = SII_T_RAID1; in g_raid_md_write_sii()
1520 meta->raid0_disks = 0xff; in g_raid_md_write_sii()
1521 meta->raid1_disks = vol->v_disks_count; in g_raid_md_write_sii()
1523 meta->type = SII_T_RAID01; in g_raid_md_write_sii()
1524 meta->raid0_disks = vol->v_disks_count / 2; in g_raid_md_write_sii()
1525 meta->raid1_disks = 2; in g_raid_md_write_sii()
1528 meta->type = SII_T_JBOD; in g_raid_md_write_sii()
1529 meta->raid0_disks = vol->v_disks_count; in g_raid_md_write_sii()
1530 meta->raid1_disks = 0xff; in g_raid_md_write_sii()
1532 meta->type = SII_T_RAID5; in g_raid_md_write_sii()
1533 meta->raid0_disks = vol->v_disks_count; in g_raid_md_write_sii()
1534 meta->raid1_disks = 0xff; in g_raid_md_write_sii()
1536 meta->generation = mdi->mdio_generation; in g_raid_md_write_sii()
1537 meta->raid_status = vol->v_dirty ? SII_S_ONLINE : SII_S_AVAILABLE; in g_raid_md_write_sii()
1542 meta->raid_status = SII_S_ONLINE; in g_raid_md_write_sii()
1544 meta->raid_location = mdi->mdio_location; in g_raid_md_write_sii()
1545 sii_meta_put_name(meta, vol->v_name); in g_raid_md_write_sii()
1550 mdi->mdio_meta = meta; in g_raid_md_write_sii()
1559 pd->pd_meta = sii_meta_copy(meta); in g_raid_md_write_sii()
1574 pd->pd_meta->disk_number = sd->sd_pos / meta->raid1_disks; in g_raid_md_write_sii()
1575 pd->pd_meta->raid0_ident = sd->sd_pos % meta->raid1_disks; in g_raid_md_write_sii()
1576 pd->pd_meta->raid1_ident = sd->sd_pos / meta->raid1_disks; in g_raid_md_write_sii()