Switch branches/tags
Nothing to show
Commits on Dec 9, 2010
  1. Fixes trash issue.

    jasonrm committed with alblue Dec 9, 2010
    OSX includes the '.' and '..' as directories in the count, so
    anything that tries to list a directory will see both of these
    as well. This confuses the Finder when emptying trash because
    it counts just the files that are there. So only report on
    attributes that are avaialble for real files.
    Fixed by Jason R. McNeil.
    Signed-off-by: Alex Blewitt <>
Commits on Jul 19, 2010
  1. Merge commit 'onnv_74' into merge

    alblue committed Jul 19, 2010
  2. Merge commit 'maczfs_73''

    alblue committed Jul 19, 2010
    This merges in changes from the onnv_73 stream into MacZFS.
    Signed-off-by: Alex Blewitt <>
  3. Added .hgtags to .gitignore

    alblue committed Jul 19, 2010
    Hg stores its tags in a file called '.hgtags' and it gets swept
    in by accident occasionally when doing merges. Fix this by adding
    it to the .gitignore list so it doesn't get merged.
  4. Increase priority of the zfs.fs filing system

    alblue committed Jul 19, 2010
    The original Apple zfs.fs filing system has a priorty
    of 1000 (the read-only one may have had a number greater
    than that).
    However, when ZFS was dropped from 10.6, Apple planted a
    nofs.fs which took priority over the (Apple-shipped) ZFS
    implementation. The nofs.fs has a priorty of 900.
    Leapfrog the nofs.fs back again so that we get priority,
    but without having to do any changing of the local file
    system to make it happen.
Commits on Jul 18, 2010
  1. Allow version to have --long qualifier

    alblue committed Jul 18, 2010
    If --long is given to, then it will print out
    a long version instead of just the number. In other words:
    ./ --long
    maczfs_72-1-7-g383f329: 72.1.7
  2. Fixed installer permissions

    alblue committed Jul 18, 2010
    When installing in a new environment, the permissions weren't
    being recorded correctly. So instead fix them so they'll be
    correctly generated either way.
  3. Add gzip support for filesystem compression

    alblue committed Jul 18, 2010
    Using the built-in Kernel libraries, add gzip compression
    to the ZFS support. This was made possible thanks to the
    10a286 bits that Apple released under the terms of the CDDL.
    The default compression is still off, and on will default to
    lzjb. gzip is an alias for gzip-6; you can also select gzip-1..9
    as compression levels. Using gzip compression will give better
    compression; however, the lzjb is faster for most workloads.
    Compression of 1.5 times for source code with lzjb is average;
    gzip-1 will give 2.5 times and gzip-9 will give 3 times. However,
    the additional procesing speed to compress means that gzip-9 is
    only really suitable for archiving purposes. The read decompression
    is similar across all compression levels.
    Signed-off-by: Alex Blewitt <>
  4. Changed references from struct vnode to vnode_t

    alblue committed Jul 18, 2010
    Fixed all references for struct vnode to vnode_t, removing a whole
    bunch of #ifdef merges out of the way.
    Issue: 27
  5. Don't attempt to build 10.6 code on 10.5

    alblue committed Jul 18, 2010
    It doesn't work, and we just get the same stuff again. So
    conditionally build it if we're not on 10.5, identified by
    kernel release 9.8.0.
  6. Allow vnode_t to be used instead of specific ifdefs

    alblue committed Jul 18, 2010
    The OpenSolaris codebase uses vnode_t as struct vnode, whereas
    Mac OS X uses vnode_t as struct vnode *. So the types aren't
    compatible, and we can't use a typedef to hook them up.
    Instead, inspired by the 10a286 change, we use #define to replace
    all occurances of vnode_t with struct vnode, such that in the
    code, we refer to the right piece. However, we need to be careful
    about the places where the standard system libraries are brought in;
    to do that, hooks for the maczfs_{file,ubc,mount,libc) have been
    provided which undo that typedef on the fly.
Commits on Jul 17, 2010
  1. Fixes Issue 33 - remove hackish code comment

    alblue committed Jul 17, 2010
    The comment wasn't really adding much, and the additional lines
    had since been added to both 10a286 and onnv_72, so just clean up
  2. Remove workarounds for atomic_add_64

    alblue committed Jul 17, 2010
    Since atomic_add_64 exists and is compilable on the
    various platforms, use that.
    Issue: 26
  3. Use GCC 4.2 on all systems, rather than the default

    alblue committed Jul 17, 2010
    This will use GCC 4.2 rather than inheriting 'system default'
    so that the same compiler is used on both 10.5.8 and 10.6 systems
  4. Provide a way of disabling 'stalk' messages

    alblue committed Jul 17, 2010
    The zfs_znode.c has a znode_stalker function, which
    generates voluminous input when compiled with ZFS_DEBUG
    (which the debug builds are enabled with). In addition,
    this will build up a queue of events in the 'z_stalker'
    list, which could grow large. Provide a sysctl variable
    vfs.maczfs.debug.stalk to turn this off, and have it
    disabled by default..
    Moved Mac-specific source to /usr/src/maczfs, and kernel-
    specific code into /usr/src/maczfs/kernel, in an attempt
    to clean up some of the code.
Commits on Jul 16, 2010
  1. Added LICENSE.txt and added to installer

    alblue committed Jul 16, 2010
    The installer now has an icon of the ZFS logo, along with
    the README.txt and LICENSE.txt at the root level of the project.
    In addition, tidied up a few loose ends of files in the wrong
    location, and prevented non-existant files from being built.
