probe.h revision 3838f7df134035089e8e8df317112e4fd645602d
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 2150b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'otypedef int (*blkid_probe_t)(int fd, blkid_cache cache, blkid_dev dev, 2279dd234a799434b6dc8365c49e743f00eb09d2fdTheodore Ts'o struct blkid_magic *id, unsigned char *buf); 23e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 24e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct blkid_magic { 25e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o const char *bim_type; /* type name for this magic */ 26e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o long bim_kboff; /* kilobyte offset of superblock */ 27e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned bim_sboff; /* byte offset within superblock */ 28e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned bim_len; /* length of magic */ 29d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o const char *bim_magic; /* magic string */ 30e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o blkid_probe_t bim_probe; /* probe function */ 31e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 32e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 33e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 34e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * Structures for each of the content types we want to extract information 35e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * from. We do not necessarily need the magic field here, because we have 36e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * already identified the content type before we get this far. It may still 37e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o * be useful if there are probe functions which handle multiple content types. 38e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o */ 39e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct ext2_super_block { 40e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_inodes_count; 41e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_blocks_count; 42e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_r_blocks_count; 43e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_free_blocks_count; 44e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_free_inodes_count; 45e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_first_data_block; 46e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_log_block_size; 47e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_dummy3[7]; 48e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char s_magic[2]; 49e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 s_state; 50e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_dummy5[8]; 51e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_compat; 52e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_incompat; 53e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 s_feature_ro_compat; 54e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char s_uuid[16]; 55d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char s_volume_name[16]; 56e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 57e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x00000004 58e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define EXT3_FEATURE_INCOMPAT_RECOVER 0x00000004 59e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x00000008 60e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 61e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct xfs_super_block { 62e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char xs_magic[4]; 63e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_blocksize; 64e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_dblocks; 65e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_rblocks; 6609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 xs_dummy1[2]; 67e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char xs_uuid[16]; 68e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_dummy2[15]; 69d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char xs_fname[12]; 70e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 xs_dummy3[2]; 71e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_icount; 72e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_ifree; 73e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u64 xs_fdblocks; 74e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 75e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 76e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct reiserfs_super_block { 77e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_blocks_count; 78e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_free_blocks; 79e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_root_block; 80e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_journal_block; 81e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_journal_dev; 82e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_orig_journal_size; 83e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_dummy2[5]; 84e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 rs_blocksize; 85e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 rs_dummy3[3]; 86e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char rs_magic[12]; 87e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 rs_dummy4[5]; 88e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char rs_uuid[16]; 89d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o char rs_label[16]; 90e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 91e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 9209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct jfs_super_block { 9309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_magic[4]; 9409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_version; 9509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u64 js_size; 9609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_bsize; 9709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_dummy1; 9809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_pbsize; 9909a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_dummy2[27]; 10009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_uuid[16]; 10109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_label[16]; 10209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_loguuid[16]; 10309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 10409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 10509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct romfs_super_block { 10609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_magic[8]; 10709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 ros_dummy1[2]; 10809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_volume[16]; 10909a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 11009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 111e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 112e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct vfat_super_block { 113e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char vs_ignored[3]; 114e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char vs_sysid[8]; 115e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char vs_sector_size[2]; 116e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 vs_cluster_size; 117e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 vs_reserved; 118e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 vs_fats; 119e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char vs_dir_entries[2]; 120e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char vs_sectors[2]; 121e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char vs_media; 122e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 vs_fat_length; 123e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 vs_secs_track; 124e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 vs_heads; 125e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 vs_hidden; 126e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 vs_total_sect; 127e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ __u32 vs_fat32_length; 128e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 28*/ __u16 vs_flags; 129e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2a*/ __u8 vs_version[2]; 130e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2c*/ __u32 vs_root_cluster; 131e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 30*/ __u16 vs_insfo_sector; 132e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 32*/ __u16 vs_backup_boot; 133e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 34*/ __u16 vs_reserved2[6]; 134e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 40*/ unsigned char vs_unknown[3]; 135e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 43*/ unsigned char vs_serno[4]; 136d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o/* 47*/ char vs_label[11]; 137e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 52*/ unsigned char vs_magic[8]; 138e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 5a*/ unsigned char vs_dummy2[164]; 139e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char vs_pmagic[2]; 140e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 141e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 142e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 143e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct msdos_super_block { 144e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char ms_ignored[3]; 145e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char ms_sysid[8]; 146e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char ms_sector_size[2]; 147e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 ms_cluster_size; 148e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 ms_reserved; 149e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 ms_fats; 150e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char ms_dir_entries[2]; 151e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char ms_sectors[2]; 152e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char ms_media; 153e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 ms_fat_length; 154e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 ms_secs_track; 155e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 ms_heads; 156e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 ms_hidden; 157e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 ms_total_sect; 158e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ unsigned char ms_unknown[3]; 159e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 27*/ unsigned char ms_serno[4]; 160d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o/* 2b*/ char ms_label[11]; 161e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 36*/ unsigned char ms_magic[8]; 162e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 3d*/ unsigned char ms_dummy2[192]; 163e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char ms_pmagic[2]; 164e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 165e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 166e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct minix_super_block { 167e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_ninodes; 168e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_nzones; 169e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_imap_blocks; 170e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_zmap_blocks; 171e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_firstdatazone; 172e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_log_zone_size; 173e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_max_size; 174e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char ms_magic[2]; 175e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_state; 176e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_zones; 177e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 178e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 179e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct swap_header { 180e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char sh_bootbits[1024]; 181e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned int sh_version; 182e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned int sh_last_page; 183e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned int sh_nr_badpages; 184e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char sh_label[16]; 185e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 186e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 187e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct mdp_superblock_s { 188e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_magic; 189e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 major_version; 190e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 minor_version; 191e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 patch_version; 192e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 gvalid_words; 193e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid0; 194e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ctime; 195e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 level; 196e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 size; 197e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 nr_disks; 198e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 raid_disks; 199e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_minor; 200e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 not_persistent; 201e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid1; 202e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid2; 203e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid3; 204e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 205e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 206e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct hfs_super_block { 207e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_magic[2]; 208e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_dummy[18]; 209e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 h_blksize; 210e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 211e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 2129387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_header { 2133838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char minor_version[4]; 2143838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char major_version[4]; 2153838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[128]; 2163838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char mount[128]; 2173838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char mount_len[2]; 2189387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2199387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2209387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_label { 2213838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char disk_lock[48]; 2223838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char label[64]; 2233838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char label_len[2]; 2243838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id[16]; 2253838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id_len[2]; 2269387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2279387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2283838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmajor(o) ((__u32)o.major_version[0] \ 2293838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[1]) << 8) \ 2303838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[2]) << 16) \ 2313838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[3]) << 24)) 2323838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfslabellen(o) ((__u32)o.label_len[0] + (((__u32) o.label_len[1]) << 8)) 2333838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmountlen(o) ((__u32)o.mount_len[0] + (((__u32) o.mount_len[1])<<8)) 2349387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2359387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o#define OCFS_MAGIC "OracleCFS" 2369387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 237414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'ostruct ocfs2_super_block { 2383838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[8]; 2393838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy1[184]; 2403838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy2[80]; 2413838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_label[64]; 2423838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_uuid[16]; 243414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o}; 244414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 245414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MIN_BLOCKSIZE 512 246414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MAX_BLOCKSIZE 4096 247414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 248414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_BLKNO 2 249414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 250414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_SIGNATURE "OCFSV2" 251414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 2523de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o#define ISODCL(from, to) (to - from + 1) 2533de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'ostruct iso_volume_descriptor { 2543de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char type[ISODCL(1,1)]; /* 711 */ 2553de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char id[ISODCL(2,6)]; 2563de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char version[ISODCL(7,7)]; 2573de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char data[ISODCL(8,2048)]; 2583de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o}; 2593de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o 26076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o/* 26176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o * Byte swap functions 26276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o */ 26376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef __GNUC__ 264ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static __inline__ 26576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else /* For Watcom C */ 266ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static inline 26776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 26876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 269ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u16 blkid_swab16(__u16 val); 270ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u32 blkid_swab32(__u32 val); 271ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u64 blkid_swab64(__u64 val); 27250b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o 27376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if ((defined __GNUC__) && \ 27476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (defined(__i386__) || defined(__i486__) || defined(__i586__))) 27576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 27676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define _BLKID_HAVE_ASM_BITOPS_ 27776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 27876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 27976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 28076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef EXT2FS_REQUIRE_486 28176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("bswap %0" : "=r" (val) : "0" (val)); 282e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#else 28376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ 28476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "rorl $16,%0\n\t" /* swap words */ 28576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "xchgb %b0,%h0" /* swap higher bytes */ 28676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o :"=q" (val) 28776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); 28876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 28976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 29076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 29176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 29276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 29376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 29476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0" /* swap bytes */ \ 29576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "=q" (val) \ 29676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); \ 29776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 29876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 29976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 30076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 30176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 30276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 30376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 30476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 305e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 30676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 30776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if !defined(_BLKID_HAVE_ASM_BITOPS_) 30876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 30976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 31076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 31176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (val >> 8) | (val << 8); 31276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 31376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 31476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 31576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 31676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return ((val>>24) | ((val>>8)&0xFF00) | 31776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o ((val<<8)&0xFF0000) | (val<<24)); 31876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 31976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 320ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 32176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 32276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 32376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 32476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 32576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 32676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 32776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 32876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 32976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if __BYTE_ORDER == __BIG_ENDIAN 33076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) blkid_swab16(x) 33176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) blkid_swab32(x) 33276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) blkid_swab64(x) 33376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) (x) 33476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) (x) 33576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) (x) 33676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else 33776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) (x) 33876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) (x) 33976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) (x) 34076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) blkid_swab16(x) 34176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) blkid_swab32(x) 34276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) blkid_swab64(x) 343e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 344e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 345ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#undef _INLINE_ 346ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o 347e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif /* _BLKID_PROBE_H */ 348