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