Print this page
feature flags + bug fix

Split Close
Expand all
Collapse all
          --- old/grub/include/grub/zfs/dmu.h
          +++ new/grub/include/grub/zfs/dmu.h
↓ open down ↓ 11 lines elided ↑ open up ↑
  12   12   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13   13   *  GNU General Public License for more details.
  14   14   *
  15   15   *  You should have received a copy of the GNU General Public License
  16   16   *  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
  17   17   */
  18   18  /*
  19   19   * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
  20   20   * Use is subject to license terms.
  21   21   */
       22 +/*
       23 + *  Copyright 2012, Daniil Lunev
       24 + */
  22   25  
  23   26  #ifndef _SYS_DMU_H
  24   27  #define _SYS_DMU_H
  25   28  
  26   29  /*
  27   30   * This file describes the interface that the DMU provides for its
  28   31   * consumers.
  29   32   *
  30   33   * The DMU also interacts with the SPA.  That interface is described in
  31   34   * dmu_spa.h.
  32   35   */
       36 +
       37 +#define  B_FALSE  0
       38 +#define  B_TRUE  1
       39 +
       40 +#define  DMU_OT_NEWTYPE 0x80
       41 +#define  DMU_OT_METADATA 0x40
       42 +#define  DMU_OT_BYTESWAP_MASK 0x3f
       43 +
       44 +#define  DMU_OT(byteswap, metadata) \
       45 +  (DMU_OT_NEWTYPE | \
       46 +  ((metadata) ? DMU_OT_METADATA : 0) | \
       47 +  ((byteswap) & DMU_OT_BYTESWAP_MASK))
       48 +
       49 +#define  DMU_OT_IS_VALID(ot) (((ot) & DMU_OT_NEWTYPE) ? \
       50 +  ((ot) & DMU_OT_BYTESWAP_MASK) < DMU_BSWAP_NUMFUNCS : \
       51 +  (ot) < DMU_OT_NUMTYPES)
       52 +
       53 +#define  DMU_OT_IS_METADATA(ot) (((ot) & DMU_OT_NEWTYPE) ? \
       54 +  ((ot) & DMU_OT_METADATA) : \
       55 +  dmu_ot[(ot)].ot_metadata)
       56 +
       57 +typedef enum dmu_object_byteswap {
       58 +  DMU_BSWAP_UINT8,
       59 +  DMU_BSWAP_UINT16,
       60 +  DMU_BSWAP_UINT32,
       61 +  DMU_BSWAP_UINT64,
       62 +  DMU_BSWAP_ZAP,
       63 +  DMU_BSWAP_DNODE,
       64 +  DMU_BSWAP_OBJSET,
       65 +  DMU_BSWAP_ZNODE,
       66 +  DMU_BSWAP_OLDACL,
       67 +  DMU_BSWAP_ACL,
       68 +  DMU_BSWAP_NUMFUNCS
       69 +} dmu_object_byteswap_t;
       70 +
  33   71  typedef enum dmu_object_type {
  34   72          DMU_OT_NONE,
  35   73          /* general: */
  36   74          DMU_OT_OBJECT_DIRECTORY,        /* ZAP */
  37   75          DMU_OT_OBJECT_ARRAY,            /* UINT64 */
  38   76          DMU_OT_PACKED_NVLIST,           /* UINT8 (XDR by nvlist_pack/unpack) */
  39   77          DMU_OT_PACKED_NVLIST_SIZE,      /* UINT64 */
  40   78          DMU_OT_BPLIST,                  /* UINT64 */
  41   79          DMU_OT_BPLIST_HDR,              /* UINT64 */
  42   80          /* spa: */
↓ open down ↓ 39 lines elided ↑ open up ↑
  82  120          DMU_OT_USERGROUP_USED,          /* ZAP */
  83  121          DMU_OT_USERGROUP_QUOTA,         /* ZAP */
  84  122          DMU_OT_USERREFS,                /* ZAP */
  85  123          DMU_OT_DDT_ZAP,                 /* ZAP */
  86  124          DMU_OT_DDT_STATS,               /* ZAP */
  87  125          DMU_OT_SA,                      /* System attr */
  88  126          DMU_OT_SA_MASTER_NODE,          /* ZAP */
  89  127          DMU_OT_SA_ATTR_REGISTRATION,    /* ZAP */
  90  128          DMU_OT_SA_ATTR_LAYOUTS,         /* ZAP */
  91  129          DMU_OT_DSL_KEYCHAIN = 54,
  92      -        DMU_OT_NUMTYPES
      130 +        DMU_OT_NUMTYPES,
      131 +        
      132 +        DMU_OTN_ZAP_METADATA = DMU_OT(DMU_BSWAP_ZAP, B_TRUE),
  93  133  } dmu_object_type_t;
  94  134  
  95  135  typedef enum dmu_objset_type {
  96  136          DMU_OST_NONE,
  97  137          DMU_OST_META,
  98  138          DMU_OST_ZFS,
  99  139          DMU_OST_ZVOL,
 100  140          DMU_OST_OTHER,                  /* For testing only! */
 101  141          DMU_OST_ANY,                    /* Be careful! */
 102  142          DMU_OST_NUMTYPES
↓ open down ↓ 6 lines elided ↑ open up ↑
 109  149  #define DMU_POOL_CONFIG                 "config"
 110  150  #define DMU_POOL_ROOT_DATASET           "root_dataset"
 111  151  #define DMU_POOL_SYNC_BPLIST            "sync_bplist"
 112  152  #define DMU_POOL_ERRLOG_SCRUB           "errlog_scrub"
 113  153  #define DMU_POOL_ERRLOG_LAST            "errlog_last"
 114  154  #define DMU_POOL_SPARES                 "spares"
 115  155  #define DMU_POOL_DEFLATE                "deflate"
 116  156  #define DMU_POOL_HISTORY                "history"
 117  157  #define DMU_POOL_PROPS                  "pool_props"
 118  158  #define DMU_POOL_L2CACHE                "l2cache"
      159 +#define DMU_POOL_FEATURES_FOR_READ      "features_for_read"
 119  160  
 120  161  #endif  /* _SYS_DMU_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX