Commit Graph

2871 Commits

Author SHA1 Message Date
Brian Behlendorf a54f5dddf1 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-03 16:02:41 -07:00
Brian Behlendorf 888942a40f Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-03 16:02:23 -07:00
Brian Behlendorf 63a645c3c8 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-03 16:02:21 -07:00
Brian Behlendorf 1b9fd31ada Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-03 16:02:20 -07:00
Brian Behlendorf 3eff30685e Set zv->zv_objset for zil_replay() case
For the case where we have a zil to replay we need to ensure that
zv->zv_objset contains the current objset.  Since the caller has
a hold on the object set it is safe to pass to zil_replay as part
of the zv.  Call path zvol_create_minor()->zil_replay()->
zil_parse()->zil_replay_log_record()->zvol_replay_write().
2010-08-03 15:57:05 -07:00
Brian Behlendorf 2cb5528450 Merge branch 'fix-bpobj_close' into refs/top-bases/fix-branch 2010-08-03 15:56:53 -07:00
Brian Behlendorf 3253b39fa6 Set bpo->bpo_object = 0 on close to allow retry
During spa_load the spl->spa_deferred_bpobj maybe be opened and closed
multiple times.  It's critical that when the object is closed the
bpo->bpo_object is set to zero to indicate the object is closed.
If it's not during spl_load_retry the spl->spa_deferred_bpobj can
be closes twice resulting in a NULL deref.

This appears to have been fixed upstream the same way.
2010-08-03 15:56:29 -07:00
Brian Behlendorf ec00e089d3 Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-02 15:29:55 -07:00
Brian Behlendorf 640888ec74 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-02 15:29:46 -07:00
Brian Behlendorf c6e0144f79 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-02 15:29:31 -07:00
Brian Behlendorf 8481c9b7bb Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-02 15:29:28 -07:00
Brian Behlendorf 7e9bdac1a8 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-02 15:29:27 -07:00
Brian Behlendorf 8bf0a4e79c Merge branch 'fix-stack-inline' into refs/top-bases/fix-branch 2010-08-02 15:29:25 -07:00
Brian Behlendorf 45c00bf359 Fix spa_load_impl() prototype
Both the forward declaration of spa_load_impl() and the actual
function declaration must match.
2010-08-02 15:24:33 -07:00
Brian Behlendorf 52c23142d4 Revert "Inline zio_execute() to reduce stack use"
This reverts commit 411dd65af1.

gcc version 4.1.2 does not like having differing prototypes
for zio_execute, one version in the .c with inline and one
version in the .h without.  Thus I'm reverting this change
and we'll see how critical this particular stack reduction is.
2010-08-02 15:22:11 -07:00
Brian Behlendorf 9eb75e62cf Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-02 14:17:45 -07:00
Brian Behlendorf bd4701a061 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-02 14:17:36 -07:00
Brian Behlendorf 472cba82e2 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-02 14:17:21 -07:00
Brian Behlendorf 1afa38755a Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-02 14:17:17 -07:00
Brian Behlendorf 3de149b962 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-02 14:17:16 -07:00
Brian Behlendorf 529d515858 Merge branch 'fix-stack-dbuf_hold_impl' into refs/top-bases/fix-branch 2010-08-02 14:12:55 -07:00
Ned Bass 4d3fc57112 Reduce stack usage for recursive dbuf_hold_impl()
This commit preserves the recursive function dbuf_hold_impl() but moves
the local variables and function arguments to the heap to minimize
the stack frame size.  Enough space is initially allocated on the
stack for 20 levels of recursion.  This technique was based on commit
34229a2f2a which reduced stack usage of
traverse_visitbp().

