OpenZFS on Linux and FreeBSD
Go to file
Brian Behlendorf 460748d4ae
Switch from _Noreturn to __attribute__((noreturn))
Parts of the Linux kernel build system struggle with _Noreturn.  This
results in the following warnings when building on RHEL 8.5, and likely
other environments.  Switch to using the __attribute__((noreturn)).

  warning: objtool: dbuf_free_range()+0x2b8:
    return with modified stack frame
  warning: objtool: dbuf_free_range()+0x0:
    stack state mismatch: cfa1=7+40 cfa2=7+8
  ...
  WARNING: EXPORT symbol "arc_buf_size" [zfs.ko] version generation
    failed, symbol will not be versioned.
  WARNING: EXPORT symbol "spa_open" [zfs.ko] version generation
    failed, symbol will not be versioned.
  ...

Additionally, __thread_exit() has been renamed spl_thread_exit() and
made a static inline function.  This was needed because the kernel
will generate a warning for symbols which are __attribute__((noreturn))
and then exported with EXPORT_SYMBOL.

While we could continue to use _Noreturn in user space I've also
switched it to __attribute__((noreturn)) purely for consistency
throughout the code base.

Reviewed-by: Ryan Moeller <freqlabs@FreeBSD.org>
Reviewed-by: Brian Atkinson <batkinson@lanl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #13238
2022-03-23 08:51:00 -07:00
.github ZTS: switch to rsync for directory diffs 2022-03-01 10:05:32 -08:00
cmd Switch from _Noreturn to __attribute__((noreturn)) 2022-03-23 08:51:00 -07:00
config RPM: Split out pam_zfs_key into separate package 2022-03-18 16:54:50 -07:00
contrib Remove bcopy(), bzero(), bcmp() 2022-03-15 15:13:42 -07:00
etc systemd: read initconfdir 2022-02-22 12:59:11 -08:00
include Switch from _Noreturn to __attribute__((noreturn)) 2022-03-23 08:51:00 -07:00
lib Switch from _Noreturn to __attribute__((noreturn)) 2022-03-23 08:51:00 -07:00
man Allow zfs send to exclude datasets 2022-03-18 17:02:12 -07:00
module Switch from _Noreturn to __attribute__((noreturn)) 2022-03-23 08:51:00 -07:00
rpm RPM: Split out pam_zfs_key into separate package 2022-03-18 16:54:50 -07:00
scripts ZTS: Log test name to /dev/kmsg on Linux 2022-03-23 09:15:02 -06:00
tests Switch from _Noreturn to __attribute__((noreturn)) 2022-03-23 08:51:00 -07:00
udev Udev rules: remove zvol compat symlinks (without the leading zvol/) 2021-07-06 13:41:17 -07:00
.editorconfig Add an .editorconfig; document git whitespace settings 2020-01-27 13:32:52 -08:00
.gitignore Add FreeBSD support to OpenZFS 2020-04-14 11:36:28 -07:00
.gitmodules .gitmodules: link to openzfs github repository 2021-04-12 09:37:23 -07:00
AUTHORS Add zstd support to zfs 2020-08-20 10:30:06 -07:00
CODE_OF_CONDUCT.md Replace ZFS on Linux references with OpenZFS 2020-10-08 20:10:13 -07:00
COPYRIGHT Fix typos 2020-06-09 21:24:09 -07:00
LICENSE Update build system and packaging 2018-05-29 16:00:33 -07:00
META Linux 5.16 compat: META 2022-03-14 16:39:07 -07:00
Makefile.am module: zstd: check we don't leak symbols; regenerate symbol map 2022-03-15 16:10:10 -07:00
NEWS Fix NEWS file 2020-08-26 21:44:41 -07:00
NOTICE Update build system and packaging 2018-05-29 16:00:33 -07:00
README.md README: Update OpenZFS website url 2022-01-06 16:25:01 -08:00
RELEASES.md Add RELEASES.md file 2021-04-02 16:33:40 -07:00
TEST Remove CI builder customization from TEST 2020-03-16 10:46:03 -07:00
autogen.sh Cause autogen.sh to fail if autoreconf fails 2018-07-06 09:27:37 -07:00
configure.ac Expose additional file level attributes 2022-03-07 17:52:03 -08:00
copy-builtin copy-builtin: posix conformance 2021-05-08 08:58:26 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00

README.md

img

OpenZFS is an advanced file system and volume manager which was originally developed for Solaris and is now maintained by the OpenZFS community. This repository contains the code for running OpenZFS on Linux and FreeBSD.

codecov coverity

Official Resources

Installation

Full documentation for installing OpenZFS on your favorite operating system can be found at the Getting Started Page.

Contribute & Develop

We have a separate document with contribution guidelines.

We have a Code of Conduct.

Release

OpenZFS 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 Linux kernel versions.
  • Supported FreeBSD versions are any supported branches and releases starting from 12.2-RELEASE.