OpenZFS on Linux and FreeBSD
Go to file
Brian Behlendorf d04c8a563c Atomic64 compatibility for 32-bit systems without kernel support.
This patch is another step towards updating the code to handle the
32-bit kernels which I have not been regularly testing.  This changes
do not really impact the common case I'm expected which is the latest
kernel running on an x86_64 arch.

Until the linux-2.6.31 kernel the x86 arch did not have support for
64-bit atomic operations.  Additionally, the new atomic_compat.h support
for this case was wrong because it embedded a spinlock in the atomic
variable which must always and only be 64-bits total.  To handle these
32-bit issues we now simply fall back to the --enable-atomic-spinlock
implementation if the kernel does not provide the 64-bit atomic funcs.

The second issue this patch addresses is the DEBUG_KMEM assumption that
there will always be atomic64 funcs available.  On 32-bit archs this may
not be true, and actually that's just fine.  In that case the kernel will
will never be able to allocate more the 32-bits worth anyway.  So just
check if atomic64 funcs are available, if they are not it means this
is a 32-bit machine and we can safely use atomic_t's instead.
2009-12-04 15:54:12 -08:00
cmd Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
config Atomic64 compatibility for 32-bit systems without kernel support. 2009-12-04 15:54:12 -08:00
include Atomic64 compatibility for 32-bit systems without kernel support. 2009-12-04 15:54:12 -08:00
lib Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
module Atomic64 compatibility for 32-bit systems without kernel support. 2009-12-04 15:54:12 -08:00
patches Reimplement rwlocks for Linux lock profiling/analysis. 2009-09-18 16:09:47 -07:00
scripts Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
AUTHORS Prep for spl-0.4.3 tag. 2009-03-20 14:48:30 -07:00
COPYING Go through and add a header with the proper UCRL number. 2008-05-26 04:38:26 +00:00
ChangeLog Prep for 0.4.7 tag, updated META and ChangeLog. 2009-11-20 16:52:29 -08:00
DISCLAIMER Go through and add a header with the proper UCRL number. 2008-05-26 04:38:26 +00:00
INSTALL Trivial commit to remove whitespace 2008-07-09 19:11:29 +00:00
META Prep for 0.4.7 tag, updated META and ChangeLog. 2009-11-20 16:52:29 -08:00
Makefile.am Ensure *.order and *.markers build products are removed by distclean rule. 2009-11-20 16:01:00 -08:00
Makefile.in Ensure *.order and *.markers build products are removed by distclean rule. 2009-11-20 16:01:00 -08:00
autogen.sh Packaging improvements for RHEL and SLES 2009-06-16 10:44:59 -07:00
configure Atomic64 compatibility for 32-bit systems without kernel support. 2009-12-04 15:54:12 -08:00
configure.ac Simplify rpm build rules, added config/rpm.am. 2009-07-01 14:37:44 -07:00
spl-modules.spec.in spl-modules-devel package must depend on the exact version of kernel 2009-11-24 15:24:36 -08:00
spl.spec.in Remove usage of the __id_u macro for portability. 2009-10-05 12:51:58 -07:00
spl_config.h.in Autoconf --enable-debug-* cleanup 2009-10-30 13:58:51 -07:00
spl_unconfig.h Allow spl_config.h to be included by dependant packages 2009-03-17 14:55:59 -07:00