Commit Graph

76 Commits

Author SHA1 Message Date
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 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 96095c3a17 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-06-14 16:10:51 -07:00
Brian Behlendorf 800b7a03e1 Update linux-kernel-disk ZVOL implementation
The ZVOL interfaces changed significantly with the latest update.  I've
updated the Linux version of the code to handle this and it looks like
the net result has been a simpler implementation which is good!  Plus,
I'm relatively sure the ZIL integration is right this time although it
needs some serious crash testing to verify that.

Also minor additions to vdev_disk for .hold and .rele callbacks.
Currently, they do nothing and I may be able to simply stub them out
with NULLs for Linux since opening the device in Linux should have
much the same effort.  More investigation is needed though since
the ZFS interface may make some demands here I'm overlooking.
2010-06-14 16:02:03 -07:00
Brian Behlendorf e796e2a03e Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-06-14 15:37:10 -07:00
Brian Behlendorf b5ba75f385 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2010-06-14 15:37:03 -07:00
Brian Behlendorf dfe881c0ef Merge branch 'gcc-unused' into refs/top-bases/gcc-branch 2010-06-14 15:37:01 -07:00
Brian Behlendorf 2c95012288 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2010-06-14 15:36:59 -07:00
Brian Behlendorf 3135b5a26a Update gcc-c90 minor updates
Originally these changes were on other gcc-* topic branches but
because c90 touches the same bit of code and I'd like to keep all
the gcc-* branches completely parallel I've moved these few bits
over here.  This is one of the downsides of not just having one
big patch stack.
2010-06-14 15:32:54 -07:00
Brian Behlendorf d8e123dc27 Update gcc-unused
Fix new instances or changes in gcc flagged unused code.  These are
mostly related to variables which are not used when debugging is
disabled and the ASSERTs are compiled out.
2010-06-14 15:29:48 -07:00
Brian Behlendorf b41143632b Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch
Conflicts:
	cmd/zpool/zpool_main.c
	cmd/zpool/zpool_vdev.c
	cmd/ztest/ztest.c
	lib/libzfs/libzfs_dataset.c
	lib/libzfs/libzfs_import.c
	lib/libzfs/libzfs_mount.c
	lib/libzfs/libzfs_pool.c
	lib/libzfs/libzfs_sendrecv.c
	lib/libzpool/include/sys/zfs_context.h
	module/zcommon/include/sys/fs/zfs.h
	module/zcommon/zfs_comutil.c
	module/zfs/arc.c
	module/zfs/dmu.c
	module/zfs/dmu_objset.c
	module/zfs/dmu_send.c
	module/zfs/dmu_tx.c
	module/zfs/dsl_dataset.c
	module/zfs/dsl_dir.c
	module/zfs/dsl_scrub.c
	module/zfs/fm.c
	module/zfs/include/sys/dmu.h
	module/zfs/include/sys/fm/fs/zfs.h
	module/zfs/include/sys/fm/protocol.h
	module/zfs/include/sys/spa.h
	module/zfs/include/sys/zfs_context.h
	module/zfs/include/sys/zfs_ioctl.h
	module/zfs/include/sys/zvol.h
	module/zfs/spa.c
	module/zfs/spa_boot.c
	module/zfs/spa_history.c
	module/zfs/spa_misc.c
	module/zfs/txg.c
	module/zfs/vdev.c
	module/zfs/zfs_fm.c
	module/zfs/zfs_ioctl.c
	module/zfs/zfs_replay.c
	module/zfs/zfs_znode.c
	module/zfs/zil.c
	module/zfs/zio.c
2010-05-28 22:14:39 -07:00
Brian Behlendorf e27754d9e8 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch
Conflicts:
	cmd/ztest/ztest.c
	lib/libzfs/libzfs_sendrecv.c
	module/zfs/dmu_objset.c
	module/zfs/dnode.c
	module/zfs/dnode_sync.c
	module/zfs/dsl_dataset.c
	module/zfs/include/sys/dmu_tx.h
	module/zfs/include/sys/txg.h
	module/zfs/spa_history.c
