zynq-common: Define default environment
[platform/kernel/u-boot.git] / include / zfs / zio.h
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
18 typedef 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
39 typedef 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
45 enum 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
62 enum 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 */