~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/nilfs2/btree.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0+ */
  2 /*
  3  * NILFS B-tree.
  4  *
  5  * Copyright (C) 2005-2008 Nippon Telegraph and Telephone Corporation.
  6  *
  7  * Written by Koji Sato.
  8  */
  9 
 10 #ifndef _NILFS_BTREE_H
 11 #define _NILFS_BTREE_H
 12 
 13 #include <linux/types.h>
 14 #include <linux/buffer_head.h>
 15 #include <linux/list.h>
 16 #include <linux/nilfs2_ondisk.h>        /* nilfs_btree_node */
 17 #include "btnode.h"
 18 #include "bmap.h"
 19 
 20 /**
 21  * struct nilfs_btree_path - A path on which B-tree operations are executed
 22  * @bp_bh: buffer head of node block
 23  * @bp_sib_bh: buffer head of sibling node block
 24  * @bp_index: index of child node
 25  * @bp_oldreq: ptr end request for old ptr
 26  * @bp_newreq: ptr alloc request for new ptr
 27  * @bp_op: rebalance operation
 28  */
 29 struct nilfs_btree_path {
 30         struct buffer_head *bp_bh;
 31         struct buffer_head *bp_sib_bh;
 32         int bp_index;
 33         union nilfs_bmap_ptr_req bp_oldreq;
 34         union nilfs_bmap_ptr_req bp_newreq;
 35         struct nilfs_btnode_chkey_ctxt bp_ctxt;
 36         void (*bp_op)(struct nilfs_bmap *, struct nilfs_btree_path *,
 37                       int, __u64 *, __u64 *);
 38 };
 39 
 40 #define NILFS_BTREE_ROOT_SIZE           NILFS_BMAP_SIZE
 41 #define NILFS_BTREE_ROOT_NCHILDREN_MAX                                  \
 42         ((NILFS_BTREE_ROOT_SIZE - sizeof(struct nilfs_btree_node)) /    \
 43          (sizeof(__le64 /* dkey */) + sizeof(__le64 /* dptr */)))
 44 #define NILFS_BTREE_ROOT_NCHILDREN_MIN  0
 45 #define NILFS_BTREE_NODE_EXTRA_PAD_SIZE (sizeof(__le64))
 46 #define NILFS_BTREE_NODE_NCHILDREN_MAX(nodesize)                        \
 47         (((nodesize) - sizeof(struct nilfs_btree_node) -                \
 48                 NILFS_BTREE_NODE_EXTRA_PAD_SIZE) /                      \
 49          (sizeof(__le64 /* dkey */) + sizeof(__le64 /* dptr */)))
 50 #define NILFS_BTREE_NODE_NCHILDREN_MIN(nodesize)                        \
 51         ((NILFS_BTREE_NODE_NCHILDREN_MAX(nodesize) - 1) / 2 + 1)
 52 #define NILFS_BTREE_KEY_MIN     ((__u64)0)
 53 #define NILFS_BTREE_KEY_MAX     (~(__u64)0)
 54 
 55 extern struct kmem_cache *nilfs_btree_path_cache;
 56 
 57 int nilfs_btree_init(struct nilfs_bmap *);
 58 int nilfs_btree_convert_and_insert(struct nilfs_bmap *, __u64, __u64,
 59                                    const __u64 *, const __u64 *, int);
 60 void nilfs_btree_init_gc(struct nilfs_bmap *);
 61 
 62 int nilfs_btree_broken_node_block(struct buffer_head *bh);
 63 
 64 #endif  /* _NILFS_BTREE_H */
 65 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php