Commits on Jul 15, 2010
  1. Added build configuration for LLVM

    alblue committed Jul 13, 2010
    This adds an LLVM build configuration (using the Xcode 3.2 LLVM 1.5)
    as well as refactoring the build to take advantage of LLVM.
    Since LLVM is not on 10.5, we can't make this the default for all
    projects, though it is about 25-30% faster at building.
    In addition, it gives good static analysis advice, which makes it
    easier to scan code for problems.
  2. Added installer for OSX 10.5 and 10.6

    alblue committed Jul 15, 2010
    It is now possible to build a versioned installer using
    support/ This will generate a tag based on the
    maczfs_xx(-yy) most recent history, with the number of
    descendant commits since then.
  3. Moved files to .attic

    alblue committed Jul 12, 2010
    This creates a .attic directory (so it doesn't get shown)
    and deletes files that are no longer relevant to the project.
    With an LLVM build that includes all, this doesn't work in any case.
  4. Apply LLVM recommended changes

    alblue committed Jul 13, 2010
    A number of places in the Solaris code had code paths that would
    return garbage due to uninitialised variables. Running through
    the cleanup that is provided as part of LLVM enabled a number of
    these issues to be closed, as well as identifying situations in which
    the Apple ported code could be tightened up as well.
  5. Use snowflake icon for ZFS drives

    alblue committed Jul 4, 2010
    The snowflake icon was voted the most popular icon to use for
    a ZFS implementation; this was taken from the one enterred in
    Bug: 19
  6. Use identifiers and versions

    alblue committed Jul 5, 2010
    The version number is now calculated automatically
    and is updated whenever the project is built, based
    on the git version. The version number is calculated
    from git describe as:
Commits on Mar 9, 2010
  1. Updated build environemnt variables for 10.5/10.6

    alblue committed Mar 9, 2010
    The build environment used a ZFS_LEOPARD_ONLY flag which
    was being used for 10.5 builds. Remove this from the kernel,
    and have the flag auto-detected for 10.5 builds based on the
    compiler version.
    This was implemented incompletely before; the auto-detection
    needed to be placed higher up (since a number o fheader files
    in zfs_context also used this) and the zfs.kext included a
    duplicate definition of this environment variable which prevented
    use on 10.6 systems.
    Tested on Intel 10.5 and Intel 10.6
Commits on Mar 8, 2010
  1. Fixes Issue 39 - Crash at zfs_vnop_reclaim

    alblue committed Mar 8, 2010
    When we reclaim a node, it's possible that there isn't any ZFS data
    associated with it (either because it wasn't there in the first place,
    or because it's been subsequently collected). These were causing panics.
    If we detect whether the node has been used or not, and select
    appropriately, then we don't panic.
    Signed-off-by: Alex Blewitt <>
  2. Fixes Issue 36 - crash when exporting pool/unloading kernel extension

    alblue committed Mar 8, 2010
    When we free the cache nodes, it's possible that we end up with a cache
    node that's null, owing to the callpath
      kmem_fini() ->
      kmem_cache_free(cp->cache_magtype->mt_cache, mp) ->
      null dereference
    By putting a null check here, we don't cause a panic
    Signed-off-by: Alex Blewitt <>
  3. Added testcases

    alblue committed Mar 8, 2010
    These are helper scripts, assuming that private keys are set up to
    automatically log into a machine called (or aliased) to 'target',
    and that the user has a suitable sudo environment in order to execute
    passwordless sudo commands.
    Alternatively, they may be copied and pasted onto the local machine,
    via a target kicked off with the zfs-target-installer script found in
    the support directory.
    This assumes the files are loaded into /target, and that the PATH and
    DYLD_LIBRARY_PATH are set up to be able to execute commands from the
    /target path.
    Signed-off-by: Alex Blewitt <>
  4. Added support scripts to facilitate remote debugging

    alblue committed Mar 8, 2010
    These scripts allow you to do remote debugging of a two-machine
    set-up. The assumption is that the pre-requisites at
    have been followed (particularly the sudo nvram boot-args="debug=0x14e")
    and that the machine is contactable via the name 'target'.
      Copies over a build (assumed from current directory) which
      roughly follows the steps outlined in the above document.
      Executes the debugger setup scripts. Assumes that the Kernel Debug SDK
      is mounted at the default place. Note that the add-kext command needs
      you to hit 'y' before it will do anything; it then spins trying to
      connect to the remote machine. (If the target isn't in debug mode,
      then it will spin quietly; after a while, it will abort. If you hit
      a kernel panic, and you've set up the boot-args, then you'll be dropped
      waiting into the debugger, and it should connect automatically.
    Signed-off-by: Alex Blewitt <>
Commits on Mar 7, 2010
Commits on Mar 5, 2010
  1. Merge commit 'onnv_72' into 'mac-zfs'

    alblue committed Mar 5, 2010
    This pulls in all the changes from the OpenSolaris ONNV codebase
    up to and including onnv_72. Diffs between this and the pre_merge_72
    will show changes that are applicable to the Mac ZFS side, and
    one can also generate diffs from onnv_72 to see the difference on the
    Apple side.
    This also fixes a number of small issues, including
    Issue 22 - pools created at version 6
    Issue 23 - deprecate readonly kernel extension
    Issue 29 - merge with onnv_72
    In addition, this build also sets up the Release build for 10.5 to
    build a Universal 32-bit binary (ppc and i386) and the 10.6 build
    to generate a Universao 32/64-bit binary (i386 and x86_64).
    Signed-off-by: Alex Blewitt <>
Commits on Feb 18, 2010
  1. Remove detritus

    alblue committed Feb 18, 2010