zfs/module/spl
Etienne Dechamps a9f2397ee9 Determine the hostid on demand.
Currently, the SPL tries to determine the hostid at module load. The
hostid is usually determined by running the userland program "hostid"
during module initialization.

Unfortunately, when the module initializes, it may be way too soon to be
able to run any userland programs. This is especially true when the
module is compiled directly inside the kernel (built-in); in that case,
the SPL would try to run hostid when the kernel is still initializing,
which of course is doomed to fail.

This patch fixes the issue by deferring hostid generation until
something actually needs the hostid (that is, when zone_get_hostid() is
called), thus switching to a "on-initialization" model to a "on-demand"
(lazy loading) model. ZFS only needs the hostid when some pool
operations are requested, and this always happens way after the kernel
has finished initialization, thus solving the problem.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Issue zfsonlinux/zfs#851
2012-07-26 15:14:02 -07:00
..
.gitignore sun-misc-gitignore 2010-01-08 09:37:54 -08:00
Makefile.in Add script for builtin module building. 2012-07-26 15:13:09 -07:00
spl-atomic.c Linux 2.6.39 compat, DEFINE_SPINLOCK() 2011-04-20 12:01:11 -07:00
spl-condvar.c Remove condition variable names 2012-04-06 12:06:19 -07:00
spl-cred.c Add crgetfsuid()/crgetfsgid() helpers 2011-03-22 12:18:44 -07:00
spl-debug.c Add --enable-debug-log configure option 2012-02-02 11:27:54 -08:00
spl-err.c Add --enable-debug-log configure option 2012-02-02 11:27:54 -08:00
spl-generic.c Determine the hostid on demand. 2012-07-26 15:14:02 -07:00
spl-kmem.c Detect kernels that honor gfp flags passed to vmalloc() 2012-07-11 11:44:27 -07:00
spl-kobj.c Remove VN_HOLD/VN_RELE/VOP_PUTPAGE 2011-01-12 11:38:05 -08:00
spl-kstat.c Add basic dynamic kstat support 2012-02-02 11:28:00 -08:00
spl-mutex.c Fix undefined reference on spl_mutex_spin_max(). 2012-07-26 14:54:53 -07:00
spl-proc.c Add --enable-debug-log configure option 2012-02-02 11:27:54 -08:00
spl-rwlock.c Public Release Prep 2010-05-17 15:18:00 -07:00
spl-taskq.c Update a comment to reflect new taskq internals 2012-04-30 10:49:15 -07:00
spl-thread.c PowerPC Compatibility 2012-07-02 09:33:09 -07:00
spl-time.c Minor 32-bit fix cast to hrtime_t before the mutliply. 2010-05-23 09:51:17 -07:00
spl-tsd.c Prepend spl_ to all init/fini functions 2011-11-11 09:18:28 -08:00
spl-vnode.c Fix invalid context bug 2012-06-11 09:17:45 -07:00
spl-xdr.c Prefix all SPL debug macros with 'S' 2010-07-20 13:30:40 -07:00
spl-zlib.c Prepend spl_ to all init/fini functions 2011-11-11 09:18:28 -08:00