2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS File System Recognizer
4 * FILE: drivers/filesystems/fs_rec/btrfs.h
5 * PURPOSE: BTRFS Header File
6 * PROGRAMMER: Peter Hater
7 * Pierre Schweitzer (pierre@reactos.org)
11 struct journal_params
{
12 // Block number of the block containing the first journal node.
13 UINT32 jp_journal_1st_block
; /* where does journal start from on its device */
15 // Journal device number (?? for if the journal is on a separate drive ??)
16 UINT32 jp_journal_dev
; /* journal device st_rdev */
18 // Original journal size. (Needed when using partition on systems w/ different default journal sizes).
19 UINT32 jp_journal_size
; /* size of the journal */
21 UINT32 jp_journal_trans_max
; /* max number of blocks in a transaction. */
22 UINT32 jp_journal_magic
; /* random value made on fs creation (this was sb_journal_block_count) */
23 UINT32 jp_journal_max_batch
; /* max number of blocks to batch into a trans */
24 UINT32 jp_journal_max_commit_age
; /* in seconds, how old can an async commit be */
25 UINT32 jp_journal_max_trans_age
; /* in seconds, how old can a transaction be */
28 typedef struct _RFSD_SUPER_BLOCK
30 // The number of blocks in the partition
31 UINT32 s_blocks_count
; /* blocks count */ //[mark] was _s_blocks_count
33 // The number of free blocks in the partition
34 UINT32 s_free_blocks_count
; /* free blocks count */ //[mark] was _s_free_blocks
36 // Block number of the block containing the root node
37 UINT32 s_root_block
; /* root block number */
39 struct journal_params s_journal
;
41 // The size (in bytes) of a block
42 UINT16 s_blocksize
; /* block size */
44 UINT16 s_oid_maxsize
; /* max size of object id array, see get_objectid() commentary */
45 UINT16 s_oid_cursize
; /* current size of object id array */
46 UINT16 s_umount_state
; /* this is set to 1 when filesystem was umounted, to 2 - when not */
47 char s_magic
[10]; /* reiserfs magic string indicates that
48 * file system is reiserfs:
49 * "ReIsErFs" or "ReIsEr2Fs" or "ReIsEr3Fs" */
51 // State of the partition: valid(1), error (2)
52 UINT16 s_fs_state
; /* it is set to used by fsck to mark which phase of rebuilding is done */
54 UINT32 s_hash_function_code
; /* indicate, what hash function is being use
55 * to sort names in a directory*/
56 UINT16 s_tree_height
; /* height of disk tree */
57 UINT16 s_bmap_nr
; /* amount of bitmap blocks needed to address
58 * each block of file system */
60 // The reiserfs version number
61 UINT16 s_version
; /* this field is only reliable on filesystem
62 * with non-standard journal */
63 UINT16 s_reserved_for_journal
; /* size in blocks of journal area on main
64 * device, we need to keep after
65 * making fs with non-standard journal */
66 } RFSD_SUPER_BLOCK
, *PRFSD_SUPER_BLOCK
;
69 C_ASSERT(FIELD_OFFSET(RFSD_SUPER_BLOCK
, s_blocksize
) == 44);
70 C_ASSERT(FIELD_OFFSET(RFSD_SUPER_BLOCK
, s_magic
) == 52);
72 #define REISERFS_DISK_OFFSET_IN_BYTES (64 * 1024)
73 #define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
74 #define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
75 #define REISER2FS_JR_SUPER_MAGIC_STRING "ReIsEr3Fs"
76 #define MAGIC_KEY_LENGTH 9