Print this page
4185 New hash algorithm support
*** 20,29 ****
--- 20,30 ----
*/
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012 by Delphix. All rights reserved.
* Copyright 2011 Nexenta Systems, Inc. All rights reserved.
+ * Copyright 2013 Saso Kiselkov. All rights reserved.
*/
#ifndef _SYS_SPA_H
#define _SYS_SPA_H
*** 51,60 ****
--- 52,62 ----
typedef struct spa_aux_vdev spa_aux_vdev_t;
typedef struct ddt ddt_t;
typedef struct ddt_entry ddt_entry_t;
struct dsl_pool;
struct dsl_dataset;
+ struct zfeature_info;
/*
* General-purpose 32-bit and 64-bit bitfield encodings.
*/
#define BF32_DECODE(x, low, len) P2PHASE((x) >> (low), 1U << (len))
*** 122,131 ****
--- 124,141 ----
typedef struct zio_cksum {
uint64_t zc_word[4];
} zio_cksum_t;
/*
+ * Some checksums/hashes need a 256-bit initialization salt. This salt is kept
+ * secret and is suitable for use in MAC algorithms as the key.
+ */
+ typedef struct zio_cksum_salt {
+ uint8_t zcs_bytes[32];
+ } zio_cksum_salt_t;
+
+ /*
* Each block is described by its DVAs, time of birth, checksum, etc.
* The word-by-word, bit-by-bit layout of the blkptr is as follows:
*
* 64 56 48 40 32 24 16 8 0
* +-------+-------+-------+-------+-------+-------+-------+-------+
*** 621,630 ****
--- 631,643 ----
extern uint64_t bp_get_dsize(spa_t *spa, const blkptr_t *bp);
extern boolean_t spa_has_slogs(spa_t *spa);
extern boolean_t spa_is_root(spa_t *spa);
extern boolean_t spa_writeable(spa_t *spa);
+ /* Salted checksum handling */
+ extern int spa_activate_salted_cksum(spa_t *spa, struct zfeature_info *feature);
+
extern int spa_mode(spa_t *spa);
extern uint64_t strtonum(const char *str, char **nptr);
extern char *spa_his_ievent_table[];