summaryrefslogtreecommitdiffstats
path: root/libblkid/ddf_raid.c
diff options
context:
space:
mode:
Diffstat (limited to 'libblkid/ddf_raid.c')
-rw-r--r--libblkid/ddf_raid.c139
1 files changed, 0 insertions, 139 deletions
diff --git a/libblkid/ddf_raid.c b/libblkid/ddf_raid.c
deleted file mode 100644
index 24df421d1..000000000
--- a/libblkid/ddf_raid.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2008 Karel Zak <kzak@redhat.com>
- *
- * Inspired by libvolume_id by
- * Kay Sievers <kay.sievers@vrfy.org>
- *
- * This file may be redistributed under the terms of the
- * GNU Lesser General Public License.
- */
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdint.h>
-
-#include "superblocks.h"
-
-/* http://www.snia.org/standards/home */
-#define DDF_GUID_LENGTH 24
-#define DDF_REV_LENGTH 8
-#define DDF_MAGIC 0xDE11DE11
-
-
-struct ddf_header {
- uint32_t signature;
- uint32_t crc;
- uint8_t guid[DDF_GUID_LENGTH];
- char ddf_rev[8]; /* 01.02.00 */
- uint32_t seq; /* starts at '1' */
- uint32_t timestamp;
- uint8_t openflag;
- uint8_t foreignflag;
- uint8_t enforcegroups;
- uint8_t pad0; /* 0xff */
- uint8_t pad1[12]; /* 12 * 0xff */
- /* 64 bytes so far */
- uint8_t header_ext[32]; /* reserved: fill with 0xff */
- uint64_t primary_lba;
- uint64_t secondary_lba;
- uint8_t type;
- uint8_t pad2[3]; /* 0xff */
- uint32_t workspace_len; /* sectors for vendor space -
- * at least 32768(sectors) */
- uint64_t workspace_lba;
- uint16_t max_pd_entries; /* one of 15, 63, 255, 1023, 4095 */
- uint16_t max_vd_entries; /* 2^(4,6,8,10,12)-1 : i.e. as above */
- uint16_t max_partitions; /* i.e. max num of configuration
- record entries per disk */
- uint16_t config_record_len; /* 1 +ROUNDUP(max_primary_element_entries
- *12/512) */
- uint16_t max_primary_element_entries; /* 16, 64, 256, 1024, or 4096 */
- uint8_t pad3[54]; /* 0xff */
- /* 192 bytes so far */
- uint32_t controller_section_offset;
- uint32_t controller_section_length;
- uint32_t phys_section_offset;
- uint32_t phys_section_length;
- uint32_t virt_section_offset;
- uint32_t virt_section_length;
- uint32_t config_section_offset;
- uint32_t config_section_length;
- uint32_t data_section_offset;
- uint32_t data_section_length;
- uint32_t bbm_section_offset;
- uint32_t bbm_section_length;
- uint32_t diag_space_offset;
- uint32_t diag_space_length;
- uint32_t vendor_offset;
- uint32_t vendor_length;
- /* 256 bytes so far */
- uint8_t pad4[256]; /* 0xff */
-} __attribute__((packed));
-
-static int probe_ddf(blkid_probe pr,
- const struct blkid_idmag *mag __attribute__((__unused__)))
-{
- int hdrs[] = { 1, 257 };
- size_t i;
- struct ddf_header *ddf = NULL;
- char version[DDF_REV_LENGTH + 1];
- uint64_t off, lba;
-
- if (pr->size < 0x30000)
- return -1;
-
- for (i = 0; i < ARRAY_SIZE(hdrs); i++) {
- off = ((pr->size / 0x200) - hdrs[i]) * 0x200;
-
- ddf = (struct ddf_header *) blkid_probe_get_buffer(pr,
- off,
- sizeof(struct ddf_header));
- if (!ddf)
- return -1;
-
- if (ddf->signature == cpu_to_be32(DDF_MAGIC) ||
- ddf->signature == cpu_to_le32(DDF_MAGIC))
- break;
- ddf = NULL;
- }
-
- if (!ddf)
- return -1;
-
- lba = ddf->signature == cpu_to_be32(DDF_MAGIC) ?
- be64_to_cpu(ddf->primary_lba) :
- le64_to_cpu(ddf->primary_lba);
-
- if (lba > 0) {
- /* check primary header */
- unsigned char *buf;
-
- buf = blkid_probe_get_buffer(pr,
- lba << 9, sizeof(ddf->signature));
- if (!buf || memcmp(buf, &ddf->signature, 4))
- return -1;
- }
-
- blkid_probe_strncpy_uuid(pr, ddf->guid, sizeof(ddf->guid));
-
- memcpy(version, ddf->ddf_rev, sizeof(ddf->ddf_rev));
- *(version + sizeof(ddf->ddf_rev)) = '\0';
-
- if (blkid_probe_set_version(pr, version) != 0)
- return -1;
- if (blkid_probe_set_magic(pr, off,
- sizeof(ddf->signature),
- (unsigned char *) &ddf->signature))
- return -1;
- return 0;
-}
-
-const struct blkid_idinfo ddfraid_idinfo = {
- .name = "ddf_raid_member",
- .usage = BLKID_USAGE_RAID,
- .probefunc = probe_ddf,
- .magics = BLKID_NONE_MAGIC
-};
-
-