2010-05-28 15:45:38 -07:00
Brian Behlendorf 3e2be634a5 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:
	cmd/zdb/zdb.c
	cmd/zdb/zdb_il.c
	cmd/zfs/zfs_main.c
	cmd/zfs/zfs_util.h
	cmd/zinject/zinject.h
	cmd/zpool/zpool_main.c
	cmd/zpool/zpool_util.c
	cmd/ztest/ztest.c
	lib/libnvpair/include/libnvpair.h
	lib/libnvpair/libnvpair.c
	lib/libzfs/libzfs_changelist.c
	lib/libzfs/libzfs_config.c
	lib/libzfs/libzfs_dataset.c
	lib/libzfs/libzfs_import.c
	lib/libzfs/libzfs_mount.c
	lib/libzfs/libzfs_pool.c
	lib/libzfs/libzfs_sendrecv.c
	module/avl/avl.c
	module/avl/include/sys/avl.h
	module/nvpair/include/sys/nvpair.h
	module/nvpair/nvpair.c
	module/zcommon/include/zfs_comutil.h
	module/zcommon/include/zfs_prop.h
	module/zcommon/zfs_comutil.c
	module/zfs/arc.c
	module/zfs/dbuf.c
	module/zfs/dmu.c
	module/zfs/dmu_objset.c
	module/zfs/dmu_zfetch.c
	module/zfs/dnode_sync.c
	module/zfs/dsl_dataset.c
	module/zfs/dsl_pool.c
	module/zfs/dsl_prop.c
	module/zfs/dsl_synctask.c
	module/zfs/include/sys/dmu_tx.h
	module/zfs/include/sys/dmu_zfetch.h
	module/zfs/include/sys/dsl_synctask.h
	module/zfs/include/sys/refcount.h
	module/zfs/include/sys/txg.h
	module/zfs/include/sys/uberblock.h
	module/zfs/include/sys/zap_leaf.h
	module/zfs/include/sys/zfs_debug.h
	module/zfs/include/sys/zfs_znode.h
	module/zfs/include/sys/zio_compress.h
	module/zfs/include/sys/zvol.h
	module/zfs/lzjb.c
	module/zfs/metaslab.c
	module/zfs/refcount.c
	module/zfs/sha256.c
	module/zfs/spa.c
	module/zfs/spa_boot.c
	module/zfs/uberblock.c
	module/zfs/vdev.c
	module/zfs/zap_micro.c
	module/zfs/zfs_ioctl.c
	module/zfs/zfs_replay.c
	module/zfs/zio.c
	module/zfs/zio_compress.c
2010-05-28 15:34:57 -07:00
Brian Behlendorf d60fc5ca30 Merge commit 'refs/top-bases/gcc-unused' into gcc-unused
Conflicts:
	module/zfs/dbuf.c
	module/zfs/dmu.c
	module/zfs/dmu_objset.c
	module/zfs/dnode_sync.c
	module/zfs/dsl_dataset.c
	module/zfs/dsl_prop.c
	module/zfs/metaslab.c
	module/zfs/spa.c
	module/zfs/vdev.c
	module/zfs/zap_micro.c
2010-05-28 15:07:36 -07:00
Brian Behlendorf 957b7b41d4 Merge commit 'refs/top-bases/gcc-c90' into gcc-c90
Conflicts:
	cmd/zdb/zdb.c
	cmd/ztest/ztest.c
	module/zfs/dbuf.c
	module/zfs/dsl_dataset.c
	module/zfs/dsl_scrub.c
	module/zfs/spa.c
	module/zfs/vdev.c
	module/zfs/zio.c
2010-05-28 14:19:22 -07:00
Brian Behlendorf 428870ff73 Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
Brian Behlendorf feb723fa7d Merge branch 'linux-events' into refs/top-bases/linux-zfs-branch 2010-05-14 12:55:10 -07:00
Brian Behlendorf 97d19a5e45 Add linux-events topic branch for zevent handling.
This topic branch leverages the Solaris style FMA call points
in ZFS to create a user space visible event notification system
under Linux.  This new system is called zevent and it unifies
all previous Solaris style ereports and sysevent notifications.

Under this Linux specific scheme when a sysevent or ereport event
occurs an nvlist describing the event is created which looks almost
exactly like a Solaris ereport.  These events are queued up in the
kernel when they occur and conditionally logged to the console.
It is then up to a user space application to consume the events
and do whatever it likes with them.

To make this possible the existing /dev/zfs ABI has been extended
with two new ioctls which behave as follows.

* ZFS_IOC_EVENTS_NEXT
Get the next pending event.  The kernel will keep track of the last
event consumed by the file descriptor and provide the next one if
available.  If no new events are available the ioctl() will block
waiting for the next event.  This ioctl may also be called in a
non-blocking mode by setting zc.zc_guid = ZEVENT_NONBLOCK.  In the
non-blocking case if no events are available ENOENT will be returned.
It is possible that ESHUTDOWN will be returned if the ioctl() is
called while module unloading is in progress.  And finally ENOMEM
may occur if the provided nvlist buffer is not large enough to
contain the entire event.

