Go to file
Fabian-Gruenbichler 35155c0132 SIMD: Use alloc_pages_node to force alignment
fxsave and xsave require the target address to be 16-/64-byte aligned.

kmalloc(_node) does not (yet) offer such fine-grained control over
alignment[0,1], even though it does "the right thing" most of the time
for power-of-2 sizes. unfortunately, alignment is completely off when
using certain debugging or hardening features/configs, such as KASAN,
slub_debug=Z or the not-yet-upstream SLAB_CANARY.

Use alloc_pages_node() instead which allows us to allocate page-aligned
memory. Since fpregs_state is padded to a full page anyway, and this
code is only relevant for x86 which has 4k pages, this approach should
not allocate any unnecessary memory but still guarantee the needed
alignment.

0: https://lwn.net/Articles/787740/
1: https://lore.kernel.org/linux-block/20190826111627.7505-1-vbabka@suse.cz/

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #9608
Closes #9674
2020-01-22 13:49:01 -08:00
.github Fix typos 2020-01-22 13:49:00 -08:00
cmd Linux 5.0 compat: SIMD compatibility 2020-01-22 13:49:01 -08:00
config Linux 5.0 compat: SIMD compatibility 2020-01-22 13:49:01 -08:00
contrib Fix typos in contrib/ 2020-01-22 13:48:58 -08:00
etc Fix typos in etc/ 2020-01-22 13:48:59 -08:00
include SIMD: Use alloc_pages_node to force alignment 2020-01-22 13:49:01 -08:00
lib Refactor libzfs_error_init newlines 2020-01-22 13:49:01 -08:00
man Add warning for zfs_vdev_elevator option removal 2020-01-22 13:49:01 -08:00
module Linux 5.0 compat: SIMD compatibility 2020-01-22 13:49:01 -08:00
rpm Canonicalize Python shebangs 2020-01-22 13:49:00 -08:00
scripts Fix typos 2020-01-22 13:49:00 -08:00
tests ZTS: harden xattr/cleanup.ksh 2020-01-22 13:49:01 -08:00
udev Add enclosure_symlinks option to vdev_id 2018-12-14 17:27:49 -08:00
.gitignore Linux 5.3 compat: Makefile subdir-m no longer supported 2019-09-25 11:27:50 -07:00
.gitmodules Add zimport.sh compatibility test script 2014-02-21 12:10:31 -08:00
.travis.yml Add .travis.yml 2017-11-13 09:18:18 -08:00
AUTHORS Update build system and packaging 2018-05-29 16:00:33 -07:00
autogen.sh Cause autogen.sh to fail if autoreconf fails 2018-07-06 09:27:37 -07:00
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md 2019-04-30 10:58:45 -07:00
configure.ac Add channel program for property based snapshots 2020-01-22 13:48:57 -08:00
copy-builtin Allow copy-builtin to work with modified sources 2018-10-17 12:06:05 -07:00
COPYRIGHT Update build system and packaging 2018-05-29 16:00:33 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
Makefile.am Minor cleanup in Makefile.am 2020-01-22 13:48:58 -08:00
META Tag zfs-0.8.2 2019-09-25 11:27:51 -07:00
NEWS Add NEWS file 2018-09-18 12:03:47 -07:00
NOTICE Update build system and packaging 2018-05-29 16:00:33 -07:00
README.md Explicitly state supported Linux versions 2018-05-30 20:11:19 -07:00
TEST Update build system and packaging 2018-05-29 16:00:33 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

img

ZFS on Linux is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community.

codecov coverity

Official Resources

Installation

Full documentation for installing ZoL on your favorite Linux distribution can be found at our site.

Contribute & Develop

We have a separate document with contribution guidelines.

Release

ZFS on Linux is released under a CDDL license.
For more details see the NOTICE, LICENSE and COPYRIGHT files; UCRL-CODE-235197

Supported Kernels

  • The META file contains the officially recognized supported kernel versions.