Lines Matching defs:meta

153 g_raid_md_nvidia_print(struct nvidia_raid_conf *meta)
160 printf("nvidia_id <%.8s>\n", meta->nvidia_id);
161 printf("config_size %u\n", meta->config_size);
162 printf("checksum 0x%08x\n", meta->checksum);
163 printf("version 0x%04x\n", meta->version);
164 printf("disk_number %d\n", meta->disk_number);
165 printf("dummy_0 0x%02x\n", meta->dummy_0);
166 printf("total_sectors %u\n", meta->total_sectors);
167 printf("sector_size %u\n", meta->sector_size);
168 printf("name <%.16s>\n", meta->name);
170 meta->revision[0], meta->revision[1],
171 meta->revision[2], meta->revision[3]);
172 printf("disk_status 0x%08x\n", meta->disk_status);
173 printf("magic_0 0x%08x\n", meta->magic_0);
175 meta->volume_id[1], meta->volume_id[0]);
176 printf("state 0x%02x\n", meta->state);
177 printf("array_width %u\n", meta->array_width);
178 printf("total_disks %u\n", meta->total_disks);
179 printf("orig_array_width %u\n", meta->orig_array_width);
180 printf("type 0x%04x\n", meta->type);
181 printf("dummy_3 0x%04x\n", meta->dummy_3);
182 printf("strip_sectors %u\n", meta->strip_sectors);
183 printf("strip_bytes %u\n", meta->strip_bytes);
184 printf("strip_shift %u\n", meta->strip_shift);
185 printf("strip_mask 0x%08x\n", meta->strip_mask);
186 printf("stripe_sectors %u\n", meta->stripe_sectors);
187 printf("stripe_bytes %u\n", meta->stripe_bytes);
188 printf("rebuild_lba %u\n", meta->rebuild_lba);
189 printf("orig_type 0x%04x\n", meta->orig_type);
190 printf("orig_total_sectors %u\n", meta->orig_total_sectors);
191 printf("status 0x%08x\n", meta->status);
196 nvidia_meta_copy(struct nvidia_raid_conf *meta)
200 nmeta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK);
201 memcpy(nmeta, meta, sizeof(*meta));
206 nvidia_meta_translate_disk(struct nvidia_raid_conf *meta, int md_disk_pos)
210 if (md_disk_pos >= 0 && meta->type == NVIDIA_T_RAID01) {
211 disk_pos = (md_disk_pos / meta->array_width) +
212 (md_disk_pos % meta->array_width) * meta->array_width;
219 nvidia_meta_get_name(struct nvidia_raid_conf *meta, char *buf)
223 strncpy(buf, meta->name, 16);
233 nvidia_meta_put_name(struct nvidia_raid_conf *meta, char *buf)
236 memset(meta->name, 0x20, 16);
237 memcpy(meta->name, buf, MIN(strlen(buf), 16));
244 struct nvidia_raid_conf *meta;
259 meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK);
260 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
264 if (strncmp(meta->nvidia_id, NVIDIA_MAGIC, strlen(NVIDIA_MAGIC))) {
266 free(meta, M_MD_NVIDIA);
269 if (meta->config_size > 128 ||
270 meta->config_size < 30) {
272 meta->config_size);
273 free(meta, M_MD_NVIDIA);
278 for (checksum = 0, ptr = (uint32_t *)meta,
279 i = 0; i < meta->config_size; i++)
283 free(meta, M_MD_NVIDIA);
288 if (meta->state != NVIDIA_S_IDLE && meta->state != NVIDIA_S_INIT &&
289 meta->state != NVIDIA_S_REBUILD && meta->state != NVIDIA_S_SYNC) {
291 pp->name, meta->state);
292 free(meta, M_MD_NVIDIA);
297 if (meta->type != NVIDIA_T_RAID0 && meta->type != NVIDIA_T_RAID1 &&
298 meta->type != NVIDIA_T_RAID3 && meta->type != NVIDIA_T_RAID5 &&
299 meta->type != NVIDIA_T_RAID5_SYM &&
300 meta->type != NVIDIA_T_RAID01 && meta->type != NVIDIA_T_CONCAT) {
302 pp->name, meta->type);
303 free(meta, M_MD_NVIDIA);
307 return (meta);
311 nvidia_meta_write(struct g_consumer *cp, struct nvidia_raid_conf *meta)
321 meta->checksum = 0;
322 for (checksum = 0, ptr = (uint32_t *)meta,
323 i = 0; i < meta->config_size; i++)
325 meta->checksum -= checksum;
329 memcpy(buf, meta, sizeof(*meta));
433 struct nvidia_raid_conf *meta;
439 meta = mdi->mdio_meta;
446 if (disk_pos >= meta->total_disks || mdi->mdio_started)
451 disk_pos = nvidia_meta_translate_disk(meta, disk_pos);
539 if (meta->type == NVIDIA_T_CONCAT)
546 } else if (meta->state == NVIDIA_S_REBUILD &&
552 meta->array_width * pd->pd_meta->sector_size;
553 } else if (meta->state == NVIDIA_S_SYNC) {
558 meta->array_width * pd->pd_meta->sector_size;
653 struct nvidia_raid_conf *meta;
663 meta = mdi->mdio_meta;
666 nvidia_meta_get_name(meta, buf);
668 vol->v_mediasize = (off_t)meta->total_sectors * 512;
670 if (meta->type == NVIDIA_T_RAID0) {
673 } else if (meta->type == NVIDIA_T_RAID1) {
676 } else if (meta->type == NVIDIA_T_RAID01) {
679 } else if (meta->type == NVIDIA_T_CONCAT) {
685 } else if (meta->type == NVIDIA_T_RAID5) {
689 } else if (meta->type == NVIDIA_T_RAID5_SYM) {
697 vol->v_strip_size = meta->strip_sectors * 512; //ZZZ
830 struct nvidia_raid_conf *meta;
842 meta = NULL;
850 meta = nvidia_meta_read(cp);
853 if (meta == NULL) {
870 g_raid_md_nvidia_print(meta);
871 G_RAID_DEBUG(1, "NVIDIA disk position %d", meta->disk_number);
872 spare = 0;//(meta->type == NVIDIA_T_SPARE) ? 1 : 0;
892 &meta->volume_id, 16) == 0)
908 memcpy(&mdi->mdio_volume_id, &meta->volume_id, 16);
930 pd->pd_meta = meta;
951 free(meta, M_MD_NVIDIA);
1398 struct nvidia_raid_conf *meta;
1411 meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK | M_ZERO);
1413 memcpy(meta, mdi->mdio_meta, sizeof(*meta));
1414 memcpy(meta->nvidia_id, NVIDIA_MAGIC, sizeof(NVIDIA_MAGIC) - 1);
1415 meta->config_size = 30;
1416 meta->version = 0x0064;
1417 meta->total_sectors = vol->v_mediasize / vol->v_sectorsize;
1418 meta->sector_size = vol->v_sectorsize;
1419 nvidia_meta_put_name(meta, vol->v_name);
1420 meta->magic_0 = NVIDIA_MAGIC0;
1421 memcpy(&meta->volume_id, &mdi->mdio_volume_id, 16);
1422 meta->state = NVIDIA_S_IDLE;
1424 meta->array_width = 1;
1426 meta->array_width = vol->v_disks_count / 2;
1428 meta->array_width = vol->v_disks_count - 1;
1430 meta->array_width = vol->v_disks_count;
1431 meta->total_disks = vol->v_disks_count;
1432 meta->orig_array_width = meta->array_width;
1434 meta->type = NVIDIA_T_RAID0;
1436 meta->type = NVIDIA_T_RAID1;
1438 meta->type = NVIDIA_T_RAID01;
1441 meta->type = NVIDIA_T_CONCAT;
1443 meta->type = NVIDIA_T_RAID5;
1445 meta->type = NVIDIA_T_RAID5_SYM;
1446 meta->strip_sectors = vol->v_strip_size / vol->v_sectorsize;
1447 meta->strip_bytes = vol->v_strip_size;
1448 meta->strip_shift = ffs(meta->strip_sectors) - 1;
1449 meta->strip_mask = meta->strip_sectors - 1;
1450 meta->stripe_sectors = meta->strip_sectors * meta->orig_array_width;
1451 meta->stripe_bytes = meta->stripe_sectors * vol->v_sectorsize;
1452 meta->rebuild_lba = 0;
1453 meta->orig_type = meta->type;
1454 meta->orig_total_sectors = meta->total_sectors;
1455 meta->status = 0;
1462 meta->state != NVIDIA_S_REBUILD)
1463 meta->state = NVIDIA_S_SYNC;
1466 meta->state = NVIDIA_S_REBUILD;
1469 /* We are done. Print meta data and store them to disks. */
1472 mdi->mdio_meta = meta;
1483 pd->pd_meta = nvidia_meta_copy(meta);
1487 nvidia_meta_translate_disk(meta, sd->sd_pos);
1492 meta->array_width;
1495 pd->pd_meta->disk_number = meta->total_disks + spares++;