Commit Graph

108 Commits

Author SHA1 Message Date
Brian Behlendorf 615e289a57 Revert "Remove declarations in VERIFY3_IMPL to save stack"
This reverts commit 421d95b3ea.

Ricardo correctly pointed out that there is more going on here than
typecasting.  By removing the locals we are actually causing LEFT and
RIGHT to be evaluated twice which can potentially lead to some
strange side effects as:

1) VERIFY3*() causing a panic but in the panic message the values
look correct such that the assertion shouldn't fail, or:

2) if LEFT or RIGHT are expressions with side-effects (e.g. a call
to a function which changes some state), then when we panic and
examine the crash dump, it may lead to an unexpected state because
we are not expecting certain things to change during the panic,
after the expressions inside VERIFY3*(...) have been evaluated.

3) Also, it may lead to double-panics or deadlocks during panics,
like for example, if the expressions inside VERIFY3*(...) only expect
to be called once (e.g. because they acquire a mutex).
2010-08-06 11:08:24 -07:00
Brian Behlendorf 0fd353341a Revert "remove compiler warning on 32-bit systems"
This reverts commit 80819cc01e.
2010-08-06 11:08:11 -07:00
Ned Bass 80819cc01e remove compiler warning on 32-bit systems
commit 421d95b3ea introduced a compiler
warning on 32-bit systems about casting a pointer to an integer of a
different size.  This commit removes the warning by casting the arguments
to snprintf in the same manner as the original VERIFY3_IMPL macro.
2010-08-04 09:38:44 -07:00
Ned Bass 421d95b3ea Remove declarations in VERIFY3_IMPL to save stack
This has a minor impact on stack usage of individual functions, but the
VERIFY macros are used so frequently that their overhead may add up.
This macro declared two new local variables to cast its argument types.
Doing the typecast inline eliminates the need for these variables.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:34:48 -07:00
Brian Behlendorf 1f3fa4df05 Add -stack-check option to libspl
See commit f16dec7e67fe86f3c3556a67865ee715a2964d70 for full
details of this change.  But in summary -fstack-check is being
restricted in usage only to locations which must already have
small stack frames.
2010-07-23 10:38:44 -07:00
Brian Behlendorf f39d7d2ca2 Remove libspl support for mlslabels
The ZFS update to onnv_141 brought with it support for a
security label attribute called mlslabel.  This feature
depends on zones to work correctly and while I originally
added minimal support for this in libspl that was a mistake.

