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 = malloc(sizeof(*meta), M_MD_SII, M_WAITOK);
281 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
285 if (meta->vendor_id != 0x1095) {
287 pp->name, meta->vendor_id);
288 free(meta, M_MD_SII);
293 if (meta->version_major != 2) {
295 pp->name, meta->version_major, meta->version_minor);
296 free(meta, M_MD_SII);
301 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i <= 159; i++)
305 free(meta, M_MD_SII);
310 if (meta->type != SII_T_RAID0 && meta->type != SII_T_RAID1 &&
311 meta->type != SII_T_RAID01 && meta->type != SII_T_SPARE &&
312 meta->type != SII_T_RAID5 && meta->type != SII_T_CONCAT &&
313 meta->type != SII_T_JBOD) {
315 pp->name, meta->type);
316 free(meta, M_MD_SII);
320 return (meta);
324 sii_meta_write(struct g_consumer *cp, struct sii_raid_conf *meta)
334 meta->checksum = 0;
335 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 159; i++)
337 meta->checksum -= checksum;
341 memcpy(buf, meta, sizeof(*meta));
385 struct sii_raid_conf *meta;
388 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO);
389 meta->total_sectors = cp->provider->mediasize /
391 meta->vendor_id = 0x1095;
392 meta->version_minor = 0;
393 meta->version_major = 2;
394 meta->timestamp[0] = arc4random();
395 meta->timestamp[1] = arc4random();
396 meta->timestamp[2] = arc4random();
397 meta->timestamp[3] = arc4random();
398 meta->timestamp[4] = arc4random();
399 meta->timestamp[5] = arc4random();
400 meta->type = SII_T_SPARE;
401 meta->generation = 1;
402 meta->raid1_ident = 0xff;
403 meta->raid_location = arc4random();
404 error = sii_meta_write(cp, meta);
405 free(meta, M_MD_SII);
481 struct sii_raid_conf *meta;
487 meta = mdi->mdio_meta;
493 disk_pos = sii_meta_disk_pos(meta, pd->pd_meta);
590 if (meta->type == SII_T_CONCAT || meta->type == SII_T_JBOD)
601 if (pd->pd_meta->generation == meta->generation)
607 pd->pd_meta->generation != meta->generation) {
709 struct sii_raid_conf *meta;
720 meta = mdi->mdio_meta;
723 sii_meta_get_name(meta, buf);
725 vol->v_mediasize = (off_t)meta->total_sectors * 512;
727 if (meta->type == SII_T_RAID0) {
730 } else if (meta->type == SII_T_RAID1) {
733 } else if (meta->type == SII_T_RAID01) {
736 } else if (meta->type == SII_T_CONCAT) {
742 } else if (meta->type == SII_T_RAID5) {
746 } else if (meta->type == SII_T_JBOD) {
753 vol->v_strip_size = meta->strip_sectors * 512; //ZZZ
789 gendiff = meta->generation -
912 struct sii_raid_conf *meta;
924 meta = NULL;
932 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;
1023 pd->pd_meta = meta;
1044 free(meta, M_MD_SII);
1482 struct sii_raid_conf *meta;
1498 meta = malloc(sizeof(*meta), M_MD_SII, M_WAITOK | M_ZERO);
1500 memcpy(meta, mdi->mdio_meta, sizeof(*meta));
1501 meta->total_sectors = vol->v_mediasize / vol->v_sectorsize;
1502 meta->vendor_id = 0x1095;
1503 meta->version_minor = 0;
1504 meta->version_major = 2;
1505 memcpy(&meta->timestamp, &mdi->mdio_timestamp, 6);
1506 meta->strip_sectors = vol->v_strip_size / vol->v_sectorsize;
1508 meta->type = SII_T_RAID0;
1509 meta->raid0_disks = vol->v_disks_count;
1510 meta->raid1_disks = 0xff;
1512 meta->type = SII_T_RAID1;
1513 meta->raid0_disks = 0xff;
1514 meta->raid1_disks = vol->v_disks_count;
1516 meta->type = SII_T_RAID01;
1517 meta->raid0_disks = vol->v_disks_count / 2;
1518 meta->raid1_disks = 2;
1521 meta->type = SII_T_JBOD;
1522 meta->raid0_disks = vol->v_disks_count;
1523 meta->raid1_disks = 0xff;
1525 meta->type = SII_T_RAID5;
1526 meta->raid0_disks = vol->v_disks_count;
1527 meta->raid1_disks = 0xff;
1529 meta->generation = mdi->mdio_generation;
1530 meta->raid_status = vol->v_dirty ? SII_S_ONLINE : SII_S_AVAILABLE;
1535 meta->raid_status = SII_S_ONLINE;
1537 meta->raid_location = mdi->mdio_location;
1538 sii_meta_put_name(meta, vol->v_name);
1540 /* We are done. Print meta data and store them to disks. */
1543 mdi->mdio_meta = meta;
1552 pd->pd_meta = sii_meta_copy(meta);
1567 pd->pd_meta->disk_number = sd->sd_pos / meta->raid1_disks;
1568 pd->pd_meta->raid0_ident = sd->sd_pos % meta->raid1_disks;
1569 pd->pd_meta->raid1_ident = sd->sd_pos / meta->raid1_disks;