Lines Matching defs:meta

148 g_raid_md_sii_print(struct sii_raid_conf *meta)
156 (long long unsigned)meta->total_sectors);
157 printf("product_id 0x%04x\n", meta->product_id);
158 printf("vendor_id 0x%04x\n", meta->vendor_id);
159 printf("version_minor 0x%04x\n", meta->version_minor);
160 printf("version_major 0x%04x\n", meta->version_major);
162 meta->timestamp[5], meta->timestamp[4], meta->timestamp[3],
163 meta->timestamp[2], meta->timestamp[1], meta->timestamp[0]);
164 printf("strip_sectors %d\n", meta->strip_sectors);
165 printf("disk_number %d\n", meta->disk_number);
166 printf("type 0x%02x\n", meta->type);
167 printf("raid0_disks %d\n", meta->raid0_disks);
168 printf("raid0_ident %d\n", meta->raid0_ident);
169 printf("raid1_disks %d\n", meta->raid1_disks);
170 printf("raid1_ident %d\n", meta->raid1_ident);
172 (long long unsigned)meta->rebuild_lba);
173 printf("generation %d\n", meta->generation);
174 printf("disk_status %d\n", meta->disk_status);
175 printf("raid_status %d\n", meta->raid_status);
176 printf("raid_location %d\n", meta->raid_location);
177 printf("disk_location %d\n", meta->disk_location);
178 printf("auto_rebuild %d\n", meta->auto_rebuild);
179 printf("name <%.16s>\n", meta->name);
180 printf("checksum 0x%04x\n", meta->checksum);
185 sii_meta_copy(struct sii_raid_conf *meta)
189 nmeta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK);
190 memcpy(nmeta, meta, sizeof(*meta));
195 sii_meta_total_disks(struct sii_raid_conf *meta)
198 switch (meta->type) {
202 return (meta->raid0_disks);
204 return (meta->raid1_disks);
206 return (meta->raid0_disks * meta->raid1_disks);
215 sii_meta_disk_pos(struct sii_raid_conf *meta, struct sii_raid_conf *pdmeta)
221 if (memcmp(&meta->timestamp, &pdmeta->timestamp, 6) != 0)
240 sii_meta_get_name(struct sii_raid_conf *meta, char *buf)
244 strncpy(buf, meta->name, 16);
254 sii_meta_put_name(struct sii_raid_conf *meta, char *buf)
257 memset(meta->name, 0x20, 16);
258 memcpy(meta->name, buf, MIN(strlen(buf), 16));
265 struct sii_raid_conf *meta;
280 meta = (struct sii_raid_conf *)buf;
283 if (meta->vendor_id != 0x1095) {
285 pp->name, meta->vendor_id);
291 if (meta->version_major != 2) {
293 pp->name, meta->version_major, meta->version_minor);
297 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK);
298 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
302 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i <= 159; i++)
306 free(meta, M_MD_SII);
311 if (meta->type != SII_T_RAID0 && meta->type != SII_T_RAID1 &&
312 meta->type != SII_T_RAID01 && meta->type != SII_T_SPARE &&
313 meta->type != SII_T_RAID5 && meta->type != SII_T_CONCAT &&
314 meta->type != SII_T_JBOD) {
316 pp->name, meta->type);
317 free(meta, M_MD_SII);
321 return (meta);
325 sii_meta_write(struct g_consumer *cp, struct sii_raid_conf *meta)
335 meta->checksum = 0;
336 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 159; i++)
338 meta->checksum -= checksum;
342 memcpy(buf, meta, sizeof(*meta));
386 struct sii_raid_conf *meta;
389 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO);
390 meta->total_sectors = cp->provider->mediasize /
392 meta->vendor_id = 0x1095;
393 meta->version_minor = 0;
394 meta->version_major = 2;
395 meta->timestamp[0] = arc4random();
396 meta->timestamp[1] = arc4random();
397 meta->timestamp[2] = arc4random();
398 meta->timestamp[3] = arc4random();
399 meta->timestamp[4] = arc4random();
400 meta->timestamp[5] = arc4random();
401 meta->type = SII_T_SPARE;
402 meta->generation = 1;
403 meta->raid1_ident = 0xff;
404 meta->raid_location = arc4random();
405 error = sii_meta_write(cp, meta);
406 free(meta, M_MD_SII);
482 struct sii_raid_conf *meta;
488 meta = mdi->mdio_meta;
494 disk_pos = sii_meta_disk_pos(meta, pd->pd_meta);
591 if (meta->type == SII_T_CONCAT || meta->type == SII_T_JBOD)
602 if (pd->pd_meta->generation == meta->generation)
608 pd->pd_meta->generation != meta->generation) {
710 struct sii_raid_conf *meta;
721 meta = mdi->mdio_meta;
724 sii_meta_get_name(meta, buf);
726 vol->v_mediasize = (off_t)meta->total_sectors * 512;
728 if (meta->type == SII_T_RAID0) {
731 } else if (meta->type == SII_T_RAID1) {
734 } else if (meta->type == SII_T_RAID01) {
737 } else if (meta->type == SII_T_CONCAT) {
743 } else if (meta->type == SII_T_RAID5) {
747 } else if (meta->type == SII_T_JBOD) {
754 vol->v_strip_size = meta->strip_sectors * 512; //ZZZ
790 gendiff = meta->generation -
913 struct sii_raid_conf *meta;
925 meta = NULL;
931 meta = sii_meta_read(cp);
933 if (meta == NULL) {
950 disk_pos = sii_meta_disk_pos(meta, meta);
957 g_raid_md_sii_print(meta);
959 spare = (meta->type == SII_T_SPARE) ? 1 : 0;
978 if (mdi1->mdio_location == meta->raid_location &&
980 &meta->timestamp, 6) == 0)
996 memcpy(&mdi->mdio_timestamp, &meta->timestamp, 6);
997 mdi->mdio_location = meta->raid_location;
1025 pd->pd_meta = meta;
1046 free(meta, M_MD_SII);
1484 struct sii_raid_conf *meta;
1500 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO);
1502 memcpy(meta, mdi->mdio_meta, sizeof(*meta));
1503 meta->total_sectors = vol->v_mediasize / vol->v_sectorsize;
1504 meta->vendor_id = 0x1095;
1505 meta->version_minor = 0;
1506 meta->version_major = 2;
1507 memcpy(&meta->timestamp, &mdi->mdio_timestamp, 6);
1508 meta->strip_sectors = vol->v_strip_size / vol->v_sectorsize;
1510 meta->type = SII_T_RAID0;
1511 meta->raid0_disks = vol->v_disks_count;
1512 meta->raid1_disks = 0xff;
1514 meta->type = SII_T_RAID1;
1515 meta->raid0_disks = 0xff;
1516 meta->raid1_disks = vol->v_disks_count;
1518 meta->type = SII_T_RAID01;
1519 meta->raid0_disks = vol->v_disks_count / 2;
1520 meta->raid1_disks = 2;
1523 meta->type = SII_T_JBOD;
1524 meta->raid0_disks = vol->v_disks_count;
1525 meta->raid1_disks = 0xff;
1527 meta->type = SII_T_RAID5;
1528 meta->raid0_disks = vol->v_disks_count;
1529 meta->raid1_disks = 0xff;
1531 meta->generation = mdi->mdio_generation;
1532 meta->raid_status = vol->v_dirty ? SII_S_ONLINE : SII_S_AVAILABLE;
1537 meta->raid_status = SII_S_ONLINE;
1539 meta->raid_location = mdi->mdio_location;
1540 sii_meta_put_name(meta, vol->v_name);
1542 /* We are done. Print meta data and store them to disks. */
1545 mdi->mdio_meta = meta;
1554 pd->pd_meta = sii_meta_copy(meta);
1569 pd->pd_meta->disk_number = sd->sd_pos / meta->raid1_disks;
1570 pd->pd_meta->raid0_ident = sd->sd_pos % meta->raid1_disks;
1571 pd->pd_meta->raid1_ident = sd->sd_pos / meta->raid1_disks;