Lines Matching defs:meta

140 g_raid_md_jmicron_print(struct jmicron_raid_conf *meta)
148 printf("signature <%c%c>\n", meta->signature[0], meta->signature[1]);
149 printf("version %04x\n", meta->version);
150 printf("checksum 0x%04x\n", meta->checksum);
151 printf("disk_id 0x%08x\n", meta->disk_id);
152 printf("offset 0x%08x\n", meta->offset);
153 printf("disk_sectors_high 0x%08x\n", meta->disk_sectors_high);
154 printf("disk_sectors_low 0x%04x\n", meta->disk_sectors_low);
155 printf("name <%.16s>\n", meta->name);
156 printf("type %d\n", meta->type);
157 printf("stripe_shift %d\n", meta->stripe_shift);
158 printf("flags %04x\n", meta->flags);
161 printf(" 0x%08x", meta->spare[k]);
165 printf(" 0x%08x", meta->disks[k]);
171 jmicron_meta_copy(struct jmicron_raid_conf *meta)
175 nmeta = malloc(sizeof(*meta), M_MD_JMICRON, M_WAITOK);
176 memcpy(nmeta, meta, sizeof(*meta));
181 jmicron_meta_total_disks(struct jmicron_raid_conf *meta)
186 if (meta->disks[pos] == 0)
193 jmicron_meta_total_spare(struct jmicron_raid_conf *meta)
199 if (meta->spare[pos] != 0)
210 jmicron_meta_config_id(struct jmicron_raid_conf *meta)
217 config_id += meta->disks[pos] << pos;
222 jmicron_meta_get_name(struct jmicron_raid_conf *meta, char *buf)
226 strncpy(buf, meta->name, 16);
236 jmicron_meta_put_name(struct jmicron_raid_conf *meta, char *buf)
239 memset(meta->name, 0x20, 16);
240 memcpy(meta->name, buf, MIN(strlen(buf), 16));
244 jmicron_meta_find_disk(struct jmicron_raid_conf *meta, uint32_t id)
250 if ((meta->disks[pos] & JMICRON_DISK_MASK) == id)
254 if ((meta->spare[pos] & JMICRON_DISK_MASK) == id)
264 struct jmicron_raid_conf *meta;
279 meta = (struct jmicron_raid_conf *)buf;
282 if (strncmp(meta->signature, JMICRON_MAGIC, strlen(JMICRON_MAGIC))) {
287 meta = malloc(sizeof(*meta), M_MD_JMICRON, M_WAITOK);
288 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
292 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 64; i++)
296 free(meta, M_MD_JMICRON);
300 return (meta);
304 jmicron_meta_write(struct g_consumer *cp, struct jmicron_raid_conf *meta)
314 meta->checksum = 0;
315 for (checksum = 0, ptr = (uint16_t *)meta, i = 0; i < 64; i++)
317 meta->checksum -= checksum;
321 memcpy(buf, meta, sizeof(*meta));
427 struct jmicron_raid_conf *meta;
433 meta = mdi->mdio_meta;
439 disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id);
514 meta->disks[disk_pos] = pd->pd_disk_id;
544 } else if ((meta->flags & JMICRON_F_BADSEC) != 0 &&
647 struct jmicron_raid_conf *meta;
657 meta = mdi->mdio_meta;
660 jmicron_meta_get_name(meta, buf);
662 size = ((off_t)meta->disk_sectors_high << 16) + meta->disk_sectors_low;
665 if (meta->type == JMICRON_T_RAID0) {
668 } else if (meta->type == JMICRON_T_RAID1) {
671 } else if (meta->type == JMICRON_T_RAID01) {
674 } else if (meta->type == JMICRON_T_CONCAT) {
680 } else if (meta->type == JMICRON_T_RAID5) {
688 vol->v_strip_size = 1024 << meta->stripe_shift; //ZZZ
693 sd->sd_offset = (off_t)meta->offset * 16 * 512; //ZZZ
702 pd->pd_disk_id = meta->disks[disk_pos];
826 struct jmicron_raid_conf *meta;
838 meta = NULL;
846 meta = jmicron_meta_read(cp);
849 if (meta == NULL) {
866 disk_pos = jmicron_meta_find_disk(meta, meta->disk_id);
869 meta->disk_id);
874 g_raid_md_jmicron_print(meta);
896 jmicron_meta_config_id(meta))
912 mdi->mdio_config_id = jmicron_meta_config_id(meta);
934 pd->pd_meta = meta;
940 pd->pd_disk_id = meta->disk_id;
957 free(meta, M_MD_JMICRON);
1395 struct jmicron_raid_conf *meta;
1408 meta = malloc(sizeof(*meta), M_MD_JMICRON, M_WAITOK | M_ZERO);
1409 strncpy(meta->signature, JMICRON_MAGIC, 2);
1410 meta->version = JMICRON_VERSION;
1411 jmicron_meta_put_name(meta, vol->v_name);
1413 meta->type = JMICRON_T_RAID0;
1415 meta->type = JMICRON_T_RAID1;
1417 meta->type = JMICRON_T_RAID01;
1420 meta->type = JMICRON_T_CONCAT;
1422 meta->type = JMICRON_T_RAID5;
1423 meta->stripe_shift = fls(vol->v_strip_size / 2048);
1424 meta->flags = JMICRON_F_READY | JMICRON_F_BOOTABLE;
1428 meta->disks[i] = 0xffffffff;
1432 meta->disks[i] = pd->pd_disk_id;
1435 meta->flags |= JMICRON_F_BADSEC;
1437 meta->flags |= JMICRON_F_UNSYNC;
1446 meta->spare[spares] = pd->pd_disk_id;
1451 /* We are done. Print meta data and store them to disks. */
1454 mdi->mdio_meta = meta;
1464 pd->pd_meta = jmicron_meta_copy(meta);