freebsd with flexible iflib nic queues
Go to file
Brian Behlendorf 25f06d677a
Fix /etc/hostid on root pool deadlock
Accidentally introduced by dc04a8c which now takes the SCL_VDEV lock
as a reader in zfs_blkptr_verify().  A deadlock can occur if the
/etc/hostid file resides on a dataset in the same pool.  This is
because reading the /etc/hostid file may occur while the caller is
holding the SCL_VDEV lock as a writer.  For example, to perform a
`zpool attach` as shown in the abbreviated stack below.

To resolve the issue we cache the system's hostid when initializing
the spa_t, or when modifying the multihost property.  The cached
value is then relied upon for subsequent accesses.

Call Trace:
    spa_config_enter+0x1e8/0x350 [zfs]
    zfs_blkptr_verify+0x33c/0x4f0 [zfs] <--- trying read lock
    zio_read+0x6c/0x140 [zfs]
    ...
    vfs_read+0xfc/0x1e0
    kernel_read+0x50/0x90
    ...
    spa_get_hostid+0x1c/0x38 [zfs]
    spa_config_generate+0x1a0/0x610 [zfs]
    vdev_label_init+0xa0/0xc80 [zfs]
    vdev_create+0x98/0xe0 [zfs]
    spa_vdev_attach+0x14c/0xb40 [zfs] <--- grabbed write lock

Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #9256 
Closes #9285
2019-09-10 13:42:30 -07:00
.github Fix typos 2019-09-02 18:17:39 -07:00
cmd Add/generalize abstractions in arc_summary3 2019-09-10 13:27:53 -07:00
config OpenZFS restructuring - move platform specific headers 2019-09-05 09:34:54 -07:00
contrib Fix typos in contrib/ 2019-08-30 09:44:43 -07:00
etc Fix typos in etc/ 2019-08-30 09:46:52 -07:00
include Fix /etc/hostid on root pool deadlock 2019-09-10 13:42:30 -07:00
lib OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
man Fix typos in man/ 2019-08-30 09:41:35 -07:00
module Fix /etc/hostid on root pool deadlock 2019-09-10 13:42:30 -07:00
rpm BuildRequires libtirpc-devel needed for RHEL 8 2019-09-06 11:30:07 -07:00
scripts Fix typos 2019-09-02 18:17:39 -07:00
tests Fix /etc/hostid on root pool deadlock 2019-09-10 13:42:30 -07:00
udev Restore :: in Makefile.am 2019-08-26 11:48:31 -07:00
.gitignore Linux 5.3 compat: Makefile subdir-m no longer supported 2019-08-19 15:22:52 -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 OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
copy-builtin OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -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
Makefile.am OpenZFS restructuring - move platform specific sources 2019-09-06 11:26:26 -07:00
META Tag 0.8.0 2019-05-21 11:11:41 -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.