Lines Matching defs:meta

277 intel_get_volume(struct intel_raid_conf *meta, int i)
284 mvol = (struct intel_raid_vol *)&meta->disk[meta->total_disks];
442 g_raid_md_intel_print(struct intel_raid_conf *meta)
452 printf("intel_id <%.24s>\n", meta->intel_id);
453 printf("version <%.6s>\n", meta->version);
454 printf("checksum 0x%08x\n", meta->checksum);
455 printf("config_size 0x%08x\n", meta->config_size);
456 printf("config_id 0x%08x\n", meta->config_id);
457 printf("generation 0x%08x\n", meta->generation);
458 printf("error_log_size %d\n", meta->error_log_size);
459 printf("attributes 0x%b\n", meta->attributes,
475 printf("total_disks %u\n", meta->total_disks);
476 printf("total_volumes %u\n", meta->total_volumes);
477 printf("error_log_pos %u\n", meta->error_log_pos);
478 printf("cache_size %u\n", meta->cache_size);
479 printf("orig_config_id 0x%08x\n", meta->orig_config_id);
480 printf("pwr_cycle_count %u\n", meta->pwr_cycle_count);
481 printf("bbm_log_size %u\n", meta->bbm_log_size);
484 for (i = 0; i < meta->total_disks; i++ ) {
486 meta->disk[i].serial, meta->disk[i].sectors,
487 meta->disk[i].sectors_hi, meta->disk[i].id,
488 meta->disk[i].flags, "\20\01S\02A\03F\04O\05D",
489 meta->disk[i].owner_cfg_num);
491 for (i = 0; i < meta->total_volumes; i++) {
492 mvol = intel_get_volume(meta, i);
559 intel_meta_copy(struct intel_raid_conf *meta)
563 nmeta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK);
564 memcpy(nmeta, meta, meta->config_size);
569 intel_meta_find_disk(struct intel_raid_conf *meta, char *serial)
573 for (pos = 0; pos < meta->total_disks; pos++) {
574 if (strncmp(meta->disk[pos].serial,
585 struct intel_raid_conf *meta;
602 meta = (struct intel_raid_conf *)buf;
605 if (strncmp(meta->intel_id, INTEL_MAGIC, strlen(INTEL_MAGIC))) {
610 if (meta->config_size > 65536 ||
611 meta->config_size < sizeof(struct intel_raid_conf)) {
613 meta->config_size);
617 size = meta->config_size;
618 meta = malloc(size, M_MD_INTEL, M_WAITOK);
619 memcpy(meta, buf, min(size, pp->sectorsize));
623 if (meta->config_size > pp->sectorsize) {
624 left = (meta->config_size - 1) / pp->sectorsize;
632 free(meta, M_MD_INTEL);
635 memcpy(((char *)meta) + pp->sectorsize, buf,
641 for (checksum = 0, ptr = (uint32_t *)meta, i = 0;
642 i < (meta->config_size / sizeof(uint32_t)); i++) {
645 checksum -= meta->checksum;
646 if (checksum != meta->checksum) {
648 free(meta, M_MD_INTEL);
654 sizeof(struct intel_raid_disk) * (meta->total_disks - 1) +
655 sizeof(struct intel_raid_vol) * meta->total_volumes;
656 if (size > meta->config_size) {
659 meta->config_size, size);
660 free(meta, M_MD_INTEL);
663 for (i = 0; i < meta->total_volumes; i++) {
664 mvol = intel_get_volume(meta, i);
667 if (size > meta->config_size)
671 if (size > meta->config_size)
675 if (size > meta->config_size)
680 g_raid_md_intel_print(meta);
682 if (strncmp(meta->version, INTEL_VERSION_1300, 6) > 0) {
684 meta->version);
685 free(meta, M_MD_INTEL);
689 if (strncmp(meta->version, INTEL_VERSION_1300, 6) >= 0 &&
690 (meta->attributes & ~INTEL_ATTR_SUPPORTED) != 0) {
692 meta->attributes & ~INTEL_ATTR_SUPPORTED);
693 free(meta, M_MD_INTEL);
698 for (i = 0; i < meta->total_volumes; i++) {
699 mvol = intel_get_volume(meta, i);
704 meta->total_disks) {
708 meta->total_disks);
709 free(meta, M_MD_INTEL);
717 for (i = 0; i < meta->total_volumes; i++) {
718 mvol = intel_get_volume(meta, i);
728 free(meta, M_MD_INTEL);
748 free(meta, M_MD_INTEL);
754 return (meta);
758 intel_meta_write(struct g_consumer *cp, struct intel_raid_conf *meta)
768 meta->checksum = 0;
769 for (checksum = 0, ptr = (uint32_t *)meta, i = 0;
770 i < (meta->config_size / sizeof(uint32_t)); i++) {
773 meta->checksum = checksum;
776 sectors = (meta->config_size + pp->sectorsize - 1) / pp->sectorsize;
779 memcpy(buf, ((char *)meta) + pp->sectorsize,
782 memcpy(buf + (sectors - 1) * pp->sectorsize, meta, pp->sectorsize);
819 struct intel_raid_conf *meta;
823 meta = malloc(INTEL_MAX_MD_SIZE(1), M_MD_INTEL, M_WAITOK | M_ZERO);
824 memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1);
825 memcpy(&meta->version[0], INTEL_VERSION_1000,
827 meta->config_size = INTEL_MAX_MD_SIZE(1);
828 meta->config_id = meta->orig_config_id = arc4random();
829 meta->generation = 1;
830 meta->total_disks = 1;
831 meta->disk[0] = *d;
832 error = intel_meta_write(cp, meta);
833 free(meta, M_MD_INTEL);
914 struct intel_raid_conf *meta;
922 meta = mdi->mdio_meta;
927 disk_pos = intel_meta_find_disk(meta, pd->pd_disk_meta.serial);
1018 memcpy(&meta->disk[disk_pos], &pd->pd_disk_meta,
1023 if ((meta->disk[disk_pos].flags & INTEL_F_DISABLED) &&
1028 else if (meta->disk[disk_pos].flags & INTEL_F_FAILED)
1030 else if (meta->disk[disk_pos].flags & INTEL_F_SPARE)
1036 mvol = intel_get_volume(meta, pv->pv_volume_pos);
1050 if ((meta->disk[disk_pos].flags & INTEL_F_DISABLED) &&
1059 } else if (meta->disk[disk_pos].flags & INTEL_F_FAILED) {
1164 meta->total_disks);
1184 struct intel_raid_conf *meta;
1191 meta = mdi->mdio_meta;
1197 if (na == meta->total_disks)
1202 "trying to refill.", na, meta->total_disks);
1229 meta = mdi->mdio_meta;
1234 g_raid_ndisks(sc, G_RAID_DISK_S_DISABLED) < meta->total_disks);
1252 struct intel_raid_conf *meta;
1262 meta = mdi->mdio_meta;
1265 for (i = 0; i < meta->total_volumes; i++) {
1266 mvol = intel_get_volume(meta, i);
1311 for (disk_pos = 0; disk_pos < meta->total_disks; disk_pos++) {
1314 pd->pd_disk_meta = meta->disk[disk_pos];
1318 for (i = 0; i < meta->total_volumes; i++) {
1319 mvol = intel_get_volume(meta, i);
1443 * store into the Intel meta format. Generalize this to N characters
1476 struct intel_raid_conf *meta;
1489 meta = NULL;
1502 meta = intel_meta_read(cp);
1504 if (meta == NULL) {
1521 disk_pos = intel_meta_find_disk(meta, serial);
1526 if (intel_get_disk_sectors(&meta->disk[disk_pos]) !=
1529 intel_get_disk_sectors(&meta->disk[disk_pos]),
1535 spare = meta->disk[disk_pos].flags & INTEL_F_SPARE;
1554 if (mdi1->mdio_config_id == meta->config_id)
1570 mdi->mdio_config_id = meta->config_id;
1571 mdi->mdio_orig_config_id = meta->orig_config_id;
1572 snprintf(name, sizeof(name), "Intel-%08x", meta->config_id);
1596 pd->pd_meta = meta;
1605 pd->pd_disk_meta = meta->disk[disk_pos];
1623 free(meta, M_MD_INTEL);
2354 struct intel_raid_conf *meta;
2399 meta = malloc(INTEL_MAX_MD_SIZE(numdisks),
2401 memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1);
2402 meta->config_size = INTEL_MAX_MD_SIZE(numdisks);
2403 meta->config_id = mdi->mdio_config_id;
2404 meta->orig_config_id = mdi->mdio_orig_config_id;
2405 meta->generation = mdi->mdio_generation;
2406 meta->attributes = INTEL_ATTR_CHECKSUM;
2407 meta->total_disks = numdisks;
2412 meta->disk[pd->pd_disk_pos] = pd->pd_disk_meta;
2414 meta->attributes |= INTEL_ATTR_2TB_DISK;
2424 mvol = intel_get_volume(meta, vi);
2437 meta->attributes |= INTEL_ATTR_2TB;
2439 meta->attributes |= INTEL_ATTR_RAID0;
2441 meta->attributes |= INTEL_ATTR_RAID1;
2443 meta->attributes |= INTEL_ATTR_RAID5;
2445 meta->attributes |= INTEL_ATTR_RAID10;
2447 meta->attributes |= INTEL_ATTR_RAID1E;
2449 meta->attributes |= INTEL_ATTR_RAIDCNG;
2451 meta->attributes |= INTEL_ATTR_EXT_STRIP;
2590 meta->total_volumes = vi;
2591 if (vi > 1 || meta->attributes &
2595 meta->attributes &= INTEL_ATTR_CHECKSUM;
2596 memcpy(&meta->version[0], version, sizeof(INTEL_VERSION_1000) - 1);
2598 /* We are done. Print meta data and store them to disks. */
2599 g_raid_md_intel_print(meta);
2602 mdi->mdio_meta = meta;
2611 pd->pd_meta = intel_meta_copy(meta);
2612 intel_meta_write(disk->d_consumer, meta);