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[];