zfs/include/sys
Brian Behlendorf ed3163484d Track emergency object in rbtree
In the initial implementation emergency objects were tracked on a
per-cache list.  The assumption was that under normal operation we
would never allocate more than a handful of these objects.  So the
cost of walking the list during free was expected to be negligible.

However real world usage has shown that emergency objects tend to
be allocated in batches.  A deadlock will be detected and several
thousand emergency objects will be allocated before the original
blocked slab allocation can complete.

Therefore the original list has been replaced by a red black tree
which is sorted by the memory address of each allocated object.
This bounds the worst case insertion and removal time to O(log n)
which minimize contention on the assoicated spin lock.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2012-11-06 14:54:19 -08:00
..
fm Remove autotools products 2012-08-27 11:46:23 -07:00
fs Remove autotools products 2012-08-27 11:46:23 -07:00
sysevent Remove autotools products 2012-08-27 11:46:23 -07:00
acl.h Add VSA_ACE_* and MAX_ACL_ENTRIES defines 2011-01-27 16:06:09 -08:00
acl_impl.h Public Release Prep 2010-05-17 15:18:00 -07:00
atomic.h atomic_*_*_nv() functions need to return the new value atomically. 2010-09-17 16:03:25 -07:00
attr.h Public Release Prep 2010-05-17 15:18:00 -07:00
bitmap.h Public Release Prep 2010-05-17 15:18:00 -07:00
bootconf.h Public Release Prep 2010-05-17 15:18:00 -07:00
bootprops.h Stub out additional missing headers 2010-06-11 15:57:25 -07:00
buf.h Public Release Prep 2010-05-17 15:18:00 -07:00
byteorder.h Public Release Prep 2010-05-17 15:18:00 -07:00
callb.h Public Release Prep 2010-05-17 15:18:00 -07:00
cmn_err.h Public Release Prep 2010-05-17 15:18:00 -07:00
compress.h Public Release Prep 2010-05-17 15:18:00 -07:00
condvar.h Condition variable reference counts 2012-11-06 14:48:55 -08:00
conf.h Public Release Prep 2010-05-17 15:18:00 -07:00
console.h Public Release Prep 2010-05-17 15:18:00 -07:00
cpupart.h Stub out additional missing headers 2010-06-11 15:57:25 -07:00
cpuvar.h Public Release Prep 2010-05-17 15:18:00 -07:00
crc32.h Public Release Prep 2010-05-17 15:18:00 -07:00
cred.h Add crgetfsuid()/crgetfsgid() helpers 2011-03-22 12:18:44 -07:00
ctype.h Public Release Prep 2010-05-17 15:18:00 -07:00
ddi.h Public Release Prep 2010-05-17 15:18:00 -07:00
debug.h Add --enable-debug-log configure option 2012-02-02 11:27:54 -08:00
dirent.h Public Release Prep 2010-05-17 15:18:00 -07:00
disp.h Add kpreempt_[dis|en]able macros in <sys/disp.h> 2012-08-24 15:18:38 -07:00
dkio.h Add DKIOCTRIM for TRIM support. 2012-09-02 14:22:01 -07:00
dklabel.h Public Release Prep 2010-05-17 15:18:00 -07:00
dnlc.h Add dnlc_reduce_cache() support 2011-04-06 20:06:03 -07:00
dumphdr.h Public Release Prep 2010-05-17 15:18:00 -07:00
efi_partition.h Public Release Prep 2010-05-17 15:18:00 -07:00
errno.h Public Release Prep 2010-05-17 15:18:00 -07:00
extdirent.h Add missing headers 2011-01-27 16:06:09 -08:00
fcntl.h Use Linux flock struct 2011-02-23 14:32:15 -08:00
file.h Add FIGNORECASE define 2011-01-27 16:06:09 -08:00
idmap.h Add missing headers 2011-01-27 16:06:09 -08:00
int_limits.h Public Release Prep 2010-05-17 15:18:00 -07:00
int_types.h Public Release Prep 2010-05-17 15:18:00 -07:00
inttypes.h Public Release Prep 2010-05-17 15:18:00 -07:00
isa_defs.h Define the needed ISA types for ARM 2012-05-03 09:56:15 -07:00
kidmap.h Add missing headers 2011-01-27 16:06:09 -08:00
kmem.h Track emergency object in rbtree 2012-11-06 14:54:19 -08:00
kobj.h Public Release Prep 2010-05-17 15:18:00 -07:00
kstat.h Add KSTAT_TYPE_TXG type 2012-11-02 15:17:40 -07:00
list.h Add list_link_replace() function 2010-08-27 14:23:48 -07:00
mkdev.h Public Release Prep 2010-05-17 15:18:00 -07:00
mntent.h Public Release Prep 2010-05-17 15:18:00 -07:00
modctl.h Public Release Prep 2010-05-17 15:18:00 -07:00
mode.h Add vn_mode_to_vtype/vn_vtype to_mode helpers 2011-01-12 11:38:04 -08:00
mount.h Public Release Prep 2010-05-17 15:18:00 -07:00
mutex.h Mutex ASSERT on self deadlock 2012-08-27 12:00:55 -07:00
note.h Public Release Prep 2010-05-17 15:18:00 -07:00
open.h Public Release Prep 2010-05-17 15:18:00 -07:00
param.h Correct MAXUID 2011-04-29 13:58:45 -07:00
pathname.h Public Release Prep 2010-05-17 15:18:00 -07:00
policy.h Minor policy interface 2011-01-27 16:06:09 -08:00
pool.h Stub out additional missing headers 2010-06-11 15:57:25 -07:00
priv_impl.h Stub out additional missing headers 2010-06-11 15:57:25 -07:00
proc.h Cleanly split Linux proc.h (fs) from conflicting Solaris proc.h (process) 2010-06-11 15:57:25 -07:00
processor.h Public Release Prep 2010-05-17 15:18:00 -07:00
pset.h Stub out additional missing headers 2010-06-11 15:57:25 -07:00
random.h Public Release Prep 2010-05-17 15:18:00 -07:00
refstr.h Public Release Prep 2010-05-17 15:18:00 -07:00
resource.h Public Release Prep 2010-05-17 15:18:00 -07:00
rwlock.h Linux 3.2 compat: rw_semaphore.wait_lock is raw 2012-01-11 16:28:05 -08:00
sdt.h Public Release Prep 2010-05-17 15:18:00 -07:00
sid.h Add ksid_index_t and ksid_t types 2011-01-27 16:06:09 -08:00
signal.h Split <sys/debug.h> header 2010-07-20 13:29:35 -07:00
stat.h Public Release Prep 2010-05-17 15:18:00 -07:00
stropts.h Public Release Prep 2010-05-17 15:18:00 -07:00
sunddi.h Remove Solaris module emulation 2012-05-18 13:57:44 -07:00
sunldi.h Public Release Prep 2010-05-17 15:18:00 -07:00
sysdc.h Stub out additional missing headers 2010-06-11 15:57:25 -07:00
sysevent.h Public Release Prep 2010-05-17 15:18:00 -07:00
sysmacros.h PowerPC Compatibility 2012-07-02 09:33:09 -07:00
systeminfo.h Read the /etc/hostid file directly. 2011-06-24 09:58:03 -07:00
systm.h Public Release Prep 2010-05-17 15:18:00 -07:00
t_lock.h Public Release Prep 2010-05-17 15:18:00 -07:00
taskq.h Remove TQ_SLEEP -> KM_SLEEP mapping 2012-09-12 11:41:42 -07:00
thread.h PowerPC Compatibility 2012-07-02 09:33:09 -07:00
time.h Allow 64-bit timestamps to be set on 64-bit kernels 2011-12-12 11:06:03 -08:00
timer.h Minor cleanup and Solaris API additions. 2010-06-11 15:57:25 -07:00
tsd.h Prepend spl_ to all init/fini functions 2011-11-11 09:18:28 -08:00
types.h splat: Cleanup headers 2012-11-06 14:48:56 -08:00
types32.h Public Release Prep 2010-05-17 15:18:00 -07:00
u8_textprep.h Public Release Prep 2010-05-17 15:18:00 -07:00
uio.h Add xuio_* structures and typedefs. 2010-06-11 15:57:25 -07:00
unistd.h Public Release Prep 2010-05-17 15:18:00 -07:00
utsname.h Public Release Prep 2010-05-17 15:18:00 -07:00
va_list.h Public Release Prep 2010-05-17 15:18:00 -07:00
varargs.h Public Release Prep 2010-05-17 15:18:00 -07:00
vfs.h Renamed 'struct fid' for NFS 2011-04-29 12:10:54 -07:00
vfs_opreg.h Public Release Prep 2010-05-17 15:18:00 -07:00
vmsystm.h Public Release Prep 2010-05-17 15:18:00 -07:00
vnode.h Add interface for file hole punching. 2012-10-04 16:22:07 -07:00
zmod.h Prepend spl_ to all init/fini functions 2011-11-11 09:18:28 -08:00
zone.h Public Release Prep 2010-05-17 15:18:00 -07:00