* ZFS_IOC_EVENTS_CLEAR
Clear are events queued by the kernel.  The kernel will keep a fairly
large number of recent events queued, use this ioctl to clear the
in kernel list.  This will effect all user space processes consuming
events.

The zpool command has been extended to use this events ABI with the
'events' subcommand.  You may run 'zpool events -v' to output a
verbose log of all recent events.  This is very similar to the
Solaris 'fmdump -ev' command with the key difference being it also
includes what would be considered sysevents under Solaris.  You
may also run in follow mode with the '-f' option.  To clear the
in kernel event queue use the '-c' option.

$ sudo cmd/zpool/zpool events -fv
TIME                        CLASS
May 13 2010 16:31:15.777711000 ereport.fs.zfs.config.sync
        class = "ereport.fs.zfs.config.sync"
        ena = 0x40982b7897700001
        detector = (embedded nvlist)
                version = 0x0
                scheme = "zfs"
                pool = 0xed976600de75dfa6
        (end detector)

        time = 0x4bec8bc3 0x2e5aed98
        pool = "zpios"
        pool_guid = 0xed976600de75dfa6
        pool_context = 0x0

While the 'zpool events' command is handy for interactive debugging
it is not expected to be the primary consumer of zevents.  This ABI
was primarily added to facilitate the addition of a user space
monitoring daemon.  This daemon would consume all events posted by
the kernel and based on the type of event perform an action.  For
most events simply forwarding them on to syslog is likely enough.
But this interface also cleanly allows for more sophisticated
actions to be taken such as generating an email for a failed drive
2010-05-14 12:40:44 -07:00
Brian Behlendorf 147adbe815 Merge branch 'linux-docs' into refs/top-bases/linux-zfs-branch 2009-08-18 14:18:40 -07:00
Brian Behlendorf 5d83878f46 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 14:18:34 -07:00
Brian Behlendorf 8767bb3fdd Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-08-18 14:18:31 -07:00
Brian Behlendorf d42b88372f Required build 121 updates for gcc-c90 2009-08-18 14:07:25 -07:00
Brian Behlendorf c67303e092 Merge branch 'linux-docs' into refs/top-bases/linux-zfs-branch
Conflicts:

	lib/libzfs/libzfs_dataset.c
	module/zfs/dsl_dataset.c
	module/zfs/rrwlock.c
	module/zfs/spa_history.c
	module/zfs/zfs_ioctl.c
2009-08-18 12:26:09 -07:00
Brian Behlendorf b99b422796 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-08-18 12:08:58 -07:00
Brian Behlendorf 3a37442dc7 Merge commit 'refs/top-bases/gcc-unused' into gcc-unused 2009-08-18 12:06:53 -07:00
Brian Behlendorf e5e4fadc34 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:

	module/zfs/dmu.c
	module/zfs/dsl_deleg.c
	module/zfs/rrwlock.c
	module/zfs/vdev_raidz.c
2009-08-18 12:04:53 -07:00
Brian Behlendorf 0f80e41c89 Merge commit 'refs/top-bases/gcc-c90' into gcc-c90
Conflicts:

	module/zfs/spa_misc.c
	module/zfs/vdev_label.c
2009-08-18 11:55:36 -07:00
Brian Behlendorf 45d1cae3b8 Rebase master to b121 2009-08-18 11:43:27 -07:00
Brian Behlendorf 999f693b85 Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch 2009-07-09 12:23:46 -07:00
Brian Behlendorf 6db8882b78 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-09 12:23:39 -07:00
Brian Behlendorf 76bf02aebb Merge branch 'gcc-unused' into refs/top-bases/gcc-branch 2009-07-09 12:23:36 -07:00
Brian Behlendorf f1d99c0653 Revert to original debugging code and wrap any variabled used only
within an ASSERT with the ASSERTV macro which will ensure it will
be removed when the ASSERTs are commented out.  This makes gcc much
happier, makes the variables usage explicit, and removes the need
for the compiler to detect it is unused and do the right thing.
2009-07-09 12:10:52 -07:00
Brian Behlendorf 149eea21db Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch 2009-07-09 10:39:49 -07:00
Brian Behlendorf aa8ed32ee8 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-07-09 10:39:43 -07:00
Brian Behlendorf 9e394e10a9 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2009-07-09 10:39:41 -07:00
Brian Behlendorf 43af29de5f Type int accidentally not declared at the top of the function. 2009-07-09 10:19:02 -07:00
Brian Behlendorf 149c4b2731 Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch
Conflicts:

	cmd/ztest/ztest.c
	lib/libzfs/libzfs_pool.c
	module/zcommon/zfs_namecheck.c
	module/zfs/dmu.c
	module/zfs/include/sys/dmu.h
	module/zfs/include/sys/zfs_fuid.h
	module/zfs/spa.c
	module/zfs/vdev.c
	module/zfs/zap_micro.c
	module/zfs/zfs_fuid.c
	module/zfs/zfs_ioctl.c
	module/zfs/zfs_vfsops.c
	module/zfs/zfs_znode.c
