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