1d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o/* 2d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o * jfs_dat.h --- stripped down header file which only contains the JFS 3d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o * on-disk data structures 4d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o */ 5d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 6d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_MAGIC_NUMBER 0xc03b3998U /* The first 4 bytes of /dev/random! */ 7d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 8d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o/* 9d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o * On-disk structures 10d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o */ 11d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 12efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o/* 13d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o * Descriptor block types: 14d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o */ 15d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 16d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_DESCRIPTOR_BLOCK 1 17d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_COMMIT_BLOCK 2 18d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_SUPERBLOCK 3 19d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 20d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o/* 21d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o * Standard header for all descriptor blocks: 22d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o */ 23d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'otypedef struct journal_header_s 24d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o{ 25d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 h_magic; 26d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 h_blocktype; 27d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 h_sequence; 28d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o} journal_header_t; 29d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 30d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 31efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o/* 32efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o * The block tag: used to describe a single buffer in the journal 33d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o */ 34d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'otypedef struct journal_block_tag_s 35d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o{ 36d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 t_blocknr; /* The on-disk block number */ 37d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 t_flags; /* See below */ 38d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o} journal_block_tag_t; 39d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 40d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o/* Definitions for the journal tag flags word: */ 41d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_FLAG_ESCAPE 1 /* on-disk block is escaped */ 42d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_FLAG_SAME_UUID 2 /* block has same uuid as previous */ 43d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_FLAG_DELETED 4 /* block deleted by this transaction */ 44d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o#define JFS_FLAG_LAST_TAG 8 /* last tag in this descriptor block */ 45d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 46d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 47d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o/* 48d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o * The journal superblock 49d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o */ 50d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'otypedef struct journal_superblock_s 51d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o{ 52d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o journal_header_t s_header; 53d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 54d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o /* Static information describing the journal */ 55d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 s_blocksize; /* journal device blocksize */ 56d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 s_maxlen; /* total blocks in journal file */ 57d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 s_first; /* first block of log information */ 58efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 59d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o /* Dynamic information describing the current state of the log */ 60d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 s_sequence; /* first commit ID expected in log */ 61d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o __u32 s_start; /* blocknr of start of log */ 62efc6f628e15de95bcd13e4f0ee223cb42115d520Theodore Ts'o 63d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o} journal_superblock_t; 64d3cd93cabeac8c153c8ae7b1b7358d6ced86b15eTheodore Ts'o 65