diff options
author | Tom Caputi <[email protected]> | 2016-05-12 10:51:24 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2016-07-20 10:43:30 -0700 |
commit | 0b04990a5de594659d2cf20458965277dd6efeb1 (patch) | |
tree | 74369a3236e03359f7276cb9b19687e28c7f6d59 /lib/libspl | |
parent | be88e733a634ad0d7f20350e1a17ede51922d3ff (diff) |
Illumos Crypto Port module added to enable native encryption in zfs
A port of the Illumos Crypto Framework to a Linux kernel module (found
in module/icp). This is needed to do the actual encryption work. We cannot
use the Linux kernel's built in crypto api because it is only exported to
GPL-licensed modules. Having the ICP also means the crypto code can run on
any of the other kernels under OpenZFS. I ended up porting over most of the
internals of the framework, which means that porting over other API calls (if
we need them) should be fairly easy. Specifically, I have ported over the API
functions related to encryption, digests, macs, and crypto templates. The ICP
is able to use assembly-accelerated encryption on amd64 machines and AES-NI
instructions on Intel chips that support it. There are place-holder
directories for similar assembly optimizations for other architectures
(although they have not been written).
Signed-off-by: Tom Caputi <[email protected]>
Signed-off-by: Tony Hutter <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Issue #4329
Diffstat (limited to 'lib/libspl')
-rw-r--r-- | lib/libspl/include/sys/byteorder.h | 22 | ||||
-rw-r--r-- | lib/libspl/include/sys/file.h | 2 | ||||
-rw-r--r-- | lib/libspl/include/sys/types.h | 1 |
3 files changed, 24 insertions, 1 deletions
diff --git a/lib/libspl/include/sys/byteorder.h b/lib/libspl/include/sys/byteorder.h index 528d2d208..7ef1c4295 100644 --- a/lib/libspl/include/sys/byteorder.h +++ b/lib/libspl/include/sys/byteorder.h @@ -128,6 +128,28 @@ extern in_port_t ntohs(in_port_t); #define BE_64(x) BSWAP_64(x) #endif +#ifdef _BIG_ENDIAN +static __inline__ uint64_t +htonll(uint64_t n) { + return (n); +} + +static __inline__ uint64_t +ntohll(uint64_t n) { + return (n); +} +#else +static __inline__ uint64_t +htonll(uint64_t n) { + return ((((uint64_t)htonl(n)) << 32) + htonl(n >> 32)); +} + +static __inline__ uint64_t +ntohll(uint64_t n) { + return ((((uint64_t)ntohl(n)) << 32) + ntohl(n >> 32)); +} +#endif + /* * Macros to read unaligned values from a specific byte order to * native byte order diff --git a/lib/libspl/include/sys/file.h b/lib/libspl/include/sys/file.h index 163a4dca6..b5d985bda 100644 --- a/lib/libspl/include/sys/file.h +++ b/lib/libspl/include/sys/file.h @@ -33,7 +33,7 @@ #define FREAD 1 #define FWRITE 2 -// #define FAPPEND 8 +// #define FAPPEND 8 #define FCREAT O_CREAT #define FTRUNC O_TRUNC diff --git a/lib/libspl/include/sys/types.h b/lib/libspl/include/sys/types.h index 8996af96a..c58b2d566 100644 --- a/lib/libspl/include/sys/types.h +++ b/lib/libspl/include/sys/types.h @@ -64,6 +64,7 @@ typedef int major_t; typedef int minor_t; typedef ushort_t o_mode_t; /* old file attribute type */ +typedef short index_t; /* * Definitions remaining from previous partial support for 64-bit file |