Logo Search packages:      
Sourcecode: dmraid version File versions

jm.h

/*
 * Copyright (C) 2006  Heinz Mauelshagen, Red Hat GmbH.
 *                     All rights reserved.
 *
 * Based on metadata specs kindly provided by JMicron
 *
 * See file LICENSE at the top of this source tree for license information.
 */

#ifndef     _JMICRON_H_
#define     _JMICRON_H_

#ifdef      FORMAT_HANDLER
#undef      FORMAT_HANDLER

#include <stdint.h>

/* JMicron config data sector offset off end of disk */
#define JM_CONFIGOFFSET ((di->sectors - 1) << 9)

/* Ondisk metadata for JMicron ATARAID */
struct jm {
#define JM_SIGNATURE "JM"
#define JM_SIGNATURE_LEN      2
      int8_t signature[JM_SIGNATURE_LEN]; /* 0x0 - 0x01 */

      uint16_t version; /* 0x03 - 0x04 JMicron version */
#define     JM_MINOR_VERSION(jm)    (jm->version & 0xFF)
#define     JM_MAJOR_VERSION(jm)    (jm->version >> 8)

      uint16_t checksum;      /* 0x04 - 0x05 */
      uint8_t filler[10];

      uint32_t identity;      /* 0x10 - 0x13 */

      struct {
            uint32_t base;    /* 0x14 - 0x17 */
            uint32_t range;   /* 0x18 - 0x1B range */
            uint16_t range2;  /* 0x1C - 0x1D range2 */
      } segment;

#define     JM_NAME_LEN 16
      int8_t name[JM_NAME_LEN];     /* 0x20 - 0x2F */

      uint8_t mode;           /* 0x30 RAID level */
#define     JM_T_RAID0  0
#define     JM_T_RAID1  1
#define     JM_T_RAID01 2     /* RAID 0+1 (striped with mirrors underneath) */
#define     JM_T_JBOD   3
#define     JM_T_RAID5  5

      uint8_t block;          /* 0x31 stride size (2=4K, 3=8K, ...) */
      uint16_t attribute;     /* 0x32 - 0x33 */
#define     JM_MOUNT    0x01
#define     JM_BOOTABLE 0x02
#define     JM_BADSEC   0x03
#define     JM_ACTIVE   0x05
#define     JM_UNSYNC   0x06
#define     JM_NEWEST   0x07

      uint8_t filler1[4];

#define     JM_SPARES   2
#define     JM_MEMBERS  8
      uint32_t spare[JM_SPARES];    /* 0x38 - 0x3F */
      uint32_t member[JM_MEMBERS];  /* 0x40 - 0x5F */
#define     JM_HDD_MASK 0xFFFFFFF0
#define     JM_SEG_MASK 0x0F

      uint8_t filler2[0x20];
} __attribute__ ((packed));

#endif

int register_jm(struct lib_context *lc);

#endif

Generated by  Doxygen 1.6.0   Back to index