freebsd-nq/module/spl
Cyril Plisko ffbf0e57c2 Kstat to use private lock by default
While porting Illumos #3537 I found that ks_lock member of kstat_t
structure is different between Illumos and SPL. It is a pointer to
the kmutex_t in Illumos, but the mutex lock itself in SPL.
Apparently Illumos kstat API allows consumer to override the lock
if required. With SPL implementation it is not possible anymore.

Things were alright until the first attempt to actually override
the lock. Porting of Illumos #3537 introduced such code for the
first time.

In order to provide the Solaris/Illumos like functionality we:
  1. convert ks_lock to "kmutex_t *ks_lock"
  2. create a new field "kmutex_t ks_private_lock"
  3. On kstat_create() ks_lock = &ks_private_lock

Thus if consumer doesn't care we still have our internal lock in use.
If, however, consumer does care she has a chance to set ks_lock to
anything else before calling kstat_install().

The rest of the code will use ks_lock regardless of its origin.

Signed-off-by: Ned Bass <bass6@llnl.gov>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue #286
2013-10-25 13:41:30 -07:00
..
Makefile.in Add script for builtin module building. 2012-07-26 15:13:09 -07:00
spl-atomic.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-condvar.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-cred.c Linux 3.8 compat: Use kuid_t/kgid_t when required 2013-08-09 10:09:29 -07:00
spl-debug.c Linux 3.11 compat: Replace num_physpages with totalram_pages 2013-08-08 09:14:29 -07:00
spl-err.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-generic.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-kmem.c Consistently use local_irq_disable/local_irq_enable 2013-10-09 14:00:56 -07:00
spl-kobj.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-kstat.c Kstat to use private lock by default 2013-10-25 13:41:30 -07:00
spl-mutex.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-proc.c PaX/GrSecurity Linux 3.8.y compat: Use __no_const on struct ctl_table 2013-08-08 09:51:34 -07:00
spl-rwlock.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-taskq.c Fix taskq_wait_id() 2013-05-03 14:32:29 -07:00
spl-thread.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-time.c Replace current_kernel_time() with getnstimeofday() 2013-10-09 13:28:30 -07:00
spl-tsd.c Linux 3.9 compat: Switch to hlist_for_each{,_rcu} 2013-03-14 10:43:34 -07:00
spl-vnode.c Linux 3.8 compat: Use kuid_t/kgid_t when required 2013-08-09 10:09:29 -07:00
spl-xdr.c Refresh links to web site 2013-03-04 19:09:34 -08:00
spl-zlib.c Refresh links to web site 2013-03-04 19:09:34 -08:00