probe.h revision bb626bcd546a039b39b9f25e65881b36b2abe24f
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 92bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'ostruct reiser4_super_block { 93bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_magic[16]; 94bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o __u16 rs4_dummy[2]; 95bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_uuid[16]; 96bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o unsigned char rs4_label[16]; 97bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o __u64 rs4_dummy2; 98bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o}; 99bb626bcd546a039b39b9f25e65881b36b2abe24fTheodore Ts'o 10009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct jfs_super_block { 10109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_magic[4]; 10209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_version; 10309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u64 js_size; 10409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_bsize; 10509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_dummy1; 10609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_pbsize; 10709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 js_dummy2[27]; 10809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_uuid[16]; 10909a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_label[16]; 11009a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char js_loguuid[16]; 11109a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 11209a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 11309a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'ostruct romfs_super_block { 11409a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_magic[8]; 11509a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o __u32 ros_dummy1[2]; 11609a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o unsigned char ros_volume[16]; 11709a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o}; 11809a2ef8ddab7fed91b9ec8314e0a10e11d3c0323Theodore Ts'o 1194c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'ostruct cramfs_super_block { 1204c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 magic[4]; 1214c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 size; 1224c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 flags; 1234c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 future; 1244c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 signature[16]; 1254c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o struct cramfs_info { 1264c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 crc; 1274c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 edition; 1284c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 blocks; 1294c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u32 files; 1304c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o } info; 1314c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o __u8 name[16]; 1324c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o}; 1334c4e3f784330978fa127edaa3936957d38c7e93aTheodore Ts'o 1347369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'ostruct swap_id_block { 1357369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o/* unsigned char sws_boot[1024]; */ 1367369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_version; 1377369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_lastpage; 1387369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_nrbad; 1397369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_uuid[16]; 14012b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char sws_volume[16]; 1417369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o unsigned char sws_pad[117]; 1427369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o __u32 sws_badpg; 1437369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o}; 1447369f0ce5fdde7f8a1cc6e49211469b905c2c58fTheodore Ts'o 145e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 146e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct vfat_super_block { 147e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char vs_ignored[3]; 148e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char vs_sysid[8]; 149e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char vs_sector_size[2]; 150e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 vs_cluster_size; 151e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 vs_reserved; 152e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 vs_fats; 153e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char vs_dir_entries[2]; 154e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char vs_sectors[2]; 155e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char vs_media; 156e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 vs_fat_length; 157e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 vs_secs_track; 158e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 vs_heads; 159e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 vs_hidden; 160e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 vs_total_sect; 161e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ __u32 vs_fat32_length; 162e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 28*/ __u16 vs_flags; 163e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2a*/ __u8 vs_version[2]; 164e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 2c*/ __u32 vs_root_cluster; 165e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 30*/ __u16 vs_insfo_sector; 166e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 32*/ __u16 vs_backup_boot; 167e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 34*/ __u16 vs_reserved2[6]; 168e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 40*/ unsigned char vs_unknown[3]; 169e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 43*/ unsigned char vs_serno[4]; 170d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o/* 47*/ char vs_label[11]; 171e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 52*/ unsigned char vs_magic[8]; 172e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 5a*/ unsigned char vs_dummy2[164]; 173e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char vs_pmagic[2]; 174e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 175e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 176e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* Yucky misaligned values */ 177e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct msdos_super_block { 178e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 00*/ unsigned char ms_ignored[3]; 179e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 03*/ unsigned char ms_sysid[8]; 180e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0b*/ unsigned char ms_sector_size[2]; 181e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0d*/ __u8 ms_cluster_size; 182e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 0e*/ __u16 ms_reserved; 183e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 10*/ __u8 ms_fats; 184e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 11*/ unsigned char ms_dir_entries[2]; 185e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 13*/ unsigned char ms_sectors[2]; 186e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 15*/ unsigned char ms_media; 187e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 16*/ __u16 ms_fat_length; 188e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 18*/ __u16 ms_secs_track; 189e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1a*/ __u16 ms_heads; 190e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 1c*/ __u32 ms_hidden; 191e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 20*/ __u32 ms_total_sect; 192e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 24*/ unsigned char ms_unknown[3]; 193e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 27*/ unsigned char ms_serno[4]; 194d3f917989badf78d1f97654e46d60d1f3d25cd17Theodore Ts'o/* 2b*/ char ms_label[11]; 195e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 36*/ unsigned char ms_magic[8]; 196e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/* 3d*/ unsigned char ms_dummy2[192]; 197e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o/*1fe*/ unsigned char ms_pmagic[2]; 198e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 199e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 200c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zakstruct vfat_dir_entry { 201c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u8 name[11]; 202c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u8 attr; 203c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_creat; 204c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_creat; 205c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_acc; 206c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_acc; 207c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 cluster_high; 208c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 time_write; 209c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 date_write; 210c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u16 cluster_low; 211c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak __u32 size; 212c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak}; 213c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak 214c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak/* maximum number of clusters */ 215c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT12_MAX 0xFF4 216c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT16_MAX 0xFFF4 217c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak#define FAT32_MAX 0x0FFFFFF6 218c4c740ff488dae232dd3a64fccd26ec7265165a4Karel Zak 219e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct minix_super_block { 220e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_ninodes; 221e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_nzones; 222e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_imap_blocks; 223e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_zmap_blocks; 224e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_firstdatazone; 225e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_log_zone_size; 226e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_max_size; 227e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o unsigned char ms_magic[2]; 228e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u16 ms_state; 229e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ms_zones; 230e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 231e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 232e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct mdp_superblock_s { 233e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_magic; 234e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 major_version; 235e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 minor_version; 236e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 patch_version; 237e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 gvalid_words; 238e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid0; 239e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 ctime; 240e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 level; 241e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 size; 242e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 nr_disks; 243e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 raid_disks; 244e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 md_minor; 245e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 not_persistent; 246e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid1; 247e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid2; 248e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 set_uuid3; 249e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 250e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 251e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'ostruct hfs_super_block { 252e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_magic[2]; 253e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o char h_dummy[18]; 254e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o __u32 h_blksize; 255e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o}; 256e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 2579387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_header { 2583838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char minor_version[4]; 2593838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char major_version[4]; 2603838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[128]; 26112b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char mount[128]; 26212b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o unsigned char mount_len[2]; 2639387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2649387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2659387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'ostruct ocfs_volume_label { 2663838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char disk_lock[48]; 26712b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char label[64]; 2683838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char label_len[2]; 2693838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id[16]; 2703838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char vol_id_len[2]; 2719387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o}; 2729387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2733838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmajor(o) ((__u32)o.major_version[0] \ 2743838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[1]) << 8) \ 2753838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[2]) << 16) \ 2763838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o + (((__u32) o.major_version[3]) << 24)) 2773838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfslabellen(o) ((__u32)o.label_len[0] + (((__u32) o.label_len[1]) << 8)) 2783838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o#define ocfsmountlen(o) ((__u32)o.mount_len[0] + (((__u32) o.mount_len[1])<<8)) 2799387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 2809387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o#define OCFS_MAGIC "OracleCFS" 2819387c281ef88cd1fba7cb1c9336b5ab00a2d82b4Theodore Ts'o 282414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'ostruct ocfs2_super_block { 2833838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char signature[8]; 2843838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy1[184]; 2853838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_dummy2[80]; 28612b3c8ec1d314b8775fc7d9cefd6bfff551f1de0Theodore Ts'o char s_label[64]; 2873838f7df134035089e8e8df317112e4fd645602dTheodore Ts'o unsigned char s_uuid[16]; 288414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o}; 289414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 290414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MIN_BLOCKSIZE 512 291414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_MAX_BLOCKSIZE 4096 292414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 293414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_BLKNO 2 294414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 295414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o#define OCFS2_SUPER_BLOCK_SIGNATURE "OCFSV2" 296414846b126d4d751bd6b36df0a39dcb030e0feb3Theodore Ts'o 2972c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'ostruct oracle_asm_disk_label { 2982c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dummy[32]; 2992c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_tag[8]; 3002c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o char dl_id[24]; 3012c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o}; 3022c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 3032c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_MARKED "ORCLDISK" 3042c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o#define ORACLE_ASM_DISK_LABEL_OFFSET 32 3052c92375ea426768a6e37faf876b2b06f0bf781a6Theodore Ts'o 3063de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o#define ISODCL(from, to) (to - from + 1) 3073de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'ostruct iso_volume_descriptor { 3083de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char type[ISODCL(1,1)]; /* 711 */ 3093de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char id[ISODCL(2,6)]; 3103de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char version[ISODCL(7,7)]; 3113de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o char data[ISODCL(8,2048)]; 3123de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o}; 3133de5bf61060634c5c8c3a0d231e8a7246094a2c2Theodore Ts'o 31476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o/* 31576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o * Byte swap functions 31676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o */ 31776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef __GNUC__ 318ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static __inline__ 31976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else /* For Watcom C */ 320ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#define _INLINE_ static inline 32176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 32276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 323ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u16 blkid_swab16(__u16 val); 324ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u32 blkid_swab32(__u32 val); 325ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'ostatic __u64 blkid_swab64(__u64 val); 32650b380b4d4ab668bad45033e3a8aaf93c7f42844Theodore Ts'o 32776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if ((defined __GNUC__) && \ 32876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (defined(__i386__) || defined(__i486__) || defined(__i586__))) 32976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 33076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define _BLKID_HAVE_ASM_BITOPS_ 33176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 33276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 33376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 33476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#ifdef EXT2FS_REQUIRE_486 33576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("bswap %0" : "=r" (val) : "0" (val)); 336e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#else 33776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0\n\t" /* swap lower bytes */ 33876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "rorl $16,%0\n\t" /* swap words */ 33976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o "xchgb %b0,%h0" /* swap higher bytes */ 34076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o :"=q" (val) 34176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); 34276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 34376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 34476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 34576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 34676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 34776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 34876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o __asm__("xchgb %b0,%h0" /* swap bytes */ \ 34976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "=q" (val) \ 35076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o : "0" (val)); \ 35176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return val; 35276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 35376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 35476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 35576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 35676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 35776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 35876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 359e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 36076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 36176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if !defined(_BLKID_HAVE_ASM_BITOPS_) 36276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 36376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u16 blkid_swab16(__u16 val) 36476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 36576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (val >> 8) | (val << 8); 36676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 36776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 36876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o_INLINE_ __u32 blkid_swab32(__u32 val) 36976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 37076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return ((val>>24) | ((val>>8)&0xFF00) | 37176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o ((val<<8)&0xFF0000) | (val<<24)); 37276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 37376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 374ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o_INLINE_ __u64 blkid_swab64(__u64 val) 37576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o{ 37676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o return (blkid_swab32(val >> 32) | 37776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o (((__u64) blkid_swab32(val & 0xFFFFFFFFUL)) << 32)); 37876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o} 37976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#endif 38076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 38176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 38276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o 38376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#if __BYTE_ORDER == __BIG_ENDIAN 38476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) blkid_swab16(x) 38576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) blkid_swab32(x) 38676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) blkid_swab64(x) 38776b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) (x) 38876b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) (x) 38976b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) (x) 39076b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#else 39176b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le16(x) (x) 39276b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le32(x) (x) 39376b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_le64(x) (x) 39476b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be16(x) blkid_swab16(x) 39576b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be32(x) blkid_swab32(x) 39676b07bb1bc9cbcb70a94cb235954eaac993920adTheodore Ts'o#define blkid_be64(x) blkid_swab64(x) 397e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif 398e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o 399ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o#undef _INLINE_ 400ed78c021c3b111d8ab9a51aef5d5156e3004083fTheodore Ts'o 401e12f2ae74c2eb8997bf13adf8fdd7e7313971eaeTheodore Ts'o#endif /* _BLKID_PROBE_H */ 402