2009-07-06 13:40:29 -07:00
Brian Behlendorf a1ccb00b7e Merge branch 'gcc-branch' into refs/top-bases/zfs-branch
Conflicts:

	cmd/ztest/ztest.c
	module/zfs/zil.c
2009-07-06 13:11:34 -07:00
Brian Behlendorf 9550da2ba6 Merge commit 'refs/top-bases/gcc-unused' into gcc-unused
Conflicts:

	module/zfs/arc.c
	module/zfs/zio.c
2009-07-02 16:58:33 -07:00
Brian Behlendorf e2b2597751 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:

	cmd/zdb/zdb_il.c
	cmd/zfs/zfs_main.c
	cmd/zinject/zinject.c
	cmd/ztest/ztest.c
	lib/libzfs/libzfs_dataset.c
	lib/libzfs/libzfs_graph.c
	module/zcommon/include/sys/fm/fs/zfs.h
	module/zcommon/include/zfs_deleg.h
	module/zcommon/include/zfs_namecheck.h
	module/zcommon/zfs_deleg.c
	module/zcommon/zfs_namecheck.c
	module/zcommon/zprop_common.c
	module/zfs/arc.c
	module/zfs/dmu.c
	module/zfs/dmu_object.c
	module/zfs/dmu_objset.c
	module/zfs/dsl_pool.c
	module/zfs/dsl_prop.c
	module/zfs/fletcher.c
	module/zfs/include/sys/dsl_deleg.h
	module/zfs/include/sys/dsl_prop.h
	module/zfs/include/sys/metaslab_impl.h
	module/zfs/include/sys/spa_boot.h
	module/zfs/include/sys/zap.h
	module/zfs/include/sys/zap_impl.h
	module/zfs/include/sys/zfs_context.h
	module/zfs/include/sys/zfs_ctldir.h
	module/zfs/include/sys/zfs_dir.h
	module/zfs/include/sys/zfs_fuid.h
	module/zfs/include/sys/zfs_ioctl.h
	module/zfs/spa.c
	module/zfs/spa_errlog.c
	module/zfs/spa_history.c
	module/zfs/zap.c
	module/zfs/zap_leaf.c
	module/zfs/zap_micro.c
	module/zfs/zfs_ioctl.c
	module/zfs/zio.c
2009-07-02 16:49:11 -07:00
Brian Behlendorf e9f14862a5 Merge commit 'refs/top-bases/gcc-c90' into gcc-c90
Conflicts:

	module/zfs/dmu_objset.c
	module/zfs/spa.c
	module/zfs/vdev.c
	module/zfs/vdev_label.c
	module/zfs/zio.c
2009-07-02 16:18:03 -07:00
Brian Behlendorf 9babb37438 Rebase master to b117 2009-07-02 15:44:48 -07:00
Brian Behlendorf 24e488aa55 Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch 2009-03-11 22:27:18 -07:00
Brian Behlendorf c9daa4fbd2 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 22:27:14 -07:00
Brian Behlendorf 246cae3509 Merge branch 'gcc-unused' into refs/top-bases/gcc-branch 2009-03-11 22:27:11 -07:00
Brian Behlendorf ecd2dbcb44 Resolve upstream unused variables so we can remove the -Wno-unused
compile option.  In most case the variables are only unused when
debugging is disabled (ASSERT) however they do waste stack if that
case if the compiler doesn't optimize it out (it should).  But more
importantly disabling this warning prevent us from noticing legit
unused variables accidentally left in other place of the code.
2009-03-11 22:07:25 -07:00
Brian Behlendorf 8090a9a908 Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch
Conflicts:

	cmd/zpool/zpool_main.c
2009-02-18 14:31:46 -08:00
Brian Behlendorf f0a8aedfbc Merge branch 'gcc-branch' into refs/top-bases/zfs-branch
Conflicts:

	lib/libzpool/kernel.c
	module/zfs/arc.c
2009-02-18 14:27:12 -08:00
Brian Behlendorf 32d4d74b04 Merge commit 'refs/top-bases/gcc-unused' into gcc-unused 2009-02-18 14:04:04 -08:00
Brian Behlendorf f686a87058 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:

	module/zfs/arc.c
2009-02-18 13:12:26 -08:00