probe.h revision 12b3c8ec1d314b8775fc7d9cefd6bfff551f1de0
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 1114c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'ostruct cramfs_super_block { 1124c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 magic[4]; 1134c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 size; 1144c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 flags; 1154c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 future; 1164c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 signature[16]; 1174c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o struct cramfs_info { 1184c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 crc; 1194c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 edition; 1204c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 blocks; 1214c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 files; 1224c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o } info; 1234c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 name[16]; 1244c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o}; 1254c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o 1267369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'ostruct swap_id_block { 1277369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o/* unsigned char sws_boot[1024]; */ 1287369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_version; 1297369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_lastpage; 1307369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_nrbad; 1317369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_uuid[16]; 13212b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char sws_volume[16]; 1337369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_pad[117]; 1347369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_badpg; 1357369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o}; 1367369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o 137e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 138e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct vfat_super_block { 139e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char vs_ignored[3]; 140e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char vs_sysid[8]; 141e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char vs_sector_size[2]; 142e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 vs_cluster_size; 143e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 vs_reserved; 144e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 vs_fats; 145e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char vs_dir_entries[2]; 146e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char vs_sectors[2]; 147e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char vs_media; 148e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 vs_fat_length; 149e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 vs_secs_track; 150e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 vs_heads; 151e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 vs_hidden; 152e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 vs_total_sect; 153e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ __u32 vs_fat32_length; 154e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 28*/ __u16 vs_flags; 155e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2a*/ __u8 vs_version[2]; 156e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2c*/ __u32 vs_root_cluster; 157e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 30*/ __u16 vs_insfo_sector; 158e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 32*/ __u16 vs_backup_boot; 159e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 34*/ __u16 vs_reserved2[6]; 160e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 40*/ unsigned char vs_unknown[3]; 161e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 43*/ unsigned char vs_serno[4]; 162d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o/* 47*/ char vs_label[11]; 163e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 52*/ unsigned char vs_magic[8]; 164e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 5a*/ unsigned char vs_dummy2[164]; 165e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char vs_pmagic[2]; 166e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 167e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 168e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 169e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct msdos_super_block { 170e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char ms_ignored[3]; 171e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char ms_sysid[8]; 172e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char ms_sector_size[2]; 173e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 ms_cluster_size; 174e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 ms_reserved; 175e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 ms_fats; 176e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char ms_dir_entries[2]; 177e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char ms_sectors[2]; 178e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char ms_media; 179e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 ms_fat_length; 180e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 ms_secs_track; 181e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 ms_heads; 182e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 ms_hidden; 183e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 ms_total_sect; 184e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ unsigned char ms_unknown[3]; 185e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 27*/ unsigned char ms_serno[4]; 186d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o/* 2b*/ char ms_label[11]; 187e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 36*/ unsigned char ms_magic[8]; 188e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 3d*/ unsigned char ms_dummy2[192]; 189e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char ms_pmagic[2]; 190e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 191e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 192e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct minix_super_block { 193e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_ninodes; 194e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_nzones; 195e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_imap_blocks; 196e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_zmap_blocks; 197e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_firstdatazone; 198e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_log_zone_size; 199e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_max_size; 200e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char ms_magic[2]; 201e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_state; 202e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_zones; 203e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 204e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 205e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct mdp_superblock_s { 206e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_magic; 207e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 major_version; 208e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 minor_version; 209e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 patch_version; 210e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 gvalid_words; 211e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid0; 212e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ctime; 213e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 level; 214e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 size; 215e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 nr_disks; 216e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 raid_disks; 217e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_minor; 218e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 not_persistent; 219e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid1; 220e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid2; 221e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid3; 222e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 223e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 224e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct hfs_super_block { 225e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_magic[2]; 226e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_dummy[18]; 227e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 h_blksize; 228e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 229e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 2309387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_header { 2313838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char minor_version[4]; 2323838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char major_version[4]; 2333838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[128]; 23412b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char mount[128]; 23512b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o unsigned char mount_len[2]; 2369387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2379387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2389387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_label { 2393838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char disk_lock[48]; 24012b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char label[64]; 2413838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char label_len[2]; 2423838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id[16]; 2433838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id_len[2]; 2449387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2459387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2463838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmajor(o) ((__u32)o.major_version[0] \ 2473838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[1]) << 8) \ 2483838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[2]) << 16) \ 2493838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[3]) << 24)) 2503838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfslabellen(o) ((__u32)o.label_len[0] + (((__u32) o.label_len[1]) << 8)) 2513838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmountlen(o) ((__u32)o.mount_len[0] + (((__u32) o.mount_len[1])<<8)) 2529387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2539387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o#define OCFS_MAGIC "OracleCFS" 2549387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 255414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'ostruct ocfs2_super_block { 2563838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[8]; 2573838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy1[184]; 2583838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy2[80]; 25912b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char s_label[64]; 2603838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_uuid[16]; 261414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o}; 262414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 263414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MIN_BLOCKSIZE 512 264414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MAX_BLOCKSIZE 4096 265414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 266414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_BLKNO 2 267414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 268414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_SIGNATURE "OCFSV2" 269414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 2702c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'ostruct oracle_asm_disk_label { 2712c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dummy[32]; 2722c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_tag[8]; 2732c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_id[24]; 2742c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o}; 2752c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 2762c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_MARKED "ORCLDISK" 2772c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_OFFSET 32 2782c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 2793de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o#define ISODCL(from, to) (to - from + 1) 2803de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'ostruct iso_volume_descriptor { 2813de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char type[ISODCL(1,1)]; /* 711 */ 2823de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char id[ISODCL(2,6)]; 2833de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char version[ISODCL(7,7)]; 2843de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char data[ISODCL(8,2048)]; 2853de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o}; 2863de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o 28776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o/* 28876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o * Byte swap functions 28976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o */ 29076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef __GNUC__ 291ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static __inline__ 29276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else /* For Watcom C */ 293ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static inline 29476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 29576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 296ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u16 blkid_swab16(__u16 val); 297ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u32 blkid_swab32(__u32 val); 298ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u64 blkid_swab64(__u64 val); 29950b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o 30076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if ((defined __GNUC__) && \ 30176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (defined(__i386__) || defined(__i486__) || defined(__i586__))) 30276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 30376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define _BLKID_HAVE_ASM_BITOPS_ 30476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 30576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 30676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 30776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef EXT2FS_REQUIRE_486 30876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("bswap %0" : "=r" (val) : "0" (val)); 309e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#else 31076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ 31176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "rorl $16,%0\n\t" /* swap words */ 31276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "xchgb %b0,%h0" /* swap higher bytes */ 31376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o :"=q" (val) 31476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); 31576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 31676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 31776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 31876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 31976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 32076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 32176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0" /* swap bytes */ \ 32276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "=q" (val) \ 32376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); \ 32476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 32576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 32676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 32776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 32876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 32976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 33076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 33176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 332e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 33376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 33476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if !defined(_BLKID_HAVE_ASM_BITOPS_) 33576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 33676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 33776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 33876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (val >> 8) | (val << 8); 33976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 34076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 34176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 34276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 34376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return ((val>>24) | ((val>>8)&0xFF00) | 34476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o ((val<<8)&0xFF0000) | (val<<24)); 34576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 34676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 347ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 34876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 34976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 35076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 35176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 35276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 35376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 35476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 35576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 35676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if __BYTE_ORDER == __BIG_ENDIAN 35776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) blkid_swab16(x) 35876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) blkid_swab32(x) 35976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) blkid_swab64(x) 36076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) (x) 36176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) (x) 36276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) (x) 36376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else 36476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) (x) 36576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) (x) 36676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) (x) 36776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) blkid_swab16(x) 36876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) blkid_swab32(x) 36976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) blkid_swab64(x) 370e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 371e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 372ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#undef _INLINE_ 373ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o 374e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif /* _BLKID_PROBE_H */ 375