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 = (struct nvidia_raid_conf *)buf;
262 if (strncmp(meta->nvidia_id, NVIDIA_MAGIC, strlen(NVIDIA_MAGIC))) {
267 if (meta->config_size > 128 ||
268 meta->config_size < 30) {
270 meta->config_size);
274 meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK);
275 memcpy(meta, buf, min(sizeof(*meta), pp->sectorsize));
279 for (checksum = 0, ptr = (uint32_t *)meta,
280 i = 0; i < meta->config_size; i++)
284 free(meta, M_MD_NVIDIA);
289 if (meta->state != NVIDIA_S_IDLE && meta->state != NVIDIA_S_INIT &&
290 meta->state != NVIDIA_S_REBUILD && meta->state != NVIDIA_S_SYNC) {
292 pp->name, meta->state);
293 free(meta, M_MD_NVIDIA);
298 if (meta->type != NVIDIA_T_RAID0 && meta->type != NVIDIA_T_RAID1 &&
299 meta->type != NVIDIA_T_RAID3 && meta->type != NVIDIA_T_RAID5 &&
300 meta->type != NVIDIA_T_RAID5_SYM &&
301 meta->type != NVIDIA_T_RAID01 && meta->type != NVIDIA_T_CONCAT) {
303 pp->name, meta->type);
304 free(meta, M_MD_NVIDIA);
308 return (meta);
312 nvidia_meta_write(struct g_consumer *cp, struct nvidia_raid_conf *meta)
322 meta->checksum = 0;
323 for (checksum = 0, ptr = (uint32_t *)meta,
324 i = 0; i < meta->config_size; i++)
326 meta->checksum -= checksum;
330 memcpy(buf, meta, sizeof(*meta));
434 struct nvidia_raid_conf *meta;
440 meta = mdi->mdio_meta;
447 if (disk_pos >= meta->total_disks || mdi->mdio_started)
452 disk_pos = nvidia_meta_translate_disk(meta, disk_pos);
540 if (meta->type == NVIDIA_T_CONCAT)
547 } else if (meta->state == NVIDIA_S_REBUILD &&
553 meta->array_width * pd->pd_meta->sector_size;
554 } else if (meta->state == NVIDIA_S_SYNC) {
559 meta->array_width * pd->pd_meta->sector_size;
654 struct nvidia_raid_conf *meta;
664 meta = mdi->mdio_meta;
667 nvidia_meta_get_name(meta, buf);
669 vol->v_mediasize = (off_t)meta->total_sectors * 512;
671 if (meta->type == NVIDIA_T_RAID0) {
674 } else if (meta->type == NVIDIA_T_RAID1) {
677 } else if (meta->type == NVIDIA_T_RAID01) {
680 } else if (meta->type == NVIDIA_T_CONCAT) {
686 } else if (meta->type == NVIDIA_T_RAID5) {
690 } else if (meta->type == NVIDIA_T_RAID5_SYM) {
698 vol->v_strip_size = meta->strip_sectors * 512; //ZZZ
831 struct nvidia_raid_conf *meta;
843 meta = NULL;
849 meta = nvidia_meta_read(cp);
851 if (meta == NULL) {
868 g_raid_md_nvidia_print(meta);
869 G_RAID_DEBUG(1, "NVIDIA disk position %d", meta->disk_number);
870 spare = 0;//(meta->type == NVIDIA_T_SPARE) ? 1 : 0;
890 &meta->volume_id, 16) == 0)
906 memcpy(&mdi->mdio_volume_id, &meta->volume_id, 16);
932 pd->pd_meta = meta;
953 free(meta, M_MD_NVIDIA);
1400 struct nvidia_raid_conf *meta;
1413 meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK | M_ZERO);
1415 memcpy(meta, mdi->mdio_meta, sizeof(*meta));
1416 memcpy(meta->nvidia_id, NVIDIA_MAGIC, sizeof(NVIDIA_MAGIC) - 1);
1417 meta->config_size = 30;
1418 meta->version = 0x0064;
1419 meta->total_sectors = vol->v_mediasize / vol->v_sectorsize;
1420 meta->sector_size = vol->v_sectorsize;
1421 nvidia_meta_put_name(meta, vol->v_name);
1422 meta->magic_0 = NVIDIA_MAGIC0;
1423 memcpy(&meta->volume_id, &mdi->mdio_volume_id, 16);
1424 meta->state = NVIDIA_S_IDLE;
1426 meta->array_width = 1;
1428 meta->array_width = vol->v_disks_count / 2;
1430 meta->array_width = vol->v_disks_count - 1;
1432 meta->array_width = vol->v_disks_count;
1433 meta->total_disks = vol->v_disks_count;
1434 meta->orig_array_width = meta->array_width;
1436 meta->type = NVIDIA_T_RAID0;
1438 meta->type = NVIDIA_T_RAID1;
1440 meta->type = NVIDIA_T_RAID01;
1443 meta->type = NVIDIA_T_CONCAT;
1445 meta->type = NVIDIA_T_RAID5;
1447 meta->type = NVIDIA_T_RAID5_SYM;
1448 meta->strip_sectors = vol->v_strip_size / vol->v_sectorsize;
1449 meta->strip_bytes = vol->v_strip_size;
1450 meta->strip_shift = ffs(meta->strip_sectors) - 1;
1451 meta->strip_mask = meta->strip_sectors - 1;
1452 meta->stripe_sectors = meta->strip_sectors * meta->orig_array_width;
1453 meta->stripe_bytes = meta->stripe_sectors * vol->v_sectorsize;
1454 meta->rebuild_lba = 0;
1455 meta->orig_type = meta->type;
1456 meta->orig_total_sectors = meta->total_sectors;
1457 meta->status = 0;
1464 meta->state != NVIDIA_S_REBUILD)
1465 meta->state = NVIDIA_S_SYNC;
1468 meta->state = NVIDIA_S_REBUILD;
1471 /* We are done. Print meta data and store them to disks. */
1474 mdi->mdio_meta = meta;
1485 pd->pd_meta = nvidia_meta_copy(meta);
1489 nvidia_meta_translate_disk(meta, sd->sd_pos);
1494 meta->array_width;
1497 pd->pd_meta->disk_number = meta->total_disks + spares++;