Supporting this under Linux is not required and this is
just additional troublesome code to support.  Long term
something like this could be supported under Linux but it
will need to be clearly thought through them an implemented.
2010-07-22 16:37:29 -07:00
Brian Behlendorf bb4baf0912 Add missing headers to 'make dist' target for RPM build
The following files were being left out the tarball which
is used by the 'make rpm' target.  This results in a build
failure when building packages which use the tarball.

        lib/libspl/include/sys/tsol/*.h
        lib/libspl/include/util/*.h
2010-07-01 10:37:27 -07:00
Brian Behlendorf 94f23a6856 Ensure NULL is not returned incorrectly after the first call.
I'm surprised this was not caught long ago, but previous the
code actually never did call the function twice so it was
missed.  Anyway, this fixes it.
2010-06-28 10:27:18 -07:00
Brian Behlendorf 91cc4e35bb Updates to linux-libspl
Added print_timestamp() compatibility function, this will be needed
long term but it's a simply enough addition.

Added Solaris style label functions.  This was done simply to aid in
the initial update to onnv_141.  I'm hopeful that after more careful
inspection all of this can be removed and we can integrate with a
more Linux friendly Solution without breaking any compatibility.

Added several missing headers which are required by the updated
version of ZFS.  As usual I just add empty headers if needed because
it's easier than tracking the change against the core ZFS code.

Added SEC, MILLISEC, MICROSEC defines if unavailable.

Added missing xuio structure and typedefs.  I'm hopeful these can
be removed as well once we crack the zero-copy nut under Linux.
2010-06-14 15:47:54 -07:00
Brian Behlendorf c98946e318 Add missing CDDL headers. 2010-05-18 13:38:06 -07:00
Brian Behlendorf 2a80af91ed Remove nvpair_alloc_system.c change in libspl topic branch.
A change to the nvpair implementation should not have been made in
the libspl-topic branch.  This patch fixes that accident by reverting
the change and providing the missing libspl header to allow the
proper building of nvpair_alloc_system.c without the need to modify it.
2010-05-18 12:47:08 -07:00
Brian Behlendorf 9b8aa5f57e Extend libspl as required for linux FMA integration.
These changes lay some of the ground work for supporting something
similar to FMA event under Solaris.  In particular these changes
add or modify the following areas.

First off an implementation of the gethrestime() function is added
to libspl.  Secondly, the missing type processorid_t has been added.
And finally the lib/libspl/include/sys/fm/{protocol.h|util.h} stub
headers have been removed in favor of updating the full versions
in module/zfs/include/sys/fm/{protocol.h|util.h} to work cleanly
in both user and kernel space.
2010-05-14 10:33:00 -07:00
Brian Behlendorf c14cca5c07 Add fm_init/fm_fini stubs for user space FMA update. 2010-04-29 12:25:18 -07:00
Brian Behlendorf ee2a998f37 Move zfs_config.h include to command line -include
Remove the few places in the code where zfs_config.h is included.
It is now added to the gcc compile line to ensure the config results
2010-03-23 14:54:00 -07:00
Ricardo M. Correia c557557e4a Add umem_alloc_aligned() and honor cache_align field for umem caches
Under linux we open block devices with O_DIRECT which means we must
provide aligned memory buffers.  This patch adds the needed umem
interfaces or in the case of caches simply honors alignment provided
at cache creation time.
2010-03-10 11:51:43 -08:00
Brian Behlendorf 238511d277 Add missing sys/dktp/*.h headers to package. 2009-11-02 14:08:08 -08:00
Brian Behlendorf 22925be29c Add in missing header required by libefi. 2009-10-14 16:50:26 -07:00
Brian Behlendorf 8a905e7dcc Update vtoc.h header and add missing mhd.h header needed by libefi. 2009-10-14 15:52:24 -07:00
Brian Behlendorf d7e242199c Header efi_partition.h moved to lib/libefi/include/sys/ 2009-10-09 16:18:39 -07:00
Brian Behlendorf 2b1eaf77d4 Remove zfs_debug.h which is a duplicate of the version in the
modules directory.  Having two copies is just asking for trouble.
2009-07-20 13:18:24 -07:00
Brian Behlendorf 3a63d17619 Add option -fPIC (Position Independent Code) needed for x86_64.
While the generic atomic implementation is not used by default
for x86_64 or x86 builds, we still need to always build it with
-fPIC if we ever want to use it on these platforms.
2009-07-17 09:36:01 -07:00
Brian Behlendorf 18b7a966e4 Minor build fixes from asm-generic change.
- Drop _NOTE(CONSTCOND) usage in libspl this is Solaris specific.
- Resolve conflicting OR and AND long prototypes.
2009-07-16 13:37:59 -07:00
Brian Behlendorf 3ae0e369f3 Add generic user space atomic support.
Futher testing on my powerpc system revealed that the powerpc
specific atomic implemetation was flawed.  Rather than spending
a lot of time correctly reimplementing it in assembly I have
reworked it in to a 100% generic version.  The generic version
will not perform well but it does provide correct sematics.  It
will be used only when there is no architecture specific version
available.  These changes do not impact x86_64 and x86 which have
have correct native implementations.
2009-07-16 09:59:44 -07:00
Ricardo M. Correia 4279777f47 Fixed the zpool and zfs commands returning 'internal error: Out of memory.' due to a failure in nvlist_common().
The failure turned out to be missing macro definitions for little
endian and big endian.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2009-07-14 15:31:03 -07:00
Brian Behlendorf 9cf1451c53 Add ASSERTV macro to simplify removing variables (the V in ASSERTV)
when they are only used in ASSERTs which will be compiled out.
2009-07-09 12:08:40 -07:00
Brian Behlendorf a3d336e1ae Drop support for the Solaris user space thread_t API. This was just
too confusing.  The two consumers of this (ztest.c and taskq.c) have
been updated to use the Solaris kernel space kthread_t API which is
provided by zfs_context.h.
2009-07-08 16:15:42 -07:00
Brian Behlendorf 255ef81e33 Fix 'make dist' on powerpc64 by include an atomic.S place holder file.
Add EXTRA_DIST atomic.c for powerpc64 to ensure source is packaged.
2009-07-01 12:49:10 -07:00
Brian Behlendorf 63845164a6 Use $(RM) macro to ensure -f is passed.
Preserve path for installed headers with nobase.
2009-07-01 11:31:47 -07:00
Brian Behlendorf 3f3cebdcda libspl support for conditional SUBDIRs based on target arch 2009-06-08 16:10:12 -07:00
Brian Behlendorf 2486dd20e5 Set LP64 for powerpc64 and LP32 for just powerpc. 2009-05-22 16:27:59 -07:00
Brian Behlendorf b83a638936 Powerpc64 Compatibility
- Add 64-bit user space atomic support obtained from an old version
  of OpenSolaris which supported ppc.  They are not all 100% fully
  implemented by they are a good first step.
- Add powerpc ISA type.
- Strip out unused ISA defines to prevent any confusion.
2009-05-22 15:00:19 -07:00
Brian Behlendorf 085d04563d Add stub header which is missing in new versions of glibc 2009-03-17 15:53:34 -07:00
Brian Behlendorf caba3cb67e Update specific asm-* arch to generic i386.
Depending on your x86 architecture $target_cpu can evaluate to
any of the following (i386|i486|i586|i686).  Since our local asm
uses only i386 instructions sed is used to map all of these to
i386 and sets $target_arch.  Other arch's are not impacted.
2009-03-13 09:41:55 -07:00
Brian Behlendorf 59541a305e Libspl XDR implementation reorganization
Moved xdr_control() function from static inline in xdr.h in to a
new xdr.c file which was added to the libspl build.  Additionally,
I have removed the 'xdr_bytesrec' typedef which shares the same
name as the struct.  This is what Solaris does, but it's just asking
for trouble.  It has been replaced with an 'xdr_bytesrec_t' typedef.
2009-03-12 14:38:52 -07:00
Ricardo M. Correia db42bfe00a Fixed compilation error due to missing xdr_control() implementation in Linux. 2009-03-11 14:53:41 -07:00
Brian Behlendorf 84b63f7730 Remove all #pragma idents from libspl. 2009-03-11 12:13:44 -07:00
Ricardo M. Correia 4a118b6227 Minor bug fix due to MAXOFFSET_T constant being too large on 32-bit systems. 2009-03-11 10:47:20 -07:00
Brian Behlendorf c05c1aa6f9 Build system and packaging (RPM support) (Part 4)
Complete support for dist install srpm and rpm make targets.
2009-03-10 21:57:56 -07:00
Brian Behlendorf 2cd31b723e Add HW_HOSTID_LEN for libspl use 2009-02-18 16:00:50 -08:00
Brian Behlendorf 3764ec0e1e Fixed sizeof() issue and minor cleanup 2009-01-14 12:03:03 -08:00
Brian Behlendorf 3d2e086e21 Remove u8 support, moved to libu8 2009-01-05 11:52:51 -08:00
Brian Behlendorf 89585b82fa Add missing limits 2008-12-22 15:17:57 -08:00
Brian Behlendorf 091c16c185 Add missing tzfile.h 2008-12-22 15:04:47 -08:00
Brian Behlendorf b0704f1597 Add missing header for ztest 2008-12-22 14:57:15 -08:00
Brian Behlendorf 5f0a629790 Add enable_extended_FILE_stdio #define 2008-12-22 10:34:22 -08:00
Brian Behlendorf e8b703cb46 Add sys/time.h 2008-12-22 10:00:01 -08:00
Brian Behlendorf ae21fcad1c Add missing acl files 2008-12-19 16:49:31 -08:00
Brian Behlendorf 50c5923533 Resolve lingering atomic asm build issues. I think 2008-12-19 16:23:26 -08:00
Brian Behlendorf 0581ade42b Add target_cpu 2008-12-19 16:07:26 -08:00
Brian Behlendorf b66eafc892 Add assembler flags 2008-12-19 15:56:04 -08:00