File onode_index.h

onode_index.h ------------- A casually demented B+Tree designed to stay balanced and be optimized for access from disk (and in-core cache) and not to have to write lots of times.
Some of the ideas for this came from Reiser4 stuff, except I'm allowing unbalanced stuff to make it to disk if needed. I'm thinking that if things get really bad, we can run a tree repacker :)
$Id: onode_index.h,v 1.9 2003/10/20 07:18:11 stewart Exp $
(C)2003 Stewart Smith Distributed under the GNU Public License

Included in: fcfs_newobj.c
  fcfs_readobj.c
  fcfs_updateobj.c
  mkfs.c
  mount_testkit.c
  onode.c
  onode_index.c
  volinfo.c


Included Files


Preprocessor definitions

#define __GXX_ABI_VERSION 102

#define __SIZE_TYPE__

#define __PTRDIFF_TYPE__ int

#define __WCHAR_TYPE__

#define __WINT_TYPE__

#define __SCHAR_MAX__ 127

#define __SHRT_MAX__ 32767

#define __INT_MAX__ 2147483647

#define __LONG_MAX__ 2147483647L

#define __LONG_LONG_MAX__ 9223372036854775807LL

#define __WCHAR_MAX__ 2147483647

#define __CHAR_BIT__ 8

#define __FLT_EVAL_METHOD__ 0

#define __FLT_RADIX__ 2

#define __FLT_MANT_DIG__ 24

#define __FLT_DIG__ 6

#define __FLT_MIN_EXP__ -125

#define __FLT_MIN_10_EXP__ -37

#define __FLT_MAX_EXP__ 128

#define __FLT_MAX_10_EXP__ 38

#define __FLT_MAX__ 3.40282347e+38F

#define __FLT_MIN__ 1.17549435e-38F

#define __FLT_EPSILON__ 1.19209290e-7F

#define __FLT_DENORM_MIN__ 1.40129846e-45F

#define __DBL_MANT_DIG__ 53

#define __DBL_DIG__ 15

#define __DBL_MIN_EXP__ -1021

#define __DBL_MIN_10_EXP__ -307

#define __DBL_MAX_EXP__ 1024

#define __DBL_MAX_10_EXP__ 308

#define __DBL_MAX__ 1.7976931348623157e+308

#define __DBL_MIN__ 2.2250738585072014e-308

#define __DBL_EPSILON__ 2.2204460492503131e-16

#define __DBL_DENORM_MIN__ 4.9406564584124654e-324

#define __LDBL_MANT_DIG__ 53

#define __LDBL_DIG__ 15

#define __LDBL_MIN_EXP__ -1021

#define __LDBL_MIN_10_EXP__ -307

#define __LDBL_MAX_EXP__ 1024

#define __LDBL_MAX_10_EXP__ 308

#define __DECIMAL_DIG__ 17

#define __LDBL_MAX__ 1.7976931348623157e+308L

#define __LDBL_MIN__ 2.2250738585072014e-308L

#define __LDBL_EPSILON__ 2.2204460492503131e-16L

#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L

#define __REGISTER_PREFIX__

#define __USER_LABEL_PREFIX__

#define __VERSION__ "3.3.2 (Debian)"

#define __STDC_HOSTED__ 1

#define __NO_INLINE__ 1

#define __FINITE_MATH_ONLY__ 0

#define __CHAR_UNSIGNED__ 1

#define _ARCH_PPC 1

#define __BIG_ENDIAN__ 1

#define _BIG_ENDIAN 1

#define _CALL_SYSV 1

#define __PPC 1

#define __PPC__ 1

#define PPC 1

#define __ELF__ 1

#define __powerpc 1

#define __powerpc__ 1

#define powerpc 1

#define __GNUC__ 3

#define __GNUC_MINOR__ 3

#define __GNUC_PATCHLEVEL__ 2

#define __unix__ 1

#define __gnu_linux__ 1

#define __linux__ 1

#define unix 1

#define __unix 1

#define linux 1

#define __linux 1

#define __ONODE_INDEX_H__

#define FCFS_ONODE_INDEX_NODE_MAGIC1 0x4f6e4944784e4445ULL

#define FCFS_ONODE_INDEX_LEAF_MAGIC1 0x4f6e4944784c6665ULL


Type struct fcfs_onode_index

In memory representation of onode_index

struct fcfs_onode_index
struct fcfs_onode_index 
   { 
     struct fcfs_onode_index_node* root;the node
     struct fcfs_disk_block* root_block;disk block for node
     struct fcfs_disk* disk;disk the index is on
   } 


Type struct fcfs_onode_index_node_item

struct fcfs_onode_index_node_item
struct fcfs_onode_index_node_item 
   { 
     u64 key; 
     u64 node_blocknr; 
   } 

Type struct fcfs_onode_index_node

struct fcfs_onode_index_node
struct fcfs_onode_index_node 
   { 
     u64 magic1;FCFS_ONODE_INDEX_NODE_MAGIC1
     u64 id;Not necessarily unique, used for locking
     u64 block; 
     u64 used; 
     struct fcfs_onode_index_node_item items[1]; 
   } 

Type struct fcfs_onode_index_leaf_item

struct fcfs_onode_index_leaf_item
struct fcfs_onode_index_leaf_item 
   { 
     u64 key; 
     u64 onode_blocknr; 
   } 

Type struct fcfs_onode_index_leaf

struct fcfs_onode_index_leaf
struct fcfs_onode_index_leaf 
   { 
     u64 magic1;FCFS_ONODE_INDEX_LEAF_MAGIC1
     u64 id;Not necessarily unique, used for locking
     u64 block; 
     u64 used; 
     struct fcfs_onode_index_leaf_item items[1]; 
   }