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