uboot/include/zfs/zio.h
<<
>>
Prefs
   1/*
   2 *  GRUB  --  GRand Unified Bootloader
   3 *  Copyright (C) 1999,2000,2001,2002,2003,2004  Free Software Foundation, Inc.
   4 *
   5 * SPDX-License-Identifier:     GPL-2.0+
   6 */
   7/*
   8 * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
   9 */
  10
  11#ifndef _ZIO_H
  12#define _ZIO_H
  13
  14#include <zfs/spa.h>
  15
  16#define ZEC_MAGIC       0x210da7ab10c7a11ULL    /* zio data bloc tail */
  17
  18typedef struct zio_eck {
  19        uint64_t        zec_magic;      /* for validation, endianness   */
  20        zio_cksum_t     zec_cksum;      /* 256-bit checksum             */
  21} zio_eck_t;
  22
  23/*
  24 * Gang block headers are self-checksumming and contain an array
  25 * of block pointers.
  26 */
  27#define SPA_GANGBLOCKSIZE       SPA_MINBLOCKSIZE
  28#define SPA_GBH_NBLKPTRS        ((SPA_GANGBLOCKSIZE - \
  29        sizeof(zio_eck_t)) / sizeof(blkptr_t))
  30#define SPA_GBH_FILLER          ((SPA_GANGBLOCKSIZE - \
  31        sizeof(zio_eck_t) - \
  32        (SPA_GBH_NBLKPTRS * sizeof(blkptr_t))) /\
  33        sizeof(uint64_t))
  34
  35#define ZIO_GET_IOSIZE(zio)     \
  36        (BP_IS_GANG((zio)->io_bp) ? \
  37        SPA_GANGBLOCKSIZE : BP_GET_PSIZE((zio)->io_bp))
  38
  39typedef struct zio_gbh {
  40        blkptr_t                zg_blkptr[SPA_GBH_NBLKPTRS];
  41        uint64_t                zg_filler[SPA_GBH_FILLER];
  42        zio_eck_t               zg_tail;
  43} zio_gbh_phys_t;
  44
  45enum zio_checksum {
  46        ZIO_CHECKSUM_INHERIT = 0,
  47        ZIO_CHECKSUM_ON,
  48        ZIO_CHECKSUM_OFF,
  49        ZIO_CHECKSUM_LABEL,
  50        ZIO_CHECKSUM_GANG_HEADER,
  51        ZIO_CHECKSUM_ZILOG,
  52        ZIO_CHECKSUM_FLETCHER_2,
  53        ZIO_CHECKSUM_FLETCHER_4,
  54        ZIO_CHECKSUM_SHA256,
  55        ZIO_CHECKSUM_ZILOG2,
  56        ZIO_CHECKSUM_FUNCTIONS
  57};
  58
  59#define ZIO_CHECKSUM_ON_VALUE   ZIO_CHECKSUM_FLETCHER_2
  60#define ZIO_CHECKSUM_DEFAULT    ZIO_CHECKSUM_ON
  61
  62enum zio_compress {
  63        ZIO_COMPRESS_INHERIT = 0,
  64        ZIO_COMPRESS_ON,
  65        ZIO_COMPRESS_OFF,
  66        ZIO_COMPRESS_LZJB,
  67        ZIO_COMPRESS_EMPTY,
  68        ZIO_COMPRESS_GZIP1,
  69        ZIO_COMPRESS_GZIP2,
  70        ZIO_COMPRESS_GZIP3,
  71        ZIO_COMPRESS_GZIP4,
  72        ZIO_COMPRESS_GZIP5,
  73        ZIO_COMPRESS_GZIP6,
  74        ZIO_COMPRESS_GZIP7,
  75        ZIO_COMPRESS_GZIP8,
  76        ZIO_COMPRESS_GZIP9,
  77        ZIO_COMPRESS_FUNCTIONS
  78};
  79
  80#endif  /* _ZIO_H */
  81