119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* 219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * jfs_dat.h --- stripped down header file which only contains the JFS 319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * on-disk data structures 419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_MAGIC_NUMBER 0xc03b3998U /* The first 4 bytes of /dev/random! */ 719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* 919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * On-disk structures 1019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 1119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 123984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt/* 1319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Descriptor block types: 1419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 1519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 1619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_DESCRIPTOR_BLOCK 1 1719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_COMMIT_BLOCK 2 1819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_SUPERBLOCK 3 1919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 2019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* 2119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * Standard header for all descriptor blocks: 2219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 2319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projecttypedef struct journal_header_s 2419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{ 2519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 h_magic; 2619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 h_blocktype; 2719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 h_sequence; 2819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} journal_header_t; 2919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 3019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 313984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt/* 323984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt * The block tag: used to describe a single buffer in the journal 3319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 3419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projecttypedef struct journal_block_tag_s 3519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{ 3619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 t_blocknr; /* The on-disk block number */ 3719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 t_flags; /* See below */ 3819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} journal_block_tag_t; 3919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 4019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* Definitions for the journal tag flags word: */ 4119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_FLAG_ESCAPE 1 /* on-disk block is escaped */ 4219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_FLAG_SAME_UUID 2 /* block has same uuid as previous */ 4319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_FLAG_DELETED 4 /* block deleted by this transaction */ 4419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project#define JFS_FLAG_LAST_TAG 8 /* last tag in this descriptor block */ 4519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 4619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 4719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project/* 4819dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project * The journal superblock 4919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project */ 5019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Projecttypedef struct journal_superblock_s 5119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project{ 5219dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project journal_header_t s_header; 5319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 5419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project /* Static information describing the journal */ 5519dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 s_blocksize; /* journal device blocksize */ 5619dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 s_maxlen; /* total blocks in journal file */ 5719dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 s_first; /* first block of log information */ 583984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt 5919dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project /* Dynamic information describing the current state of the log */ 6019dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 s_sequence; /* first commit ID expected in log */ 6119dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project __u32 s_start; /* blocknr of start of log */ 623984b61df41c68966bdfbb2a5e5a45ef4b9a536cDmitry Shmidt 6319dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project} journal_superblock_t; 6419dacda2b02bb08c0ffb649f84526b249c749279The Android Open Source Project 65