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