dbuf_hold_impl() is mutually recursive with dbuf_findbp(),
but the latter function is also called from other functions.
Therefore dbuf_findbp() must contain logic to determine how to call
dbuf_hold_impl().  To this end, dbuf_hold_impl() now takes a
struct dbuf_hold_impl_data pointer as an argument.  If that argument
is NULL it calls dbuf_hold_impl() as before, otherwise it calls
__debuf_hold_impl() with a single dbuf_hold_impl_data pointer argument.
As the name implies, dbuf_hold_impl_data stores the arguments and local
variables for dbuf_hold_impl().

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 14:12:31 -07:00
Brian Behlendorf 2a9adcbffb Merge branch 'fix-stack-dsl_scan_visitbp' into refs/top-bases/fix-branch 2010-08-02 14:09:39 -07:00
Ned Bass 410d8c4e15 Reduce dsl_scan_visitbp stack usage by moving blkptr_t to heap
Github issue 22 reported a stack overrun when the zfs module was
loaded, possibly related to the presence of existing zpools created
under zfs-fuse.  The stack trace showed 9 levels of recursion between
dsl_scan_visitbp() and dsl_scan_recurse(). To reduce stack overhead in
that code path, this commit moves the 128 byte blkptr_t data strucutre
in dsl_scan_visitbp() to the heap.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 14:09:15 -07:00
Brian Behlendorf 425b8742a5 Merge branch 'fix-stack-zio_done' into refs/top-bases/fix-branch 2010-08-02 14:06:32 -07:00
Ned Bass d5658668e0 Reduce stack usage of zio_done
Eliminated local variables pointing to members of the zio struct.
Just refer to the struct members directly.  This saved about 32 bytes per
call, but this function can be called recurisvely up to 19 levels deep,
so we potentially save up to 608 bytes.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 14:05:49 -07:00
Brian Behlendorf f3d8ee7357 Merge branch 'fix-stack-vdev_cache_read' into refs/top-bases/fix-branch 2010-08-02 13:57:39 -07:00
Brian Behlendorf 48669030fe Reduce stack in vdev_cache_read
Moving the vdev_cache_entry_t struct ve_search from the stack to
the heap saves ~100 bytes.
2010-08-02 13:57:15 -07:00
Brian Behlendorf 68cfa060f7 Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-02 13:53:23 -07:00
Brian Behlendorf b4c4755bb0 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-02 13:53:15 -07:00
Brian Behlendorf ec04ed0fbb Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-02 13:53:00 -07:00
Brian Behlendorf fd164fdb40 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-02 13:52:57 -07:00
Brian Behlendorf 5d145c70f1 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-02 13:52:56 -07:00
Brian Behlendorf 215b84f12f Merge branch 'fix-stack-inline' into refs/top-bases/fix-branch 2010-08-02 13:49:05 -07:00
Ned Bass 411dd65af1 Inline zio_execute() to reduce stack use
Deep recursive call chains are contributing to segfaults in ztest due to
heavy stack use.  Inlining zio_execute() helps reduce the stack depth of
the zio_notify_parent() -> zio_execute() -> zio_wait() recursive cycle.
I am no longer seeing ztest segfaults in this code path with this change.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:47:49 -07:00
Ned Bass 526d004cf5 Inline dbuf_findbp() to reduce stack use
Deep recursive call chains are contributing to segfaults in ztest due
to heavy stack use.  Inlining dbuf_findbp() helps reduce the stack depth
of the dbuf_findbp() -> dbuf_hold_impl() cycle.  However, segfaults are
still occurring in this code path, so further reductions are still needed.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:47:21 -07:00
Ned Bass dd72f3d647 Inline zio_notify_parent() to reduce stack use
Deep recursive call chains are contributing to segfaults in ztest due
to heavy stack use.  Inlining zio_notify_parent() helps reduce the
stack depth of the zio_notify_parent() -> zio_execute() -> zio_done()
recursive cycle.  I am no longer seeing ztest segfaults in this code
path with this change combined with the zio_done() stack reduction in
the previous commit.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:46:48 -07:00
Brian Behlendorf ca5262f030 Reduce stack by inlining spa_impl_load
The spa_load function may call itself recursively through
the spa_load_impl function.  This call path of spa_load->
spa_load_impl->spa_load->spa_load_impl takes 640 bytes of
stack.  By forcing spa_load_impl to be inlined as part of
spa_load the can be reduced to 448 bytes, for a savings of
192 bytes,
2010-08-02 13:45:28 -07:00
Brian Behlendorf 73759365d7 Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-02 13:22:22 -07:00
Brian Behlendorf 1f3c757320 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-02 13:22:13 -07:00
Brian Behlendorf 37e5e668d6 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-02 13:21:57 -07:00
Brian Behlendorf 0fee5e7ac8 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-02 13:21:53 -07:00
Brian Behlendorf 7b8a233029 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-02 13:21:52 -07:00
Brian Behlendorf bb064e0220 Merge branch 'fix-taskq' into refs/top-bases/fix-branch 2010-08-02 13:21:51 -07:00
Ricardo M. Correia 4ca4dfe9bb Fix taskq_dispatch() call in zio_taskq_dispatch().
The feature branch 'fix-taskq' in Linux's ZFS tree changes the taskq_dispatch()
flag from TQ_SLEEP to TQ_NOSLEEP to avoid sleeping in some circumstances.

