• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/sys/geom/raid/

Lines Matching refs:meta

150 g_raid_md_sii_print(struct sii_raid_conf *meta)
158 (long long unsigned)meta->total_sectors);
159 printf("product_id 0x%04x\n", meta->product_id);
160 printf("vendor_id 0x%04x\n", meta->vendor_id);
161 printf("version_minor 0x%04x\n", meta->version_minor);
162 printf("version_major 0x%04x\n", meta->version_major);
164 meta->timestamp[5], meta->timestamp[4], meta->timestamp[3],
165 meta->timestamp[2], meta->timestamp[1], meta->timestamp[0]);
166 printf("strip_sectors %d\n", meta->strip_sectors);
167 printf("disk_number %d\n", meta->disk_number);
168 printf("type 0x%02x\n", meta->type);
169 printf("raid0_disks %d\n", meta->raid0_disks);
170 printf("raid0_ident %d\n", meta->raid0_ident);
171 printf("raid1_disks %d\n", meta->raid1_disks);
172 printf("raid1_ident %d\n", meta->raid1_ident);
174 (long long unsigned)meta->rebuild_lba);
175 printf("generation %d\n", meta->generation);
176 printf("disk_status %d\n", meta->disk_status);
177 printf("raid_status %d\n", meta->raid_status);
178 printf("raid_location %d\n", meta->raid_location);
179 printf("disk_location %d\n", meta->disk_location);
180 printf("auto_rebuild %d\n", meta->auto_rebuild);
181 printf("name <%.16s>\n", meta->name);
182 printf("checksum 0x%04x\n", meta->checksum);
187 sii_meta_copy(struct sii_raid_conf *meta)
191 nmeta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK);
192 memcpy(nmeta, meta, sizeof(*meta));
197 sii_meta_total_disks(struct sii_raid_conf *meta)
200 switch (meta->type) {
204 return (meta->raid0_disks);
206 return (meta->raid1_disks);
208 return (meta->raid0_disks * meta->raid1_disks);
217 sii_meta_disk_pos(struct sii_raid_conf *meta, struct sii_raid_conf *pdmeta)
223 if (memcmp(&meta->timestamp, &pdmeta->timestamp, 6) != 0)
242 sii_meta_get_name(struct sii_raid_conf *meta, char *buf)
246 strncpy(buf, meta->name, 16);
256 sii_meta_put_name(struct sii_raid_conf *meta, char *buf)
259 memset(meta->name, 0x20, 16);
260 memcpy(meta->name, buf, MIN(strlen(buf), 16));
267 struct sii_raid_conf *meta;
282 meta = (struct sii_raid_conf *)buf;
285 if (meta->vendor_id != 0x1095) {
287 pp->name, meta->vendor_id);
293 if (meta->version_major != 2) {
295 pp->name, meta->version_major, meta->version_minor);
299 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK);
300 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
304 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i <= 159; i++)
308 free(meta, M_MD_SII);
313 if (meta->type != SII_T_RAID0 && meta->type != SII_T_RAID1 &&
314 meta->type != SII_T_RAID01 && meta->type != SII_T_SPARE &&
315 meta->type != SII_T_RAID5 && meta->type != SII_T_CONCAT &&
316 meta->type != SII_T_JBOD) {
318 pp->name, meta->type);
319 free(meta, M_MD_SII);
323 return (meta);
327 sii_meta_write(struct g_consumer *cp, struct sii_raid_conf *meta)
337 meta->checksum = 0;
338 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 159; i++)
340 meta->checksum -= checksum;
344 memcpy(buf, meta, sizeof(*meta));
388 struct sii_raid_conf *meta;
391 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO);
392 meta->total_sectors = cp->provider->mediasize /
394 meta->vendor_id = 0x1095;
395 meta->version_minor = 0;
396 meta->version_major = 2;
397 meta->timestamp[0] = arc4random();
398 meta->timestamp[1] = arc4random();
399 meta->timestamp[2] = arc4random();
400 meta->timestamp[3] = arc4random();
401 meta->timestamp[4] = arc4random();
402 meta->timestamp[5] = arc4random();
403 meta->type = SII_T_SPARE;
404 meta->generation = 1;
405 meta->raid1_ident = 0xff;
406 meta->raid_location = arc4random();
407 error = sii_meta_write(cp, meta);
408 free(meta, M_MD_SII);
484 struct sii_raid_conf *meta;
490 meta = mdi->mdio_meta;
496 disk_pos = sii_meta_disk_pos(meta, pd->pd_meta);
593 if (meta->type == SII_T_CONCAT || meta->type == SII_T_JBOD)
604 if (pd->pd_meta->generation == meta->generation)
610 pd->pd_meta->generation != meta->generation) {
712 struct sii_raid_conf *meta;
723 meta = mdi->mdio_meta;
726 sii_meta_get_name(meta, buf);
728 vol->v_mediasize = (off_t)meta->total_sectors * 512;
730 if (meta->type == SII_T_RAID0) {
733 } else if (meta->type == SII_T_RAID1) {
736 } else if (meta->type == SII_T_RAID01) {
739 } else if (meta->type == SII_T_CONCAT) {
745 } else if (meta->type == SII_T_RAID5) {
749 } else if (meta->type == SII_T_JBOD) {
756 vol->v_strip_size = meta->strip_sectors * 512; //ZZZ
792 gendiff = meta->generation -
915 struct sii_raid_conf *meta;
927 meta = NULL;
933 meta = sii_meta_read(cp);
935 if (meta == NULL) {
952 disk_pos = sii_meta_disk_pos(meta, meta);
959 g_raid_md_sii_print(meta);
961 spare = (meta->type == SII_T_SPARE) ? 1 : 0;
980 if (mdi1->mdio_location == meta->raid_location &&
982 &meta->timestamp, 6) == 0)
998 memcpy(&mdi->mdio_timestamp, &meta->timestamp, 6);
999 mdi->mdio_location = meta->raid_location;
1027 pd->pd_meta = meta;
1048 free(meta, M_MD_SII);
1486 struct sii_raid_conf *meta;
1502 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO);
1504 memcpy(meta, mdi->mdio_meta, sizeof(*meta));
1505 meta->total_sectors = vol->v_mediasize / vol->v_sectorsize;
1506 meta->vendor_id = 0x1095;
1507 meta->version_minor = 0;
1508 meta->version_major = 2;
1509 memcpy(&meta->timestamp, &mdi->mdio_timestamp, 6);
1510 meta->strip_sectors = vol->v_strip_size / vol->v_sectorsize;
1512 meta->type = SII_T_RAID0;
1513 meta->raid0_disks = vol->v_disks_count;
1514 meta->raid1_disks = 0xff;
1516 meta->type = SII_T_RAID1;
1517 meta->raid0_disks = 0xff;
1518 meta->raid1_disks = vol->v_disks_count;
1520 meta->type = SII_T_RAID01;
1521 meta->raid0_disks = vol->v_disks_count / 2;
1522 meta->raid1_disks = 2;
1525 meta->type = SII_T_JBOD;
1526 meta->raid0_disks = vol->v_disks_count;
1527 meta->raid1_disks = 0xff;
1529 meta->type = SII_T_RAID5;
1530 meta->raid0_disks = vol->v_disks_count;
1531 meta->raid1_disks = 0xff;
1533 meta->generation = mdi->mdio_generation;
1534 meta->raid_status = vol->v_dirty ? SII_S_ONLINE : SII_S_AVAILABLE;
1539 meta->raid_status = SII_S_ONLINE;
1541 meta->raid_location = mdi->mdio_location;
1542 sii_meta_put_name(meta, vol->v_name);
1544 /* We are done. Print meta data and store them to disks. */
1547 mdi->mdio_meta = meta;
1556 pd->pd_meta = sii_meta_copy(meta);
1571 pd->pd_meta->disk_number = sd->sd_pos / meta->raid1_disks;
1572 pd->pd_meta->raid0_ident = sd->sd_pos % meta->raid1_disks;
1573 pd->pd_meta->raid1_ident = sd->sd_pos / meta->raid1_disks;