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];
370 g_raid_md_intel_print(struct intel_raid_conf *meta)
380 printf("intel_id <%.24s>\n", meta->intel_id);
381 printf("version <%.6s>\n", meta->version);
382 printf("checksum 0x%08x\n", meta->checksum);
383 printf("config_size 0x%08x\n", meta->config_size);
384 printf("config_id 0x%08x\n", meta->config_id);
385 printf("generation 0x%08x\n", meta->generation);
386 printf("error_log_size %d\n", meta->error_log_size);
387 printf("attributes 0x%08x\n", meta->attributes);
388 printf("total_disks %u\n", meta->total_disks);
389 printf("total_volumes %u\n", meta->total_volumes);
390 printf("error_log_pos %u\n", meta->error_log_pos);
391 printf("cache_size %u\n", meta->cache_size);
392 printf("orig_config_id 0x%08x\n", meta->orig_config_id);
393 printf("pwr_cycle_count %u\n", meta->pwr_cycle_count);
394 printf("bbm_log_size %u\n", meta->bbm_log_size);
396 for (i = 0; i < meta->total_disks; i++ ) {
398 meta->disk[i].serial, meta->disk[i].sectors,
399 meta->disk[i].sectors_hi, meta->disk[i].id,
400 meta->disk[i].flags, meta->disk[i].owner_cfg_num);
402 for (i = 0; i < meta->total_volumes; i++) {
403 mvol = intel_get_volume(meta, i);
452 intel_meta_copy(struct intel_raid_conf *meta)
456 nmeta = malloc(meta->config_size, M_MD_INTEL, M_WAITOK);
457 memcpy(nmeta, meta, meta->config_size);
462 intel_meta_find_disk(struct intel_raid_conf *meta, char *serial)
466 for (pos = 0; pos < meta->total_disks; pos++) {
467 if (strncmp(meta->disk[pos].serial,
478 struct intel_raid_conf *meta;
495 meta = (struct intel_raid_conf *)buf;
498 if (strncmp(meta->intel_id, INTEL_MAGIC, strlen(INTEL_MAGIC))) {
503 if (meta->config_size > 65536 ||
504 meta->config_size < sizeof(struct intel_raid_conf)) {
506 meta->config_size);
510 size = meta->config_size;
511 meta = malloc(size, M_MD_INTEL, M_WAITOK);
512 memcpy(meta, buf, min(size, pp->sectorsize));
516 if (meta->config_size > pp->sectorsize) {
517 left = (meta->config_size - 1) / pp->sectorsize;
525 free(meta, M_MD_INTEL);
528 memcpy(((char *)meta) + pp->sectorsize, buf,
534 for (checksum = 0, ptr = (uint32_t *)meta, i = 0;
535 i < (meta->config_size / sizeof(uint32_t)); i++) {
538 checksum -= meta->checksum;
539 if (checksum != meta->checksum) {
541 free(meta, M_MD_INTEL);
547 sizeof(struct intel_raid_disk) * (meta->total_disks - 1) +
548 sizeof(struct intel_raid_vol) * meta->total_volumes;
549 if (size > meta->config_size) {
552 meta->config_size, size);
553 free(meta, M_MD_INTEL);
556 for (i = 0; i < meta->total_volumes; i++) {
557 mvol = intel_get_volume(meta, i);
560 if (size > meta->config_size)
564 if (size > meta->config_size)
568 if (size > meta->config_size)
573 g_raid_md_intel_print(meta);
575 if (strncmp(meta->version, INTEL_VERSION_1300, 6) > 0) {
577 meta->version);
578 free(meta, M_MD_INTEL);
582 if (strncmp(meta->version, INTEL_VERSION_1300, 6) >= 0 &&
583 (meta->attributes & ~INTEL_ATTR_SUPPORTED) != 0) {
585 meta->attributes & ~INTEL_ATTR_SUPPORTED);
586 free(meta, M_MD_INTEL);
591 for (i = 0; i < meta->total_volumes; i++) {
592 mvol = intel_get_volume(meta, i);
597 meta->total_disks) {
601 meta->total_disks);
602 free(meta, M_MD_INTEL);
610 for (i = 0; i < meta->total_volumes; i++) {
611 mvol = intel_get_volume(meta, i);
621 free(meta, M_MD_INTEL);
641 free(meta, M_MD_INTEL);
647 return (meta);
651 intel_meta_write(struct g_consumer *cp, struct intel_raid_conf *meta)
661 meta->checksum = 0;
662 for (checksum = 0, ptr = (uint32_t *)meta, i = 0;
663 i < (meta->config_size / sizeof(uint32_t)); i++) {
666 meta->checksum = checksum;
669 sectors = (meta->config_size + pp->sectorsize - 1) / pp->sectorsize;
672 memcpy(buf, ((char *)meta) + pp->sectorsize,
675 memcpy(buf + (sectors - 1) * pp->sectorsize, meta, pp->sectorsize);
712 struct intel_raid_conf *meta;
716 meta = malloc(INTEL_MAX_MD_SIZE(1), M_MD_INTEL, M_WAITOK | M_ZERO);
717 memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1);
718 memcpy(&meta->version[0], INTEL_VERSION_1000,
720 meta->config_size = INTEL_MAX_MD_SIZE(1);
721 meta->config_id = meta->orig_config_id = arc4random();
722 meta->generation = 1;
723 meta->total_disks = 1;
724 meta->disk[0] = *d;
725 error = intel_meta_write(cp, meta);
726 free(meta, M_MD_INTEL);
807 struct intel_raid_conf *meta;
815 meta = mdi->mdio_meta;
820 disk_pos = intel_meta_find_disk(meta, pd->pd_disk_meta.serial);
911 memcpy(&meta->disk[disk_pos], &pd->pd_disk_meta,
916 if ((meta->disk[disk_pos].flags & INTEL_F_DISABLED) &&
921 else if (meta->disk[disk_pos].flags & INTEL_F_FAILED)
923 else if (meta->disk[disk_pos].flags & INTEL_F_SPARE)
929 mvol = intel_get_volume(meta, pv->pv_volume_pos);
943 if ((meta->disk[disk_pos].flags & INTEL_F_DISABLED) &&
952 } else if (meta->disk[disk_pos].flags & INTEL_F_FAILED) {
1057 meta->total_disks);
1077 struct intel_raid_conf *meta;
1084 meta = mdi->mdio_meta;
1090 if (na == meta->total_disks)
1095 "trying to refill.", na, meta->total_disks);
1122 meta = mdi->mdio_meta;
1127 g_raid_ndisks(sc, G_RAID_DISK_S_DISABLED) < meta->total_disks);
1145 struct intel_raid_conf *meta;
1155 meta = mdi->mdio_meta;
1158 for (i = 0; i < meta->total_volumes; i++) {
1159 mvol = intel_get_volume(meta, i);
1204 for (disk_pos = 0; disk_pos < meta->total_disks; disk_pos++) {
1207 pd->pd_disk_meta = meta->disk[disk_pos];
1211 for (i = 0; i < meta->total_volumes; i++) {
1212 mvol = intel_get_volume(meta, i);
1336 * store into the Intel meta format. Generalize this to N characters
1369 struct intel_raid_conf *meta;
1382 meta = NULL;
1397 meta = intel_meta_read(cp);
1400 if (meta == NULL) {
1417 disk_pos = intel_meta_find_disk(meta, serial);
1422 if (intel_get_disk_sectors(&meta->disk[disk_pos]) !=
1425 intel_get_disk_sectors(&meta->disk[disk_pos]),
1431 spare = meta->disk[disk_pos].flags & INTEL_F_SPARE;
1450 if (mdi1->mdio_config_id == meta->config_id)
1466 mdi->mdio_config_id = meta->config_id;
1467 mdi->mdio_orig_config_id = meta->orig_config_id;
1468 snprintf(name, sizeof(name), "Intel-%08x", meta->config_id);
1488 pd->pd_meta = meta;
1497 pd->pd_disk_meta = meta->disk[disk_pos];
1516 free(meta, M_MD_INTEL);
2247 struct intel_raid_conf *meta;
2292 meta = malloc(INTEL_MAX_MD_SIZE(numdisks),
2294 memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1);
2295 meta->config_size = INTEL_MAX_MD_SIZE(numdisks);
2296 meta->config_id = mdi->mdio_config_id;
2297 meta->orig_config_id = mdi->mdio_orig_config_id;
2298 meta->generation = mdi->mdio_generation;
2299 meta->attributes = INTEL_ATTR_CHECKSUM;
2300 meta->total_disks = numdisks;
2305 meta->disk[pd->pd_disk_pos] = pd->pd_disk_meta;
2307 meta->attributes |= INTEL_ATTR_2TB_DISK;
2317 mvol = intel_get_volume(meta, vi);
2330 meta->attributes |= INTEL_ATTR_2TB;
2332 meta->attributes |= INTEL_ATTR_RAID0;
2334 meta->attributes |= INTEL_ATTR_RAID1;
2336 meta->attributes |= INTEL_ATTR_RAID5;
2338 meta->attributes |= INTEL_ATTR_RAID10;
2340 meta->attributes |= INTEL_ATTR_RAID1E;
2342 meta->attributes |= INTEL_ATTR_RAIDCNG;
2344 meta->attributes |= INTEL_ATTR_EXT_STRIP;
2483 meta->total_volumes = vi;
2484 if (vi > 1 || meta->attributes &
2488 meta->attributes &= INTEL_ATTR_CHECKSUM;
2489 memcpy(&meta->version[0], version, sizeof(INTEL_VERSION_1000) - 1);
2491 /* We are done. Print meta data and store them to disks. */
2492 g_raid_md_intel_print(meta);
2495 mdi->mdio_meta = meta;
2504 pd->pd_meta = intel_meta_copy(meta);
2505 intel_meta_write(disk->d_consumer, meta);