However, this has the side effect that taskq_dispatch() now may fail, and since
the return code was not even being checked, it could lead to zio's not being
scheduled to execute.

I'm fixing this in a simplistic but not very elegant way, by just looping until
taskq_dispatch() succeeds.

Signed-off-by: Ricardo M. Correia <ricardo.correia@oracle.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:12:54 -07:00
Brian Behlendorf f58729aa42 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-08-02 12:54:55 -07:00
Brian Behlendorf 7195d18e6a Reduce stack using in ZVOL
The dmu_object_info_t structures which are roughly 60 bytes
have been moved from the stack to the heap.  Every little
bit helps and there's absolutely no reason these temporary
working variables need to be on the stack.
2010-08-02 11:51:21 -07:00
Brian Behlendorf 88b37fbe57 Fix zvol_init() lock inversion
During module load we could deadlock because the zvol_init()
callpath took the spa_namespace_lock before the zvol_state_lock.
The rest of the zvol code takes the locks in the opposite order.
In particular, I observed the following deadlock cause by the
lock inversion.

I've fixed the ording by creating an unlocked version of
zvol_create_minor and zvol_remove_minor.  This allows me to
take the zvol_state_lock before the spa_namespace_lock in
zvol_cr_minors_common and simply call the unlocked version.
2010-08-02 11:50:04 -07:00
Brian Behlendorf f162433deb Minor device creation/removal (Kernel)
With the update to onnv_141 how minor devices were created and
removed for ZVOL was substantially changed.  The updated system
is much more tightly integrated with Solaris's /dev/ filesystem.
This is great for Solaris but bad for Linux.

On the kernel side the ZFS_IOC_{CREATE,REMOVE}_MINOR ioctl
entry points have been re-added.  They now call directly in
to the ZVOL to create the needed minor node and add the sysfs
entried for udev.

Also as part of this change I've decided it would really be
best if all the zvols were in a /dev/zvol directory like on
Solaris.  Organizationally this makes sense and on the code
side it allows us to know a block device is a zvol simply by
where it is located in /dev/.  Unless Solaris there still is
to ./dsk or ./rdsk as part of the path.
2010-08-02 11:49:08 -07:00
Brian Behlendorf e01317ed8c Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-07-28 16:52:47 -07:00
Brian Behlendorf 96ae916dbe Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-07-28 16:52:38 -07:00
Brian Behlendorf 1f1212fc5f Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-07-28 16:52:22 -07:00
Brian Behlendorf 9662934bd9 Add uninstall Makefile targets
Extend the Makefiles with an uninstall target to cleanly
remove a package which was installed with 'make install'.

Additionally, ensure a 'depmod -a' is run as part of the
install to update the module dependency information.
2010-07-28 16:47:26 -07:00
Brian Behlendorf 45fab7f26c Merge branch 'linux-kernel-module' into refs/top-bases/linux-zfs-branch 2010-07-27 09:51:16 -07:00
Ricardo M. Correia 2a9e09ec68 Export DMU/ZFS symbols required by Lustre
The dmu_objset_pool() and dmu_objset_name() symbols are needed
by Lustre and should be exported.

