1ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross/**************************************************************************** 2ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross **************************************************************************** 3ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** 4ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** This header was automatically generated from a Linux kernel header 5ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** of the same name, to make information necessary for userspace to 6ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** call into the kernel available to libc. It contains only constants, 7ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** structures, and macros generated from the original header, and thus, 8ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** contains no copyrightable information. 9ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross *** 10ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross **************************************************************************** 11ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross ****************************************************************************/ 12ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#ifndef _LINUX_JBD2_H 13ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define _LINUX_JBD2_H 14ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 15ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_DEBUG 16ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define jfs_debug jbd_debug 17ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 18ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define journal_oom_retry 1 19ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 20ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#undef JBD2_PARANOID_IOFAIL 21ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 22ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_DEFAULT_MAX_COMMIT_AGE 5 23ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 24ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define jbd_debug(f, a...) 25ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 26ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_MIN_JOURNAL_BLOCKS 1024 27ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 28ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_MAGIC_NUMBER 0xc03b3998U 29ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 30ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_DESCRIPTOR_BLOCK 1 31ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_COMMIT_BLOCK 2 32ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_SUPERBLOCK_V1 3 33ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_SUPERBLOCK_V2 4 34ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_REVOKE_BLOCK 5 35ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 36ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct journal_header_s 37ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{ 38ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_magic; 39ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_blocktype; 40ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_sequence; 41ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} journal_header_t; 42ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 43ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_CRC32_CHKSUM 1 44ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_MD5_CHKSUM 2 45ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_SHA1_CHKSUM 3 46ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 47ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_CRC32_CHKSUM_SIZE 4 48ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 49ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_CHECKSUM_BYTES (32 / sizeof(u32)) 50ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 51ec0a2e83dc66d67addeb90e83144187691852a3eColin Crossstruct commit_header { 52ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_magic; 53ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_blocktype; 54ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_sequence; 55ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross unsigned char h_chksum_type; 56ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross unsigned char h_chksum_size; 57ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross unsigned char h_padding[2]; 58ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_chksum[JBD2_CHECKSUM_BYTES]; 59ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be64 h_commit_sec; 60ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 h_commit_nsec; 61ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross}; 62ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 63ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct journal_block_tag_s 64ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{ 65ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 t_blocknr; 66ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 t_flags; 67ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 t_blocknr_high; 68ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} journal_block_tag_t; 69ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 70ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_TAG_SIZE32 (offsetof(journal_block_tag_t, t_blocknr_high)) 71ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_TAG_SIZE64 (sizeof(journal_block_tag_t)) 72ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 73ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct jbd2_journal_revoke_header_s 74ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{ 75ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross journal_header_t r_header; 76ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 r_count; 77ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} jbd2_journal_revoke_header_t; 78ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 79ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_ESCAPE 1 80ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_SAME_UUID 2 81ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_DELETED 4 82ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FLAG_LAST_TAG 8 83ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 84ec0a2e83dc66d67addeb90e83144187691852a3eColin Crosstypedef struct journal_superblock_s 85ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross{ 86ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 87ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross journal_header_t s_header; 88ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 89ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_blocksize; 90ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_maxlen; 91ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_first; 92ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 93ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_sequence; 94ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_start; 95ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 96ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_errno; 97ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 98ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_feature_compat; 99ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_feature_incompat; 100ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_feature_ro_compat; 101ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 102ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __u8 s_uuid[16]; 103ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 104ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_nr_users; 105ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 106ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_dynsuper; 107ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 108ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_max_transaction; 109ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __be32 s_max_trans_data; 110ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 111ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __u32 s_padding[44]; 112ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 113ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross __u8 s_users[16*48]; 114ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 115ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross} journal_superblock_t; 116ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 117ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_HAS_COMPAT_FEATURE(j,mask) ((j)->j_format_version >= 2 && ((j)->j_superblock->s_feature_compat & cpu_to_be32((mask)))) 118ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_HAS_RO_COMPAT_FEATURE(j,mask) ((j)->j_format_version >= 2 && ((j)->j_superblock->s_feature_ro_compat & cpu_to_be32((mask)))) 119ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_HAS_INCOMPAT_FEATURE(j,mask) ((j)->j_format_version >= 2 && ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask)))) 120ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 121ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_COMPAT_CHECKSUM 0x00000001 122ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 123ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_INCOMPAT_REVOKE 0x00000001 124ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_INCOMPAT_64BIT 0x00000002 125ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT 0x00000004 126ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 127ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_KNOWN_COMPAT_FEATURES JBD2_FEATURE_COMPAT_CHECKSUM 128ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_KNOWN_ROCOMPAT_FEATURES 0 129ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define JBD2_KNOWN_INCOMPAT_FEATURES (JBD2_FEATURE_INCOMPAT_REVOKE | JBD2_FEATURE_INCOMPAT_64BIT | JBD2_FEATURE_INCOMPAT_ASYNC_COMMIT) 130ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 131ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_None 0 132ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Metadata 1 133ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Forget 2 134ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_IO 3 135ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Shadow 4 136ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_LogCtl 5 137ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Reserved 6 138ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#define BJ_Types 7 139ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 140ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross#endif 141ec0a2e83dc66d67addeb90e83144187691852a3eColin Cross 142