111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   This header was automatically generated from a Linux kernel header
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   of the same name, to make information necessary for userspace to
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   call into the kernel available to libc.  It contains only constants,
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   structures, and macros generated from the original header, and thus,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***   contains no copyrightable information.
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ***
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert ****************************************************************************/
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _MD_P_H
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _MD_P_H
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_RESERVED_BYTES (64 * 1024)
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_RESERVED_SECTORS (MD_RESERVED_BYTES / 512)
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_RESERVED_BLOCKS (MD_RESERVED_BYTES / BLOCK_SIZE)
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_NEW_SIZE_SECTORS(x) ((x & ~(MD_RESERVED_SECTORS - 1)) - MD_RESERVED_SECTORS)
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_NEW_SIZE_BLOCKS(x) ((x & ~(MD_RESERVED_BLOCKS - 1)) - MD_RESERVED_BLOCKS)
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_BYTES 4096
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_WORDS (MD_SB_BYTES / 4)
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_BLOCKS (MD_SB_BYTES / BLOCK_SIZE)
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_SECTORS (MD_SB_BYTES / 512)
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_GENERIC_OFFSET 0
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_PERSONALITY_OFFSET 64
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_DISKS_OFFSET 128
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_DESCRIPTOR_OFFSET 992
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_GENERIC_CONSTANT_WORDS 32
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_GENERIC_STATE_WORDS 32
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_GENERIC_WORDS (MD_SB_GENERIC_CONSTANT_WORDS + MD_SB_GENERIC_STATE_WORDS)
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_PERSONALITY_WORDS 64
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_DESCRIPTOR_WORDS 32
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_DISKS 27
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_DISKS_WORDS (MD_SB_DISKS*MD_SB_DESCRIPTOR_WORDS)
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_RESERVED_WORDS (1024 - MD_SB_GENERIC_WORDS - MD_SB_PERSONALITY_WORDS - MD_SB_DISKS_WORDS - MD_SB_DESCRIPTOR_WORDS)
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_EQUAL_WORDS (MD_SB_GENERIC_WORDS + MD_SB_PERSONALITY_WORDS + MD_SB_DISKS_WORDS)
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_DISK_FAULTY 0
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_DISK_ACTIVE 1
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_DISK_SYNC 2
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_DISK_REMOVED 3
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_DISK_WRITEMOSTLY 9
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct mdp_device_descriptor_s {
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 number;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 major;
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 minor;
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 raid_disk;
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 state;
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 reserved[MD_SB_DESCRIPTOR_WORDS - 5];
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} mdp_disk_t;
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_MAGIC 0xa92b4efc
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_CLEAN 0
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_ERRORS 1
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_SB_BITMAP_PRESENT 8
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct mdp_superblock_s {
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 md_magic;
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 major_version;
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 minor_version;
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 patch_version;
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gvalid_words;
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 set_uuid0;
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 ctime;
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 level;
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 size;
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 nr_disks;
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 raid_disks;
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 md_minor;
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 not_persistent;
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 set_uuid1;
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 set_uuid2;
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 set_uuid3;
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gstate_creserved[MD_SB_GENERIC_CONSTANT_WORDS - 16];
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 utime;
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 state;
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 active_disks;
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 working_disks;
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 failed_disks;
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 spare_disks;
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 sb_csum;
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __BIG_ENDIAN
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 events_hi;
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 events_lo;
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cp_events_hi;
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cp_events_lo;
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#else
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 events_lo;
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 events_hi;
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cp_events_lo;
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 cp_events_hi;
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 recovery_cp;
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u64 reshape_position;
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 new_level;
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 delta_disks;
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 new_layout;
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 new_chunk;
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 gstate_sreserved[MD_SB_GENERIC_STATE_WORDS - 18];
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 layout;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 chunk_size;
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 root_pv;
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 root_block;
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 pstate_reserved[MD_SB_PERSONALITY_WORDS - 4];
11711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert mdp_disk_t disks[MD_SB_DISKS];
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert __u32 reserved[MD_SB_RESERVED_WORDS];
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert mdp_disk_t this_disk;
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} mdp_super_t;
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define WriteMostly1 1
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_FEATURE_BITMAP_OFFSET 1
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_FEATURE_RECOVERY_OFFSET 2
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_FEATURE_RESHAPE_ACTIVE 4
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define MD_FEATURE_ALL (1|2|4)
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
136