Signed-off-by: Ricardo M. Correia <ricardo.correia@oracle.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-07-27 09:46:23 -07:00
Brian Behlendorf bda31592bf Merge branch 'linux-have-mlslabel' into refs/top-bases/linux-zfs-branch 2010-07-22 16:57:57 -07:00
Brian Behlendorf 66b2805477 Disable mlslabel support in Linux
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 thus I am disabling
it under Linux.  Equivilant functionality could be added
at some point in the future.
2010-07-22 16:55:50 -07:00
Brian Behlendorf 0c1211f8fb Merge branch 'linux-kernel-device' into refs/top-bases/linux-zfs-branch 2010-07-22 16:50:42 -07:00
Brian Behlendorf c979e4bdf8 Move mlslabel hunk to new linux-have-mlslabel
Simply relocate this hunk with a little tweak to the new
linux-have-mlslabel topic branch which has been created to
disable this support on linux.
2010-07-22 16:46:27 -07:00
Brian Behlendorf 0e533b7459 Best effort for minor device removal.
We should just make a best effort when removing zvol minors
from the system during destroy.  Failure here should never
prevent the pool from being destroyed.  For example, if a
pool is so heavily damaged it cannot be opened (part of the
minor removal) we still want to be able to destroy it.  The
worst case here is we may orphan a few minors but even that
is unlikely and not particularly harmful.
2010-07-21 14:20:56 -07:00
Brian Behlendorf 7e004b0643 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-07-21 14:20:23 -07:00
Brian Behlendorf 39f3185fed Merge branch 'linux-events' into refs/top-bases/linux-zfs-branch 2010-07-21 12:50:17 -07:00
Brian Behlendorf 1a493a9555 Add vdev_state to common post info
This was done because there are now lots of resource.fs.zfs.statechange
events being posted but they do not include the state.  For the moment
the state must always be healthy but there's no harm in making this
explicit.
2010-07-21 12:51:14 -07:00
Brian Behlendorf f275e82de9 Add FM_EREPORT_TIME when event is posted
Previously I was adding the FM_EREPORT_TIME time when the nvlist
was constructed.  However, with the update to onnv_141 these
ereport nvlists are now constructed in several places and it
doesn't make sense for each of them to have to add this common
bit of info.  To handle this the FM_EREPORT_TIME is now only
added once when the event is posted.
2010-07-21 12:51:11 -07:00
Brian Behlendorf 8aff93fb24 Merge branch 'linux-kernel-device' into refs/top-bases/linux-zfs-branch 2010-07-20 16:16:49 -07:00
Ricardo M. Correia 10d4848350 Display DEBUG keyword during module load when --enable-debug is used.
Just to be clear this only indicates that the ZFS code was built
with or without debugging enabled.  It says nothing about about
how the SPL was built, they can be build differently by design.

Signed-off-by: Ricardo M. Correia <ricardo.correia@oracle.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-07-20 16:16:44 -07:00
Brian Behlendorf 25974dccd7 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-07-20 13:44:41 -07:00
Brian Behlendorf ecf3f0b14f Merge branch 'linux-have-spl-debug' into refs/top-bases/linux-zfs-branch 2010-07-20 13:44:40 -07:00
Brian Behlendorf 99d3042bc8 Update to use reworked SPL debugging
This change updates the ZFS code to use the slightly reworked
SPL debug infrastructure.  It also explicitly sets all ZFS
dprintf debugging to use the SS_USER1 subsystem for logging
in the SPL debug log.
2010-07-20 13:39:28 -07:00
Brian Behlendorf 49c7595ad8 Replace SBUG with PANIC macro
The SBUG macro has been removed from the SPL and replaced
with PANIC which is closer to an existing API.  Simply
update the usage in vdev_disk.c.
2010-07-20 13:36:50 -07:00
Brian Behlendorf 26fe533aaf Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-07-14 12:49:01 -07:00
Brian Behlendorf fc3e47c6d4 Corrently handle return code in blk_end_request_x
This was caught under Debian Lenny builds because they are one of
the few/only current distros based on a 2.6.26 kernel.  In one
of the build conditionals I accidently failed to assign the
return code to rc before returning.
2010-07-14 12:45:16 -07:00
Brian Behlendorf 138205187e Merge branch 'linux-events' into refs/top-bases/linux-zfs-branch 2010-07-12 10:25:07 -07:00
Brian Behlendorf 2c03b4439a Merge branch 'linux-zpios' into refs/top-bases/linux-zfs-branch 2010-07-12 10:24:04 -07:00
Brian Behlendorf d134105bba Linux 2.6.34 compat: add_range() symbol collision
The prototype for an add_range() function was added to the kernel
header include/linux/range.h which conflicts with the static
add_range() defined in zfs_fm.c.  To resolve the conflict all
range functions in zfs_fm.c have been prefixed with zei which
is short for the zfs_ecksum_info struct since all of these
functions operate on that base structure.
2010-07-12 10:13:07 -07:00
Brian Behlendorf 9820fd89a4 Explicitly cast sizeof() to avoid format warnings
Simply explicity cast sizeof() to a 'long int' these numbers will
always be small and the removes all ambiguity.
2010-07-12 10:12:19 -07:00
Brian Behlendorf 3af0250f6d Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-07-02 12:26:06 -07:00
Brian Behlendorf 45cb33f64f Ensure devices are always created/removed
Devices were only being created at module load time or when a
dataset was created.  Similiar devices were not always being
removed at all the correct times.  This patch updates all the
places where devices should either be created or removed.  I'm
reasonably sure I got them all but if theres a case I missed
we can catch it with a follow up patch.

        module load/unload
        zfs create/remove
        zpool import/export
        zpool destroy

