freebsd with flexible iflib nic queues
Go to file
Brian Behlendorf 65d56083b4 Fix zpool on zvol lock inversion deadlock
In all but one case the spa_namespace_lock is taken before the
bdev->bd_mutex lock.  But Linux __blkdev_get() function calls
fops->open() with the bdev->bd_mutex lock held and we must
somehow still safely acquire the spa_namespace_lock.

To avoid a potential lock inversion deadlock we preemptively
try to take the spa_namespace_lock().  Normally it will not
be contended and this is safe because spa_open_common() handles
the case where the caller already holds the spa_namespace_lock.

When it is contended we risk a lock inversion if we were to
block waiting for the lock.  Luckily, the __blkdev_get()
function allows us to return -ERESTARTSYS which will result in
bdev->bd_mutex being dropped, reacquired, and fops->open() being
called again.  This process can be repeated safely until both
locks are acquired.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Jorgen Lundman <lundman@lundman.net>
Closes #612
2012-12-20 09:57:39 -08:00
cmd vdev_id support for device link aliases 2012-12-03 14:04:47 -08:00
config Update SAs when an inode is dirtied 2012-12-14 12:18:54 -08:00
dracut Remove autotools products 2012-08-27 11:47:44 -07:00
etc vdev_id support for device link aliases 2012-12-03 14:04:47 -08:00
include Revert "Remove TSD zfs_fsyncer_key" 2012-12-20 09:56:28 -08:00
lib Fix get/set users/groups in quota props via numeric id 2012-12-17 09:52:58 -08:00
man vdev_id support for device link aliases 2012-12-03 14:04:47 -08:00
module Fix zpool on zvol lock inversion deadlock 2012-12-20 09:57:39 -08:00
patches Adding grub2 mkconfig support patch 2012-07-30 16:17:23 -07:00
scripts Implemented sharing datasets via SMB using libshare 2012-12-03 09:42:15 -08:00
udev Update 69-vdev.rules .gitignore 2012-12-14 12:16:42 -08:00
.gitignore Remove autotools products 2012-09-11 10:15:13 -07:00
AUTHORS Refresh AUTHORS 2012-12-19 09:47:25 -08:00
autogen.sh Remove autotools products 2012-08-27 11:47:44 -07:00
configure.ac Add zstreamdump(8) command to examine ZFS send streams. 2012-09-02 14:54:27 -07:00
copy-builtin Consistent menuconfig name 2012-08-26 13:49:37 -07:00
COPYING Relocate COPYING+COPYRIGHT, remove README cruft 2008-12-01 15:34:53 -08:00
COPYRIGHT Update COPYRIGHT to reference zpios CDDL exceptions. 2010-05-18 14:25:28 -07:00
DISCLAIMER Update COPYRIGHT and DISCLAIMER. 2010-05-18 10:32:23 -07:00
dkms.conf.in Support building a zfs-modules-dkms sub package 2012-08-08 15:21:01 -07:00
dkms.postinst Support building a zfs-modules-dkms sub package 2012-08-08 15:21:01 -07:00
Makefile.am Do not use KERNEL_DIR env var in Makefile.am 2012-12-17 09:45:47 -08:00
META zfs-0.6.0-rc12 2012-11-13 14:35:44 -08:00
OPENSOLARIS.LICENSE Add CDDL license file 2008-12-01 14:49:34 -08:00
PKGBUILD-zfs-modules.in Add make rule for building Arch Linux packages 2011-12-14 19:14:23 -08:00
PKGBUILD-zfs.in Add make rule for building Arch Linux packages 2011-12-14 19:14:23 -08:00
README.markdown Add script for builtin module building. 2012-07-26 13:45:09 -07:00
zfs-modules.spec.in Cleanly remove zfs-modules-devel headers 2012-08-13 16:35:26 -07:00
zfs-script-config.sh.in Unconditionally load core kernel modules 2010-11-11 11:38:25 -08:00
ZFS.RELEASE Update to onnv_147 2010-08-26 14:24:34 -07:00
zfs.release.in Move zfs.release generation to configure step 2012-07-12 12:22:51 -07:00
zfs.spec.in Remove the ChangeLog 2012-12-19 09:27:50 -08:00

Native ZFS for Linux! ZFS is an advanced file system and volume manager which was originally developed for Solaris. It has been successfully ported to FreeBSD and now there is a functional Linux ZFS kernel port too. The port currently includes a fully functional and stable SPA, DMU, and ZVOL with a ZFS Posix Layer (ZPL) on the way!

$ ./configure
$ make pkg

To copy the kernel code inside your kernel source tree for builtin compilation:

$ ./configure --enable-linux-builtin --with-linux=/usr/src/linux-...
$ ./copy-builtin /usr/src/linux-...

Full documentation for building, configuring, and using ZFS can be found at: http://zfsonlinux.org