probe.h revision 801b0053336cc5fe5b3447ddad58505352a6578e
1e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * probe.h - constants and on-disk structures for extracting device data 3e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * 4e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Copyright (C) 1999 by Andries Brouwer 550b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o * Copyright (C) 1999, 2000, 2003 by Theodore Ts'o 6e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Copyright (C) 2001 by Andreas Dilger 7e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * 8e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * %Begin-Header% 9e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * This file may be redistributed under the terms of the 10e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * GNU Lesser General Public License. 11e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * %End-Header% 12e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o */ 13e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 14e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#ifndef _BLKID_PROBE_H 15e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define _BLKID_PROBE_H 16e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 17e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#include <blkid/blkid_types.h> 18e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 19e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct blkid_magic; 20e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 21ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o#define SB_BUFFER_SIZE 0x11000 22ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o 23ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'ostruct blkid_probe { 24ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o int fd; 25ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o blkid_cache cache; 26ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o blkid_dev dev; 27ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o unsigned char *sbbuf; 28ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o size_t sb_valid; 29ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o unsigned char *buf; 30ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o size_t buf_max; 31ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o}; 32ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o 33efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'otypedef int (*blkid_probe_t)(struct blkid_probe *probe, 3479dd234a799434b6dc8365c49e743f00eb09d2fdTheodore Ts'o struct blkid_magic *id, unsigned char *buf); 35e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 36e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct blkid_magic { 37e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o const char *bim_type; /* type name for this magic */ 38e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o long bim_kboff; /* kilobyte offset of superblock */ 39e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned bim_sboff; /* byte offset within superblock */ 40e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned bim_len; /* length of magic */ 41d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o const char *bim_magic; /* magic string */ 42e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o blkid_probe_t bim_probe; /* probe function */ 43e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 44e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 45e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 46e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Structures for each of the content types we want to extract information 47e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * from. We do not necessarily need the magic field here, because we have 48e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * already identified the content type before we get this far. It may still 49e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * be useful if there are probe functions which handle multiple content types. 50e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o */ 51e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct ext2_super_block { 52e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_inodes_count; 53e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_blocks_count; 54e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_r_blocks_count; 55e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_free_blocks_count; 56e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_free_inodes_count; 57e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_first_data_block; 58e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_log_block_size; 59e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_dummy3[7]; 60e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char s_magic[2]; 61e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 s_state; 62e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_dummy5[8]; 63e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_compat; 64e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_incompat; 65e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_ro_compat; 66e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char s_uuid[16]; 67d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char s_volume_name[16]; 68ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o char s_last_mounted[64]; 69ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_algorithm_usage_bitmap; 70ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_prealloc_blocks; 71ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_prealloc_dir_blocks; 72ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u16 s_reserved_gdt_blocks; 73ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_journal_uuid[16]; 74ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_journal_inum; 75ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_journal_dev; 76ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_last_orphan; 77ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_hash_seed[4]; 78ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_def_hash_version; 79ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u8 s_jnl_backup_type; 80ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u16 s_reserved_word_pad; 81ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_default_mount_opts; 82ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_first_meta_bg; 83ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_mkfs_time; 84ba5e38494e6b42d77f76d9ad18744388958eca7cTheodore Ts'o __u32 s_jnl_blocks[17]; 852921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u32 s_blocks_count_hi; 862921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u32 s_r_blocks_count_hi; 872921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u32 s_free_blocks_hi; 882921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u16 s_min_extra_isize; 892921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u16 s_want_extra_isize; 902921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u32 s_flags; 912921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u16 s_raid_stride; 922921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u16 s_mmp_interval; 932921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u64 s_mmp_block; 942921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u32 s_raid_stripe_width; 952921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o __u32 s_reserved[163]; 96e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 972921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 982921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o/* for s_flags */ 992921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FLAGS_TEST_FILESYS 0x0004 1002921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 1012921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o/* for s_feature_compat */ 1022921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004 1032921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 1042921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o/* for s_feature_ro_compat */ 1052921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001 1062921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002 1072921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004 1082921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_RO_COMPAT_HUGE_FILE 0x0008 1092921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_RO_COMPAT_GDT_CSUM 0x0010 1102921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_RO_COMPAT_DIR_NLINK 0x0020 1112921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE 0x0040 1122921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 1132921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o/* for s_feature_incompat */ 1142921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002 1152921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004 1162921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008 1172921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_INCOMPAT_META_BG 0x0010 1182921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_INCOMPAT_EXTENTS 0x0040 /* extents support */ 1192921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_INCOMPAT_64BIT 0x0080 1202921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_INCOMPAT_MMP 0x0100 1212921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT4_FEATURE_INCOMPAT_FLEX_BG 0x0200 1222921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 1232921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ 1242921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ 1252921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT2_FEATURE_RO_COMPAT_BTREE_DIR) 1262921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ 1272921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT2_FEATURE_INCOMPAT_META_BG) 1282921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP 1292921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP 1302921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 1312921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER| \ 1322921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT2_FEATURE_RO_COMPAT_LARGE_FILE| \ 1332921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT2_FEATURE_RO_COMPAT_BTREE_DIR) 1342921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE| \ 1352921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT3_FEATURE_INCOMPAT_RECOVER| \ 1362921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o EXT2_FEATURE_INCOMPAT_META_BG) 1372921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_INCOMPAT_UNSUPPORTED ~EXT3_FEATURE_INCOMPAT_SUPP 1382921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o#define EXT3_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT3_FEATURE_RO_COMPAT_SUPP 1392921332fd88b843ffb828d9c18f05bfd171ace76Theodore Ts'o 140e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 141e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct xfs_super_block { 142e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char xs_magic[4]; 143e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_blocksize; 144e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_dblocks; 145e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_rblocks; 14609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 xs_dummy1[2]; 147e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char xs_uuid[16]; 148e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_dummy2[15]; 149d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char xs_fname[12]; 150e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_dummy3[2]; 151e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_icount; 152e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_ifree; 153e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_fdblocks; 154e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 155e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 156e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct reiserfs_super_block { 157e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_blocks_count; 158e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_free_blocks; 159e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_root_block; 160e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_journal_block; 161e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_journal_dev; 162e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_orig_journal_size; 163e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_dummy2[5]; 164e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 rs_blocksize; 165e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 rs_dummy3[3]; 166e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char rs_magic[12]; 167e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_dummy4[5]; 168e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char rs_uuid[16]; 169d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char rs_label[16]; 170e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 171e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 172bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'ostruct reiser4_super_block { 173bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_magic[16]; 174bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o __u16 rs4_dummy[2]; 175bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_uuid[16]; 176bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_label[16]; 177bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o __u64 rs4_dummy2; 178bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o}; 179bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o 18009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct jfs_super_block { 18109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_magic[4]; 18209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_version; 18309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u64 js_size; 184b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u32 js_bsize; /* 4: aggregate block size in bytes */ 185b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u16 js_l2bsize; /* 2: log2 of s_bsize */ 186b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u16 js_l2bfactor; /* 2: log2(s_bsize/hardware block size) */ 187b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u32 js_pbsize; /* 4: hardware/LVM block size in bytes */ 188b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u16 js_l2pbsize; /* 2: log2 of s_pbsize */ 189b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u16 js_pad; /* 2: padding necessary for alignment */ 190b41fb002257d4b997560cd77676b78219be03c24Theodore Ts'o __u32 js_dummy2[26]; 19109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_uuid[16]; 19209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_label[16]; 19309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_loguuid[16]; 19409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 19509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 19609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct romfs_super_block { 19709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_magic[8]; 19809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 ros_dummy1[2]; 19909a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_volume[16]; 20009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 20109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 2024c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'ostruct cramfs_super_block { 2034c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 magic[4]; 2044c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 size; 2054c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 flags; 2064c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 future; 2074c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 signature[16]; 2084c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o struct cramfs_info { 2094c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 crc; 2104c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 edition; 2114c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 blocks; 2124c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 files; 2134c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o } info; 2144c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 name[16]; 2154c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o}; 2164c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o 2177369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'ostruct swap_id_block { 2187369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o/* unsigned char sws_boot[1024]; */ 2197369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_version; 2207369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_lastpage; 2217369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_nrbad; 2227369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_uuid[16]; 22312b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char sws_volume[16]; 2247369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_pad[117]; 2257369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_badpg; 2267369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o}; 2277369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o 228e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 229e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct vfat_super_block { 230e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char vs_ignored[3]; 231e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char vs_sysid[8]; 232e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char vs_sector_size[2]; 233e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 vs_cluster_size; 234e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 vs_reserved; 235e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 vs_fats; 236e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char vs_dir_entries[2]; 237e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char vs_sectors[2]; 238e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char vs_media; 239e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 vs_fat_length; 240e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 vs_secs_track; 241e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 vs_heads; 242e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 vs_hidden; 243e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 vs_total_sect; 244e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ __u32 vs_fat32_length; 245e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 28*/ __u16 vs_flags; 246e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2a*/ __u8 vs_version[2]; 247e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2c*/ __u32 vs_root_cluster; 248e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 30*/ __u16 vs_insfo_sector; 249e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 32*/ __u16 vs_backup_boot; 250e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 34*/ __u16 vs_reserved2[6]; 251e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 40*/ unsigned char vs_unknown[3]; 252e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 43*/ unsigned char vs_serno[4]; 253ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o/* 47*/ unsigned char vs_label[11]; 254e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 52*/ unsigned char vs_magic[8]; 255e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 5a*/ unsigned char vs_dummy2[164]; 256e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char vs_pmagic[2]; 257e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 258e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 259e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 260e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct msdos_super_block { 261e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char ms_ignored[3]; 262e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char ms_sysid[8]; 263e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char ms_sector_size[2]; 264e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 ms_cluster_size; 265e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 ms_reserved; 266e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 ms_fats; 267e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char ms_dir_entries[2]; 268e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char ms_sectors[2]; 269e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char ms_media; 270e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 ms_fat_length; 271e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 ms_secs_track; 272e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 ms_heads; 273e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 ms_hidden; 274e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 ms_total_sect; 275e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ unsigned char ms_unknown[3]; 276e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 27*/ unsigned char ms_serno[4]; 277ca7498596f80896c8c495d5b0c3f20dd12ca9336Theodore Ts'o/* 2b*/ unsigned char ms_label[11]; 278e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 36*/ unsigned char ms_magic[8]; 279e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 3d*/ unsigned char ms_dummy2[192]; 280e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char ms_pmagic[2]; 281e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 282e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 283c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zakstruct vfat_dir_entry { 284c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u8 name[11]; 285c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u8 attr; 286c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_creat; 287c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_creat; 288c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_acc; 289c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_acc; 290c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 cluster_high; 291c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_write; 292c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_write; 293c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 cluster_low; 294c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u32 size; 295c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak}; 296c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak 297c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak/* maximum number of clusters */ 298c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT12_MAX 0xFF4 299c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT16_MAX 0xFFF4 300c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT32_MAX 0x0FFFFFF6 301c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak 302e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct minix_super_block { 303e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_ninodes; 304e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_nzones; 305e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_imap_blocks; 306e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_zmap_blocks; 307e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_firstdatazone; 308e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_log_zone_size; 309e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_max_size; 310e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char ms_magic[2]; 311e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_state; 312e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_zones; 313e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 314e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 315e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct mdp_superblock_s { 316e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_magic; 317e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 major_version; 318e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 minor_version; 319e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 patch_version; 320e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 gvalid_words; 321e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid0; 322e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ctime; 323e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 level; 324e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 size; 325e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 nr_disks; 326e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 raid_disks; 327e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_minor; 328e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 not_persistent; 329e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid1; 330e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid2; 331e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid3; 332e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 333e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 334e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct hfs_super_block { 335e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_magic[2]; 336e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_dummy[18]; 337e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 h_blksize; 338e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 339e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 3409387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_header { 3413838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char minor_version[4]; 3423838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char major_version[4]; 3433838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[128]; 34412b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char mount[128]; 34512b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o unsigned char mount_len[2]; 3469387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 3479387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 3489387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_label { 3493838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char disk_lock[48]; 350efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o char label[64]; 3513838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char label_len[2]; 3523838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id[16]; 3533838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id_len[2]; 3549387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 3559387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 3563838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmajor(o) ((__u32)o.major_version[0] \ 3573838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[1]) << 8) \ 3583838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[2]) << 16) \ 3593838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[3]) << 24)) 3603838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfslabellen(o) ((__u32)o.label_len[0] + (((__u32) o.label_len[1]) << 8)) 3613838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmountlen(o) ((__u32)o.mount_len[0] + (((__u32) o.mount_len[1])<<8)) 3629387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 3639387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o#define OCFS_MAGIC "OracleCFS" 3649387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 365414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'ostruct ocfs2_super_block { 3663838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[8]; 3673838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy1[184]; 3683838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy2[80]; 36912b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char s_label[64]; 3703838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_uuid[16]; 371414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o}; 372414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 373414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MIN_BLOCKSIZE 512 374414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MAX_BLOCKSIZE 4096 375414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 376414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_BLKNO 2 377414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 378414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_SIGNATURE "OCFSV2" 379414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 3802c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'ostruct oracle_asm_disk_label { 3812c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dummy[32]; 3822c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_tag[8]; 3832c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_id[24]; 3842c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o}; 3852c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 3862c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_MARKED "ORCLDISK" 3872c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_OFFSET 32 3882c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 3893de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'ostruct iso_volume_descriptor { 39045a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char vd_type; 39145a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char vd_id[5]; 39245a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char vd_version; 39345a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char flags; 39445a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char system_id[32]; 39545a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char volume_id[32]; 39645a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char unused[8]; 39745a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char space_size[8]; 39845a3fa873852ce407b5eda0f764c63bab04e4c0cTheodore Ts'o unsigned char escape_sequences[8]; 3993de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o}; 4003de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o 401b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak/* Common gfs/gfs2 constants: */ 402b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_MAGIC 0x01161970 403b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_DEFAULT_BSIZE 4096 404b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_SUPERBLOCK_OFFSET (0x10 * GFS_DEFAULT_BSIZE) 405b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_METATYPE_SB 1 406b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_FORMAT_SB 100 407b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_LOCKNAME_LEN 64 408b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak 409b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak/* gfs1 constants: */ 410b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_FORMAT_FS 1309 411b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS_FORMAT_MULTI 1401 412b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak/* gfs2 constants: */ 413b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS2_FORMAT_FS 1801 414b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak#define GFS2_FORMAT_MULTI 1900 415b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak 416b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zakstruct gfs2_meta_header { 417b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 mh_magic; 418b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 mh_type; 419b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u64 __pad0; /* Was generation number in gfs1 */ 420b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 mh_format; 421b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 __pad1; /* Was incarnation number in gfs1 */ 422b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak}; 423b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak 424b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zakstruct gfs2_inum { 425b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u64 no_formal_ino; 426b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u64 no_addr; 427b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak}; 428b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak 429b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zakstruct gfs2_sb { 430b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak struct gfs2_meta_header sb_header; 431b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak 432b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 sb_fs_format; 433b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 sb_multihost_format; 434b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 __pad0; /* Was superblock flags in gfs1 */ 435efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 436b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 sb_bsize; 437b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 sb_bsize_shift; 438b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak __u32 __pad1; /* Was journal segment size in gfs1 */ 439efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 440b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak struct gfs2_inum sb_master_dir; /* Was jindex dinode in gfs1 */ 441b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak struct gfs2_inum __pad2; /* Was rindex dinode in gfs1 */ 442b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak struct gfs2_inum sb_root_dir; 443efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 444b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak char sb_lockproto[GFS_LOCKNAME_LEN]; 445b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak char sb_locktable[GFS_LOCKNAME_LEN]; 446b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak /* In gfs1, quota and license dinodes followed */ 447b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak}; 448b5517ca6678d590b52f38ad701fbaf6c9716b73dKarel Zak 449cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'ostruct ntfs_super_block { 450cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 jump[3]; 451cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 oem_id[8]; 452cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 bios_parameter_block[25]; 453cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 unused[2]; 454cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u64 number_of_sectors; 455cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u64 mft_cluster_location; 456cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u64 mft_mirror_cluster_location; 457cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __s8 cluster_per_mft_record; 458cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 reserved1[3]; 459cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __s8 cluster_per_index_record; 460cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 reserved2[3]; 461cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u64 volume_serial; 462cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 checksum; 463cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o}; 464cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o 465cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'ostruct master_file_table_record { 466cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u32 magic; 467cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 usa_ofs; 468cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 usa_count; 469cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u64 lsn; 470cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 sequence_number; 471cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 link_count; 472cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 attrs_offset; 473cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 flags; 474cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u32 bytes_in_use; 475cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u32 bytes_allocated; 476cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o} __attribute__((__packed__)); 477cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o 478cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'ostruct file_attribute { 479cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u32 type; 480cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u32 len; 481cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 non_resident; 482cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u8 name_len; 483cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 name_offset; 484cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 flags; 485cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 instance; 486cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u32 value_len; 487cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o __u16 value_offset; 488cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o} __attribute__((__packed__)); 489cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o 490cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o#define MFT_RECORD_VOLUME 3 491cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o#define MFT_RECORD_ATTR_VOLUME_NAME 0x60 492cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o#define MFT_RECORD_ATTR_VOLUME_INFO 0x70 493cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o#define MFT_RECORD_ATTR_OBJECT_ID 0x40 494cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o#define MFT_RECORD_ATTR_END 0xffffffffu 495cb0c5d701a8852f72fe75c9bd223643fb5222399Theodore Ts'o 49669d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o/* HFS / HFS+ */ 49769d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'ostruct hfs_finder_info { 49869d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 boot_folder; 49969d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 start_app; 50069d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 open_folder; 50169d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 os9_folder; 50269d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 reserved; 50369d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 osx_folder; 50469d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u8 id[8]; 50569d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o} __attribute__((packed)); 50669d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o 50769d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'ostruct hfs_mdb { 50869d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u8 signature[2]; 50969d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 cr_date; 51069d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 ls_Mod; 51169d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 atrb; 51269d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 nm_fls; 51369d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 vbm_st; 51469d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 alloc_ptr; 51569d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 nm_al_blks; 51669d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 al_blk_size; 51769d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 clp_size; 51869d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 al_bl_st; 51969d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 nxt_cnid; 52069d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 free_bks; 52169d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u8 label_len; 52269d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u8 label[27]; 52369d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 vol_bkup; 52469d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 vol_seq_num; 52569d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 wr_cnt; 52669d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 xt_clump_size; 52769d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 ct_clump_size; 52869d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 num_root_dirs; 52969d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 file_count; 53069d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u32 dir_count; 53169d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o struct hfs_finder_info finder_info; 53269d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u8 embed_sig[2]; 53369d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 embed_startblock; 53469d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o __u16 embed_blockcount; 53569d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o} __attribute__((packed)); 53669d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o 5379c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5389c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o#define HFS_NODE_LEAF 0xff 5399c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o#define HFSPLUS_POR_CNID 1 5409c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5419c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'ostruct hfsplus_bnode_descriptor { 5429c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 next; 5439c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 prev; 5449c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u8 type; 5459c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u8 height; 5469c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 num_recs; 5479c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 reserved; 5489c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o} __attribute__((packed)); 5499c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5509c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'ostruct hfsplus_bheader_record { 5519c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 depth; 5529c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 root; 5539c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 leaf_count; 5549c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 leaf_head; 5559c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 leaf_tail; 5569c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 node_size; 5579c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o} __attribute__((packed)); 5589c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5599c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'ostruct hfsplus_catalog_key { 5609c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 key_len; 5619c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 parent_id; 5629c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 unicode_len; 5639c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u8 unicode[255 * 2]; 5649c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o} __attribute__((packed)); 5659c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5669c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'ostruct hfsplus_extent { 5679c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 start_block; 5689c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 block_count; 5699c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o} __attribute__((packed)); 5709c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5719c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o#define HFSPLUS_EXTENT_COUNT 8 5729c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'ostruct hfsplus_fork { 5739c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u64 total_size; 5749c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 clump_size; 5759c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 total_blocks; 5769c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfsplus_extent extents[HFSPLUS_EXTENT_COUNT]; 5779c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o} __attribute__((packed)); 5789c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 5799c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'ostruct hfsplus_vol_header { 5809c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u8 signature[2]; 5819c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u16 version; 5829c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 attributes; 5839c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 last_mount_vers; 5849c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 reserved; 5859c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 create_date; 5869c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 modify_date; 5879c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 backup_date; 5889c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 checked_date; 5899c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 file_count; 5909c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 folder_count; 5919c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 blocksize; 5929c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 total_blocks; 5939c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 free_blocks; 5949c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 next_alloc; 5959c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 rsrc_clump_sz; 5969c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 data_clump_sz; 5979c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 next_cnid; 5989c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u32 write_count; 5999c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o __u64 encodings_bmp; 6009c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfs_finder_info finder_info; 6019c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfsplus_fork alloc_file; 6029c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfsplus_fork ext_file; 6039c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfsplus_fork cat_file; 6049c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfsplus_fork attr_file; 6059c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o struct hfsplus_fork start_file; 6069c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o} __attribute__((packed)); 6079c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 6089c460caae3dab7803c0e7d9399b47e790cf90661Theodore Ts'o 609a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen/* this is lvm's label_header & pv_header combined. */ 610a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen 611a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen#define LVM2_ID_LEN 32 612a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen 613a451d92f38188f7218a837a395b310354864b5a4Eric Sandeenstruct lvm2_pv_label_header { 614a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen /* label_header */ 615a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen __u8 id[8]; /* LABELONE */ 616a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen __u64 sector_xl; /* Sector number of this label */ 617a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen __u32 crc_xl; /* From next field to end of sector */ 618a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen __u32 offset_xl; /* Offset from start of struct to contents */ 619a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen __u8 type[8]; /* LVM2 001 */ 620a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen /* pv_header */ 621a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen __u8 pv_uuid[LVM2_ID_LEN]; 622a451d92f38188f7218a837a395b310354864b5a4Eric Sandeen} __attribute__ ((packed)); 62369d742284d083c8f6ce7d9240019e21f2fbd9ed5Theodore Ts'o 624801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 625801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen/* 626801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen * this is a very generous portion of the super block, giving us 627801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen * room to translate 14 chunks with 3 stripes each. 628801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen */ 629801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen#define BTRFS_SYSTEM_CHUNK_ARRAY_SIZE 2048 630801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen#define BTRFS_LABEL_SIZE 256 631801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen#define BTRFS_UUID_SIZE 16 632801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen#define BTRFS_FSID_SIZE 16 633801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen#define BTRFS_CSUM_SIZE 32 634801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 635801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeenstruct btrfs_dev_item { 636801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* the internal btrfs device id */ 637801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 devid; 638801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 639801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* size of the device */ 640801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 total_bytes; 641801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 642801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* bytes used */ 643801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 bytes_used; 644801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 645801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* optimal io alignment for this device */ 646801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 io_align; 647801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 648801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* optimal io width for this device */ 649801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 io_width; 650801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 651801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* minimal io size for this device */ 652801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 sector_size; 653801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 654801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* type and info about this device */ 655801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 type; 656801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 657801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* expected generation for this device */ 658801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 generation; 659801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 660801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* 661801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen * starting byte of this partition on the device, 662801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen * to allowr for stripe alignment in the future 663801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen */ 664801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 start_offset; 665801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 666801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* grouping information for allocation decisions */ 667801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 dev_group; 668801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 669801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* seek speed 0-100 where 100 is fastest */ 670801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 seek_speed; 671801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 672801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* bandwidth 0-100 where 100 is fastest */ 673801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 bandwidth; 674801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 675801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* btrfs generated uuid for this device */ 676801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 uuid[BTRFS_UUID_SIZE]; 677801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 678801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* uuid of FS who owns this device */ 679801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 fsid[BTRFS_UUID_SIZE]; 680801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen} __attribute__ ((__packed__)); 681801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 682801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen/* 683801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen * the super block basically lists the main trees of the FS 684801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen * it currently lacks any block count etc etc 685801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen */ 686801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeenstruct btrfs_super_block { 687801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 csum[BTRFS_CSUM_SIZE]; 688801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* the first 3 fields must match struct btrfs_header */ 689801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 fsid[BTRFS_FSID_SIZE]; /* FS specific uuid */ 690801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 bytenr; /* this block number */ 691801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 flags; 692801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 693801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* allowed to be different from the btrfs_header from here own down */ 694801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 magic; 695801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 generation; 696801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 root; 697801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 chunk_root; 698801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 log_root; 699801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 700801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* this will help find the new super based on the log root */ 701801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 log_root_transid; 702801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 total_bytes; 703801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 bytes_used; 704801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 root_dir_objectid; 705801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 num_devices; 706801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 sectorsize; 707801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 nodesize; 708801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 leafsize; 709801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 stripesize; 710801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u32 sys_chunk_array_size; 711801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 chunk_root_generation; 712801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 compat_flags; 713801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 compat_ro_flags; 714801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 incompat_flags; 715801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u16 csum_type; 716801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 root_level; 717801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 chunk_root_level; 718801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 log_root_level; 719801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen struct btrfs_dev_item dev_item; 720801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 721801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen char label[BTRFS_LABEL_SIZE]; 722801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 723801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen /* future expansion */ 724801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u64 reserved[32]; 725801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen __u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE]; 726801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen} __attribute__ ((__packed__)); 727801b0053336cc5fe5b3447ddad58505352a6578eEric Sandeen 72876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o/* 72976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o * Byte swap functions 73076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o */ 73176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef __GNUC__ 732ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static __inline__ 73376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else /* For Watcom C */ 734ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static inline 73576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 73676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 737ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u16 blkid_swab16(__u16 val); 738ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u32 blkid_swab32(__u32 val); 739ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u64 blkid_swab64(__u64 val); 74050b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o 74176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if ((defined __GNUC__) && \ 74276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (defined(__i386__) || defined(__i486__) || defined(__i586__))) 74376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 74476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define _BLKID_HAVE_ASM_BITOPS_ 74576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 74676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 74776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 74876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef EXT2FS_REQUIRE_486 74976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("bswap %0" : "=r" (val) : "0" (val)); 750e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#else 75176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ 75276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "rorl $16,%0\n\t" /* swap words */ 75376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "xchgb %b0,%h0" /* swap higher bytes */ 75476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o :"=q" (val) 75576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); 75676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 75776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 75876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 75976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 76076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 76176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 76276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0" /* swap bytes */ \ 76376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "=q" (val) \ 76476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); \ 76576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 76676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 76776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 76876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 76976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 77076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 77176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 77276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 773e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 77476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 77576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if !defined(_BLKID_HAVE_ASM_BITOPS_) 77676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 77776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 77876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 77976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (val >> 8) | (val << 8); 78076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 78176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 78276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 78376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 78476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return ((val>>24) | ((val>>8)&0xFF00) | 78576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o ((val<<8)&0xFF0000) | (val<<24)); 78676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 78776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 788ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 78976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 79076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 79176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 79276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 793efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o#endif 79476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 79576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 79676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 797bdc3514af41b5fbfea16c5192d5aade1da641cf4Matthias Andree#ifdef WORDS_BIGENDIAN 79876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) blkid_swab16(x) 79976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) blkid_swab32(x) 80076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) blkid_swab64(x) 80176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) (x) 80276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) (x) 80376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) (x) 80476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else 80576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) (x) 80676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) (x) 80776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) (x) 80876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) blkid_swab16(x) 80976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) blkid_swab32(x) 81076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) blkid_swab64(x) 811e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 812e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 813ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#undef _INLINE_ 814ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o 815e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif /* _BLKID_PROBE_H */ 816