This patch also adds a simple regression test to zconfig.sh
to ensure zpool import/export is basically working properly.
This test specifically checks that devices are created
properly, removed after export, created after import, and
removed as a consequence of a zpool destroy.
2010-07-02 12:21:39 -07:00
Brian Behlendorf 122e5b44e1 Add missing mutex_exit(&zvol_state_lock)
With the recent ZVOL update zvol_set_volblocksize() accidentally
lost its mutex_exit().  This was noticed when zvol_create_minor()
blocked on the zvol_state_lock while it was holding the
spa_namespace_lock().  This caused everything to get blocked
up and hung the system.
2010-07-02 12:19:54 -07:00
Brian Behlendorf e983ee681f Merge commit 'refs/top-bases/linux-events' into linux-events 2010-06-29 16:59:40 -07:00
Brian Behlendorf ef488d53dd Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2010-06-29 16:59:31 -07:00
Brian Behlendorf f1f5c3783c Merge commit 'refs/top-bases/linux-kernel-device' into linux-kernel-device 2010-06-29 16:59:22 -07:00
Brian Behlendorf 68a2ae2594 Merge commit 'refs/top-bases/linux-zpios' into linux-zpios 2010-06-29 16:58:37 -07:00
Brian Behlendorf 3b0e8e41d1 Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-06-29 16:58:10 -07:00
Brian Behlendorf f5cb411fc1 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-06-29 16:58:01 -07:00
Brian Behlendorf 068b74a60e Merge commit 'refs/top-bases/linux-have-spl-debug' into linux-have-spl-debug 2010-06-29 16:57:52 -07:00
Brian Behlendorf 9c4837d5da Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-06-29 16:57:45 -07:00
Brian Behlendorf 5387c446cf Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-06-29 16:57:41 -07:00
Brian Behlendorf f28ca65b92 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-06-29 16:57:41 -07:00
Brian Behlendorf 015677660a Merge branch 'fix-stack-traverse_visitbp' into refs/top-bases/fix-branch 2010-06-29 16:57:39 -07:00
Brian Behlendorf f20301b41b Minor fix to ensure tv_depth is there when debugging is disabled. 2010-06-29 16:52:42 -07:00
Brian Behlendorf 4e8b0b7409 Merge commit 'refs/top-bases/linux-events' into linux-events 2010-06-29 11:13:48 -07:00
Brian Behlendorf 3658e74315 Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2010-06-29 11:13:41 -07:00
Brian Behlendorf 7b10b97c18 Merge commit 'refs/top-bases/linux-kernel-device' into linux-kernel-device 2010-06-29 11:13:32 -07:00
Brian Behlendorf a0e90a15ec Merge commit 'refs/top-bases/linux-zpios' into linux-zpios 2010-06-29 11:12:51 -07:00
Brian Behlendorf 91023a3daf Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-06-29 11:12:26 -07:00
Brian Behlendorf 68b79f258d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-06-29 11:12:17 -07:00
Brian Behlendorf e52951a257 Merge commit 'refs/top-bases/linux-have-spl-debug' into linux-have-spl-debug 2010-06-29 11:12:09 -07:00
Brian Behlendorf a1ccea7c7f Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-06-29 11:12:03 -07:00
Brian Behlendorf 2eceb0c47a Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-06-29 11:12:00 -07:00