The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/gnu/fs/reiserfs/reiserfs_fs_sb.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright 2000 Hans Reiser
    3  * See README for licensing and copyright details
    4  * 
    5  * Ported to FreeBSD by Jean-Sébastien Pédron <jspedron@club-internet.fr>
    6  * 
    7  * $FreeBSD$
    8  */
    9 
   10 #ifndef _GNU_REISERFS_REISERFS_FS_SB_H
   11 #define _GNU_REISERFS_REISERFS_FS_SB_H
   12 
   13 typedef uint32_t (*hashf_t)(const signed char *, int);
   14 
   15 #define sb_block_count(sbp)             (le32toh((sbp)->s_v1.s_block_count))
   16 #define set_sb_block_count(sbp,v)       ((sbp)->s_v1.s_block_count = htole32(v))
   17 #define sb_free_blocks(sbp)             (le32toh((sbp)->s_v1.s_free_blocks))
   18 #define set_sb_free_blocks(sbp,v)       ((sbp)->s_v1.s_free_blocks = htole32(v))
   19 #define sb_root_block(sbp)              (le32toh((sbp)->s_v1.s_root_block))
   20 
   21 /* Bitmaps */
   22 struct reiserfs_bitmap_info {
   23         uint16_t         first_zero_hint;
   24         uint16_t         free_count;
   25         //struct buf    *bp;      /* The actual bitmap */
   26         caddr_t          bp_data; /* The actual bitmap */
   27 };
   28 
   29 /* ReiserFS union of in-core super block data */
   30 struct reiserfs_sb_info {
   31         struct reiserfs_super_block *s_rs;
   32         struct reiserfs_bitmap_info *s_ap_bitmap;
   33         struct vnode    *s_devvp;
   34 
   35         unsigned short   s_mount_state;
   36 
   37         hashf_t          s_hash_function;      /* Pointer to function which
   38                                                   is used to sort names in
   39                                                   directory. Set on mount */
   40         unsigned long    s_mount_opt;          /* ReiserFS's mount options
   41                                                   are set here */
   42         int              s_generation_counter; /* Increased by one every
   43                                                   time the tree gets
   44                                                   re-balanced */
   45         unsigned long    s_properties;         /* File system properties.
   46                                                   Currently holds on-disk
   47                                                   FS format */
   48         uint16_t         s_blocksize;
   49         uint16_t         s_blocksize_bits;
   50         char             s_rd_only;            /* Is it read-only ? */
   51         int              s_is_unlinked_ok;
   52 };
   53 
   54 #define sb_version(sbi)                 (le16toh((sbi)->s_v1.s_version))
   55 #define set_sb_version(sbi, v)          ((sbi)->s_v1.s_version = htole16(v))
   56 
   57 #define sb_blocksize(sbi)               (le16toh((sbi)->s_v1.s_blocksize))
   58 #define set_sb_blocksize(sbi, v)        ((sbi)->s_v1.s_blocksize = htole16(v))
   59 
   60 #define sb_hash_function_code(sbi)                                      \
   61     (le32toh((sbi)->s_v1.s_hash_function_code))
   62 #define set_sb_hash_function_code(sbi, v)                               \
   63     ((sbi)->s_v1.s_hash_function_code = htole32(v))
   64 
   65 #define sb_bmap_nr(sbi)         (le16toh((sbi)->s_v1.s_bmap_nr))
   66 #define set_sb_bmap_nr(sbi, v)  ((sbi)->s_v1.s_bmap_nr = htole16(v))
   67 
   68 /* Definitions of reiserfs on-disk properties: */
   69 #define REISERFS_3_5    0
   70 #define REISERFS_3_6    1
   71 
   72 enum reiserfs_mount_options {
   73         /* Mount options */
   74         REISERFS_LARGETAIL,  /* Large tails will be created in a session */
   75         REISERFS_SMALLTAIL,  /* Small (for files less than block size) tails
   76                                 will be created in a session */
   77         REPLAYONLY,          /* Replay journal and return 0. Use by fsck */
   78         REISERFS_CONVERT,    /* -o conv: causes conversion of old format super
   79                                 block to the new format. If not specified -
   80                                 old partition will be dealt with in a manner
   81                                 of 3.5.x */
   82 
   83         /*
   84          * -o hash={tea, rupasov, r5, detect} is meant for properly mounting
   85          * reiserfs disks from 3.5.19 or earlier. 99% of the time, this option
   86          * is not required. If the normal autodection code can't determine
   87          * which hash to use (because both hases had the same value for a
   88          * file) use this option to force a specific hash. It won't allow you
   89          * to override the existing hash on the FS, so if you have a tea hash
   90          * disk, and mount with -o hash=rupasov, the mount will fail.
   91          */
   92         FORCE_TEA_HASH,      /* try to force tea hash on mount */
   93         FORCE_RUPASOV_HASH,  /* try to force rupasov hash on mount */
   94         FORCE_R5_HASH,       /* try to force rupasov hash on mount */
   95         FORCE_HASH_DETECT,   /* try to detect hash function on mount */
   96 
   97         REISERFS_DATA_LOG,
   98         REISERFS_DATA_ORDERED,
   99         REISERFS_DATA_WRITEBACK,
  100 
  101         /*
  102          * used for testing experimental features, makes benchmarking new
  103          * features with and without more convenient, should never be used by
  104          * users in any code shipped to users (ideally)
  105          */
  106         
  107         REISERFS_NO_BORDER,
  108         REISERFS_NO_UNHASHED_RELOCATION,
  109         REISERFS_HASHED_RELOCATION,
  110         REISERFS_ATTRS,
  111         REISERFS_XATTRS,
  112         REISERFS_XATTRS_USER,
  113         REISERFS_POSIXACL,
  114 
  115         REISERFS_TEST1,
  116         REISERFS_TEST2,
  117         REISERFS_TEST3,
  118         REISERFS_TEST4,
  119 };
  120 
  121 #define reiserfs_r5_hash(sbi)                                           \
  122     (REISERFS_SB(sbi)->s_mount_opt & (1 << FORCE_R5_HASH))
  123 #define reiserfs_rupasov_hash(sbi)                                      \
  124     (REISERFS_SB(sbi)->s_mount_opt & (1 << FORCE_RUPASOV_HASH))
  125 #define reiserfs_tea_hash(sbi)                                          \
  126     (REISERFS_SB(sbi)->s_mount_opt & (1 << FORCE_TEA_HASH))
  127 #define reiserfs_hash_detect(sbi)                                       \
  128     (REISERFS_SB(sbi)->s_mount_opt & (1 << FORCE_HASH_DETECT))
  129 
  130 #define reiserfs_attrs(sbi)                                             \
  131     (REISERFS_SB(sbi)->s_mount_opt & (1 << REISERFS_ATTRS))
  132 
  133 #define reiserfs_data_log(sbi)                                          \
  134     (REISERFS_SB(sbi)->s_mount_opt & (1 << REISERFS_DATA_LOG))
  135 #define reiserfs_data_ordered(sbi)                                      \
  136     (REISERFS_SB(sbi)->s_mount_opt & (1 << REISERFS_DATA_ORDERED))
  137 #define reiserfs_data_writeback(sbi)                                    \
  138     (REISERFS_SB(sbi)->s_mount_opt & (1 << REISERFS_DATA_WRITEBACK))
  139 
  140 #define SB_BUFFER_WITH_SB(sbi)  (REISERFS_SB(sbi)->s_sbh)
  141 #define SB_AP_BITMAP(sbi)       (REISERFS_SB(sbi)->s_ap_bitmap)
  142 
  143 #endif /* !defined _GNU_REISERFS_REISERFS_FS_SB_H */

Cache object: 3fba2b9ba0bc11ae3f83b285f3aee8ad


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.