Imported reiserfsprogs-3.6.20
This commit is contained in:
1 parent
0ed773997f
commit
dac518d099
189 files changed
+43353
-29787
No files matched your search
@@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright 2000-2004 by Hans Reiser, licensing governed by
|
||||
* reiserfsprogs/README
|
||||
*/
|
||||
|
||||
#ifndef REISERFS_INTERNAL_H
|
||||
#define REISERFS_INTERNAL_H
|
||||
|
||||
/*
|
||||
* Picture represents an internal node of the reiserfs tree
|
||||
* ______________________________________________________
|
||||
* | | Array of | Array of | Free |
|
||||
* |block | keys | pointers | space |
|
||||
* | head | N | N+1 | |
|
||||
* |______|_______________|___________________|___________|
|
||||
*/
|
||||
|
||||
|
||||
/* Disk child pointer: The pointer from an internal node of the tree
|
||||
to a node that is on disk. */
|
||||
struct reiserfs_dc {
|
||||
__u32 dc2_block_number; /* Disk child's block number. */
|
||||
__u16 dc2_size; /* Disk child's used space. */
|
||||
__u16 dc2_reserved;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
typedef struct reiserfs_dc reiserfs_dc_t;
|
||||
|
||||
#define REISERFS_DC_SIZE (sizeof(reiserfs_dc_t))
|
||||
|
||||
/* set/get fields of disk_child with these defines */
|
||||
#define reiserfs_dc_get_nr(dc) get_le32 (dc, dc2_block_number)
|
||||
#define reiserfs_dc_set_nr(dc,val) set_le32 (dc, dc2_block_number, val)
|
||||
|
||||
#define reiserfs_dc_get_size(dc) get_le16 (dc, dc2_size)
|
||||
#define reiserfs_dc_set_size(dc,val) set_le16 (dc, dc2_size, val)
|
||||
|
||||
#define reiserfs_dc_init(dc, size, blocknr) \
|
||||
({ \
|
||||
reiserfs_dc_set_nr(dc, blocknr); \
|
||||
reiserfs_dc_set_size(dc, size); \
|
||||
set_le16(dc, dc2_reserved, 0); \
|
||||
})
|
||||
|
||||
/* max and min number of keys in internal node */
|
||||
#define REISERFS_INT_MAX(bh) \
|
||||
((REISERFS_NODE_SPACE(bh->b_size) - REISERFS_DC_SIZE) / \
|
||||
(REISERFS_KEY_SIZE+REISERFS_DC_SIZE))
|
||||
|
||||
#define REISERFS_INT_MIN(bh) (REISERFS_INT_MAX(bh) / 2)
|
||||
|
||||
/* get key */
|
||||
#define reiserfs_int_key_at(bh,item_num) \
|
||||
((reiserfs_key_t * )((bh)->b_data + REISERFS_NODEH_SIZE) + \
|
||||
(item_num) )
|
||||
|
||||
/* Get disk child by buffer header and position in the tree node. */
|
||||
#define reiserfs_int_at(p_s_bh,n_pos) \
|
||||
((reiserfs_dc_t *) ((p_s_bh)->b_data + REISERFS_NODEH_SIZE + \
|
||||
reiserfs_node_items(p_s_bh) * REISERFS_KEY_SIZE +\
|
||||
REISERFS_DC_SIZE * (n_pos)))
|
||||
|
||||
#define reiserfs_int_head(bh) \
|
||||
((reiserfs_nh_get_level (((reiserfs_node_head_t *)((bh)->b_data))) > \
|
||||
LEAF_LEVEL) && \
|
||||
(reiserfs_nh_get_level (((reiserfs_node_head_t *)((bh)->b_data))) <= \
|
||||
REISERFS_TREE_HEIGHT_MAX))
|
||||
|
||||
extern int reiserfs_internal_correct (reiserfs_bh_t *bh);
|
||||
|
||||
extern int reiserfs_internal_print (FILE * fp,
|
||||
reiserfs_bh_t * bh,
|
||||
int first, int last);
|
||||
|
||||
extern int reiserfs_internal_get_pos (reiserfs_bh_t * bh,
|
||||
unsigned long block);
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user