freebsd-nq/module/spl
John Gallagher d12614521a Fixes for procfs files backed by linked lists
There are some issues with the way the seq_file interface is implemented
for kstats backed by linked lists (zfs_dbgmsgs and certain per-pool
debugging info):

* We don't account for the fact that seq_file sometimes visits a node
  multiple times, which results in missing messages when read through
  procfs.
* We don't keep separate state for each reader of a file, so concurrent
  readers will receive incorrect results.
* We don't account for the fact that entries may have been removed from
  the list between read syscalls, so reading from these files in procfs
  can cause the system to crash.

This change fixes these issues and adds procfs_list, a wrapper around a
linked list which abstracts away the details of implementing the
seq_file interface for a list and exposing the contents of the list
through procfs.

Reviewed by: Don Brady <don.brady@delphix.com>
Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Reviewed by: Brad Lewis <brad.lewis@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: John Gallagher <john.gallagher@delphix.com>
External-issue: LX-1211
Closes #7819
2018-09-26 11:08:12 -07:00
..
Makefile.in Fixes for procfs files backed by linked lists 2018-09-26 11:08:12 -07:00
README.md Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-atomic.c Fix cstyle warnings 2018-02-07 11:49:38 -08:00
spl-condvar.c Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-cred.c Fix cstyle warnings 2018-02-07 11:49:38 -08:00
spl-err.c Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-generic.c Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-kmem-cache.c Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
spl-kmem.c Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-kobj.c Fix cstyle warnings 2018-02-07 11:49:38 -08:00
spl-kstat.c Fixes for procfs files backed by linked lists 2018-09-26 11:08:12 -07:00
spl-mutex.c Fix cstyle warnings 2018-02-07 11:49:38 -08:00
spl-proc.c Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
spl-procfs-list.c Fixes for procfs files backed by linked lists 2018-09-26 11:08:12 -07:00
spl-rwlock.c Add rwsem_tryupgrade for 4.9.20-rt16 kernel 2018-07-30 09:22:30 -07:00
spl-taskq.c Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-thread.c Fix more cstyle warnings 2018-02-24 10:05:37 -08:00
spl-tsd.c Remove all spin_is_locked calls 2017-10-30 11:16:56 -07:00
spl-vmem.c Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
spl-vnode.c Add rwsem_tryupgrade for 4.9.20-rt16 kernel 2018-07-30 09:22:30 -07:00
spl-xdr.c Update build system and packaging 2018-05-29 16:00:33 -07:00
spl-zlib.c Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
THIRDPARTYLICENSE.gplv2 Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00
THIRDPARTYLICENSE.gplv2.descrip Prepare SPL repo to merge with ZFS repo 2018-05-29 14:51:39 -07:00

The Solaris Porting Layer, SPL, is a Linux kernel module which provides a compatibility layer used by the ZFS on Linux project.

Installation

The latest version of the SPL is maintained as part of this repository. Only when building ZFS version 0.7.x or earlier must an external SPL release be used. These releases can be found at:

Release

The SPL is released under a GPLv2 license.
For more details see the NOTICE and THIRDPARTYLICENSE files; UCRL-CODE-235197