Go to file
Ned Bass 0bb43ca282 Revert "Taskq locking optimizations"
This reverts commit ec2b41049f.

A race condition was introduced by which a wake_up() call can be lost
after the taskq thread determines there is no pending work items,
leading to deadlock:

1. taksq thread enables interrupts
2. dispatcher thread runs, queues work item, call wake_up()
3. taskq thread runs, adds self to waitq, sleeps

This could easily happen if an interrupt for an IO completion was
outstanding at the point where the taskq thread reenables interrupts,
just before the call to add_wait_queue_exclusive().  The handler would
run immediately within the race window.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #32
2012-01-19 14:42:39 -08:00
cmd Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
config Run SPL_AC_PACMAN only if $VENDOR is "arch" 2012-01-13 09:08:12 -08:00
include Add the release component to headers 2012-01-18 11:06:26 -08:00
lib Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
module Revert "Taskq locking optimizations" 2012-01-19 14:42:39 -08:00
patches Reimplement rwlocks for Linux lock profiling/analysis. 2009-09-18 16:09:47 -07:00
scripts Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -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
autogen.sh 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
configure Run SPL_AC_PACMAN only if $VENDOR is "arch" 2012-01-13 09:08:12 -08:00
configure.ac Add make rule for building Arch Linux packages 2011-12-14 16:44:10 -08:00
COPYING Public Release Prep 2010-05-17 15:18:00 -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
Makefile.am Add the release component to headers 2012-01-18 11:06:26 -08:00
Makefile.in Add the release component to headers 2012-01-18 11:06:26 -08:00
META Prep spl-0.6.0-rc6 tag 2011-10-06 14:58:09 -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
spl_config.h.in Linux 3.2 compat: rw_semaphore.wait_lock is raw 2012-01-11 16:28:05 -08:00
spl-modules.spec.in Fix rpm dependencies 2012-01-18 11:24:36 -08:00
spl.spec.in Fix rpm dependencies 2012-01-18 11:24:36 -08:00

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