Print this page
4185 New hash algorithm support

*** 18,27 **** --- 18,28 ---- * * CDDL HEADER END */ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright Saso Kiselkov 2013, All rights reserved. */ #ifndef _SYS_ZIO_CHECKSUM_H #define _SYS_ZIO_CHECKSUM_H
*** 32,51 **** #endif /* * Signature for checksum functions. */ ! typedef void zio_checksum_t(const void *data, uint64_t size, zio_cksum_t *zcp); /* * Information about each checksum function. */ typedef struct zio_checksum_info { ! zio_checksum_t *ci_func[2]; /* checksum function for each byteorder */ int ci_correctable; /* number of correctable bits */ int ci_eck; /* uses zio embedded checksum? */ int ci_dedup; /* strong enough for dedup? */ char *ci_name; /* descriptive name */ } zio_checksum_info_t; typedef struct zio_bad_cksum { zio_cksum_t zbc_expected; --- 33,59 ---- #endif /* * Signature for checksum functions. */ ! typedef void zio_checksum_t(const void *data, uint64_t size, ! const zio_cksum_salt_t *salt, const void *ctx_template, zio_cksum_t *zcp); ! typedef void *zio_checksum_tmpl_init_t(const zio_cksum_salt_t *salt); ! typedef void zio_checksum_tmpl_free_t(void *ctx_template); /* * Information about each checksum function. */ typedef struct zio_checksum_info { ! /* checksum function for each byteorder */ ! zio_checksum_t *ci_func[2]; ! zio_checksum_tmpl_init_t *ci_tmpl_init; ! zio_checksum_tmpl_free_t *ci_tmpl_free; int ci_correctable; /* number of correctable bits */ int ci_eck; /* uses zio embedded checksum? */ int ci_dedup; /* strong enough for dedup? */ + int ci_salted; /* does the checksum support salts */ char *ci_name; /* descriptive name */ } zio_checksum_info_t; typedef struct zio_bad_cksum { zio_cksum_t zbc_expected;
*** 60,74 **** --- 68,97 ---- /* * Checksum routines. */ extern zio_checksum_t zio_checksum_SHA256; + extern zio_checksum_t zio_checksum_SHA512_native; + extern zio_checksum_t zio_checksum_SHA512_byteswap; + /* Skein */ + extern zio_checksum_t zio_checksum_skein_native; + extern zio_checksum_t zio_checksum_skein_byteswap; + extern zio_checksum_tmpl_init_t zio_checksum_skein_tmpl_init; + extern zio_checksum_tmpl_free_t zio_checksum_skein_tmpl_free; + + /* Edon-R */ + extern zio_checksum_t zio_checksum_edonr_native; + extern zio_checksum_t zio_checksum_edonr_byteswap; + extern zio_checksum_tmpl_init_t zio_checksum_edonr_tmpl_init; + extern zio_checksum_tmpl_free_t zio_checksum_edonr_tmpl_free; + extern void zio_checksum_compute(zio_t *zio, enum zio_checksum checksum, void *data, uint64_t size); extern int zio_checksum_error(zio_t *zio, zio_bad_cksum_t *out); extern enum zio_checksum spa_dedup_checksum(spa_t *spa); + extern void zio_checksum_templates_free(spa_t *spa); #ifdef __cplusplus } #endif