OpenZFS on Linux and FreeBSD
Go to file
Brian Behlendorf d503b971f4 Optimize spl_rwsem_is_locked()
The spl_rwsem_is_locked() compatibility function has been observed
to be a hot spot.  The root cause of this is that we must check the
rwsem activity under the rwsem->wait_lock to avoid a race.  When
the lock is busy significant contention can occur.

The upstream kernel fix for this race had the insight that by using
spin_trylock_irqsave() this contention could be avoided.  When the
lock is contended it's reasonable to return that it is locked.

This change updates the SPLs implemention to be like the upstream
kernel.  Since the kernel code has been in use for years now this
a low risk change.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2012-07-13 13:07:39 -07:00
cmd Cleanly support debug packages 2012-02-27 14:24:22 -08:00
config Detect kernels that honor gfp flags passed to vmalloc() 2012-07-11 11:44:27 -07:00
include Optimize spl_rwsem_is_locked() 2012-07-13 13:07:39 -07:00
lib Cleanly support debug packages 2012-02-27 14:24:22 -08:00
module Detect kernels that honor gfp flags passed to vmalloc() 2012-07-11 11:44:27 -07:00
patches Reimplement rwlocks for Linux lock profiling/analysis. 2009-09-18 16:09:47 -07:00
scripts Cleanly support debug packages 2012-02-27 14:24:22 -08:00
.gitignore Ignore unsigned module build products 2010-03-11 14:29:17 -08:00
AUTHORS Public Release Prep 2010-05-17 15:18:00 -07:00
COPYING Public Release Prep 2010-05-17 15:18:00 -07:00
ChangeLog Prep for spl-0.5.0 tag 2010-08-13 09:33:50 -07:00
DISCLAIMER Public Release Prep 2010-05-17 15:18:00 -07:00
INSTALL Public Release Prep 2010-05-17 15:18:00 -07:00
META SPL 0.6.0-rc9 2012-06-14 11:45:59 -07:00
Makefile.am Move spl.release generation to configure step 2012-07-12 12:13:47 -07:00
Makefile.in Move spl.release generation to configure step 2012-07-12 12:13:47 -07:00
PKGBUILD-spl-modules.in Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
PKGBUILD-spl.in Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
README.markdown Fix markdown rendering 2010-09-15 09:05:34 -07:00
autogen.sh Public Release Prep 2010-05-17 15:18:00 -07:00
configure Move spl.release generation to configure step 2012-07-12 12:13:47 -07:00
configure.ac Move spl.release generation to configure step 2012-07-12 12:13:47 -07:00
spl-modules.spec.in Remove Chaos 4.x RPM support 2012-07-02 15:17:08 -07:00
spl.release.in Move spl.release generation to configure step 2012-07-12 12:13:47 -07:00
spl.spec.in Fix rpm dependencies 2012-01-18 11:24:36 -08:00
spl_config.h.in Detect kernels that honor gfp flags passed to vmalloc() 2012-07-11 11:44:27 -07:00

README.markdown

The Solaris Porting Layer (SPL) is a Linux kernel module which provides many of the Solaris kernel APIs. This shim layer makes it possible to run Solaris kernel code in the Linux kernel with relatively minimal modification. This can be particularly useful when you want to track upstream Solaris development closely and dont want the overhead of maintaining a large patch which converts Solaris primitives to Linux primitives.

To build packages for your distribution:

$ ./configure
$ make pkg

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