OpenZFS on Linux and FreeBSD
Go to file
Fabian-Gruenbichler b119e2c6f1 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
2019-12-10 12:53:25 -08:00
.github Fixes typo from #9681 2019-12-09 10:10:55 -08:00
cmd Replace ASSERTV macro with compiler annotation 2019-12-05 12:37:00 -08:00
config Remove zfs_vdev_elevator module option 2019-11-27 10:35:49 -08:00
contrib Skip loading already loaded key 2019-11-08 14:34:07 -08:00
etc Fix encryption logic in systemd mount generator 2019-11-27 10:54:49 -08:00
include SIMD: Use alloc_pages_node to force alignment 2019-12-10 12:53:25 -08:00
lib Replace ASSERTV macro with compiler annotation 2019-12-05 12:37:00 -08:00
man Disable EDONR on FreeBSD 2019-12-05 13:10:29 -08:00
module Abstract away platform specific superblock references 2019-12-10 09:21:07 -08:00
rpm Canonicalize Python shebangs 2019-09-12 13:32:32 -07:00
scripts Move platform independent tests to a shared runfile 2019-10-09 10:39:26 -07:00
tests ZTS: Fixes for spurious failures of resilver_restart_001 test 2019-12-10 09:10:36 -08:00
udev Restore :: in Makefile.am 2019-08-26 11:48:31 -07:00
.gitignore Adapt gitignore for modules 2019-12-02 13:23:47 -08: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
CODE_OF_CONDUCT.md Add CODE_OF_CONDUCT.md 2019-04-30 10:58:45 -07:00
COPYRIGHT OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
META Linux compat: Minimum kernel version 3.10 2019-11-12 08:59:06 -08:00
Makefile.am Perform KABI checks in parallel 2019-10-01 12:50:34 -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
autogen.sh Cause autogen.sh to fail if autoreconf fails 2018-07-06 09:27:37 -07:00
configure.ac Prevent unnecessary resilver restarts 2019-11-27 10:15:01 -08:00
copy-builtin copy-builtin: SPL must be in Kbuild first (again) 2019-09-11 11:09:50 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

README.md

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.