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.
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.
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.
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.
- 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.
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.
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.