Commit Graph

222 Commits

Author SHA1 Message Date
Brian Behlendorf 45d1cae3b8 Rebase master to b121 2009-08-18 11:43:27 -07:00
Brian Behlendorf 2b54211968 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2009-07-29 17:51:33 -07:00
Brian Behlendorf 4014bd401f Major vdev_disk feature and API (thru 2.6.30) update.
Tested under CHAOS4.2, RHEL5, SLES11, and FC11 (all x86_64)

Features:
Honor spa_mode() when opening the block device.  Previously this
was ignored and devices were always opened read/write.

Integrated DKIOCFLUSHWRITECACHE zio operation with linux WRITE_BARRIER
for kernels post 2.6.24 where empty bio requests are supported.  For
earlier kernels ENOTSUP is returned and no barriers are performed.  If
RHEL5 based kernels are intended to be supported long term we may need
make use of the old akward API.

With the addition of WRITE_BARRIER support all writes which were
WRITE_SYNC can now be safely made WRITE bios.  They will now take
advantage of aggregation in the elevator and improved write performance
is likely.

Notice the ZIO_FLAG_SPECULATIVE flag and pass along the hint to the
elevator by using READA instead of READ.  This provides the elevator
the ability to prioritize the real READs ahead of the speculative IO
if needed.

Implement an initial version of vdev_disk_io_done() which in the case
of an EIO error triggers a media change check.  If it determines a
media change has occured we fail the device and remove it from the
config.  This logic I'm sure can be improved further but for now it
is an improvement over the VERIFY() that no error will ever happen.

APIs:
2.6.22 API change
Unused destroy_dirty_buffers arg removed from prototype.

2.6.24 API change
Empty write barriers are now supported and we should use them.

2.6.24 API change
Size argument dropped from bio_endio and bi_end_io, because the
bi_end_io is only called once now when the request is complete.
There is no longer any need for a size argument.  This also means
that partial IO's are no longer possibe and the end_io callback
should not check bi->bi_size.  Finally, the return type was updated
to void.

2.6.28 API change
open/close_bdev_excl() renamed to open/close_bdev_exclusive().

2.6.29 API change
BIO_RW_SYNC renamed to BIO_RW_SYNCIO.
2009-07-29 17:24:08 -07:00
Brian Behlendorf 62806e60d6 Merge branch 'linux-have-uio-rw' into refs/top-bases/linux-zfs-branch 2009-07-10 11:51:14 -07:00
Brian Behlendorf 91fcf9d661 Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-07-10 11:51:11 -07:00
Brian Behlendorf 8a5b47ebb5 Add dmu_write_impl() prototype needed by zpios until a clean
zerocopy interface is available.
2009-07-10 11:39:37 -07:00
Brian Behlendorf 4d410127b0 Merge branch 'linux-have-sysevent' into refs/top-bases/linux-zfs-branch 2009-07-09 08:49:29 -07:00
Brian Behlendorf cc6e67fa7f Wrap sysevent includes until sysevent or something like it is implemented. 2009-07-09 08:40:33 -07:00
Brian Behlendorf e49bdb470e Merge branch 'linux-have-uio-rw' into refs/top-bases/linux-zfs-branch 2009-07-06 17:01:42 -07:00
Brian Behlendorf 169b3085db Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw
Conflicts:

	module/zfs/dmu.c
2009-07-06 17:01:30 -07:00
Brian Behlendorf 1175906fbc Update zerocopy patch to be consistent with new flags arg
passed to dmu_read().  It would be nice to have one of these
for dmu_write() as well but we have do without for now.
2009-07-06 16:01:41 -07:00
Brian Behlendorf a6b1465e30 Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl
Conflicts:

	module/zfs/include/sys/zfs_fuid.h
	module/zfs/zfs_fuid.c
	module/zfs/zfs_ioctl.c
	module/zfs/zfs_vfsops.c
	module/zfs/zfs_znode.c
2009-07-06 15:16:54 -07:00
Brian Behlendorf f48b799f78 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-07-06 15:03:09 -07:00
Brian Behlendorf ae68a8980c Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw
Conflicts:

	module/zfs/include/sys/dmu.h
2009-07-06 15:02:33 -07:00
Brian Behlendorf 1cf1a077cd Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy
Conflicts:

	module/zfs/dmu.c
	module/zfs/include/sys/dmu.h
2009-07-06 15:00:24 -07:00
Brian Behlendorf 4fa3570131 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-07-06 13:47:16 -07:00
Brian Behlendorf 266a7d8cd7 Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module
Conflicts:

	module/zcommon/zfs_namecheck.c
	module/zfs/spa.c
	module/zfs/vdev.c
	module/zfs/zap_micro.c
2009-07-06 13:47:04 -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 a06a428e15 Merge commit 'refs/top-bases/gcc-ident-pragmas' into gcc-ident-pragmas
Conflicts:

	cmd/zdb/zdb_il.c
	cmd/zinject/zinject.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/dmu_object.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_errlog.c
	module/zfs/spa_history.c
	module/zfs/zap.c
	module/zfs/zap_leaf.c
	module/zfs/zap_micro.c
2009-07-02 17:06:20 -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 9babb37438 Rebase master to b117 2009-07-02 15:44:48 -07:00
Brian Behlendorf 4f2dfa3c94 Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl 2009-03-19 21:13:11 -07:00
Brian Behlendorf b08807315c Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-19 21:09:02 -07:00
Brian Behlendorf 57c6cf3c4c Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-03-19 21:08:41 -07:00
Brian Behlendorf bf3d911bc1 Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-03-19 21:08:39 -07:00
Brian Behlendorf 0173e5dce7 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-03-19 21:08:22 -07:00
Brian Behlendorf 275f4aae5d Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module
Conflicts:

	module/zfs/dmu_tx.c
2009-03-19 21:08:17 -07:00
Brian Behlendorf 7f33364d3c Merge branch 'linux-docs' into refs/top-bases/linux-zfs-branch
Conflicts:

	lib/libzpool/include/sys/zfs_context.h
	module/zfs/dmu_tx.c
	module/zfs/txg.c
2009-03-19 21:03:58 -07:00
Brian Behlendorf eb811f7fa9 Merge branch 'feature-branch' into refs/top-bases/zfs-branch
Conflicts:

	module/zfs/include/sys/dmu_tx.h
	module/zfs/include/sys/txg.h
2009-03-19 20:59:12 -07:00
Brian Behlendorf f180959bac Merge branch 'feature-pthreads' into refs/top-bases/feature-branch 2009-03-19 20:51:18 -07:00
Brian Behlendorf 29703a5b4e Add 'feature-commit-cb' branch for DMU commit callbacks. 2009-03-19 20:30:14 -07:00
Brian Behlendorf a9eba02cdb Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl 2009-03-19 15:31:53 -07:00
Brian Behlendorf 7c39f7c920 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-19 15:30:57 -07:00
Brian Behlendorf 852952d742 Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-03-19 15:30:44 -07:00
Brian Behlendorf 146fb170ef Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-03-19 15:30:43 -07:00
Brian Behlendorf 86681399b8 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-03-19 15:30:33 -07:00
Brian Behlendorf e1540e9cbb Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2009-03-19 15:30:32 -07:00
Brian Behlendorf 7e8fa40f4d Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch 2009-03-19 15:29:38 -07:00
Brian Behlendorf 2518c98d9e Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-03-19 15:29:34 -07:00
Brian Behlendorf c8c4948d00 Merge branch 'fix-dnode-cons' into refs/top-bases/fix-branch 2009-03-19 15:29:33 -07:00
Brian Behlendorf 60d25f4b93 The patch resolves the extra call to dnode_cons() in dnode_create().
The extra call to the constructor was there to reinitialize the non-
trivial primatives in the dnode (lists, mutexs, condvars, avl tree, etc).
This was safe, although not exactly clean, on Solaris because none of
the primitives allocate memory.  In the Linux port this is not true.
To keep stack usage to a minimum several of the primatives dynamically
allocate memory thus initializing them twice results in a memory leak.

This patch resolves this problem for Solaris and Linux by ensuring all
*_inits are called in the constructor, and all *_destroys are called
in the destructor.  Additionally we ensure that all dnode objects are
properly deconstructed before being freed to the slab, and when the
objects are allocated from the slab all required data members are
explicity initialized to correct values.
2009-03-19 15:22:48 -07:00
Brian Behlendorf af12291488 Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl
Conflicts:
	module/zfs/rrwlock.c
	module/zfs/zfs_replay.c
2009-03-11 11:22:11 -07:00
Brian Behlendorf fbe3b02667 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-11 11:18:54 -07:00
Brian Behlendorf f39cd76b0b Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-03-11 11:18:05 -07:00
Brian Behlendorf 96cc021270 Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-03-11 11:18:01 -07:00
Brian Behlendorf d402ab0f39 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-03-11 11:17:38 -07:00
Brian Behlendorf 7a08ef9d52 Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module
Conflicts:
	module/zfs/spa_boot.c
2009-03-11 11:17:23 -07:00
Brian Behlendorf bf200630f9 Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch
Conflicts:
	module/zfs/rrwlock.c
	module/zfs/spa_boot.c
	module/zfs/zfs_replay.c
2009-03-11 11:12:24 -07:00
Brian Behlendorf 5f30a3cb0e Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 11:09:11 -07:00
Brian Behlendorf 8fe801fd8f Merge branch 'gcc-ident-pragmas' into refs/top-bases/gcc-branch 2009-03-11 11:00:42 -07:00
Ricardo M. Correia af45030850 Added 'gcc-ident-pragmas' branch. 2009-03-11 10:59:45 -07:00
Brian Behlendorf 2ff4ee3cae Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl 2009-03-11 10:44:51 -07:00
Brian Behlendorf 4f57a6ccb6 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-11 10:43:09 -07:00
Brian Behlendorf a3da614c79 Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-03-11 10:42:31 -07:00
Brian Behlendorf 4231a48b17 Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-03-11 10:42:30 -07:00
Brian Behlendorf 5f4e78b6cc Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-03-11 10:42:10 -07:00
Brian Behlendorf 5067076033 Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2009-03-11 10:42:09 -07:00
Brian Behlendorf 73c738d1ce Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch 2009-03-11 10:40:37 -07:00
Brian Behlendorf d43e9ca262 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2009-03-11 10:40:31 -07:00
Brian Behlendorf d641369d38 Merge branch 'gcc-64bit-constants' into refs/top-bases/gcc-branch 2009-03-11 10:32:45 -07:00
Ricardo M. Correia fd9a7a0fb4 Add 'ull' suffix to 64-bit constants. 2009-03-11 10:31:24 -07:00
Brian Behlendorf 7b8eca908f Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl
Conflicts:

	cmd/zpool/zpool_main.c
2009-02-18 14:38:20 -08:00
Brian Behlendorf 3d4185ed1d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-02-18 14:35:43 -08:00
Brian Behlendorf 47c6526993 Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-02-18 14:35:09 -08:00
Brian Behlendorf 8241395b5a Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-02-18 14:35:05 -08:00
Brian Behlendorf 855a863bb2 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-02-18 14:34:48 -08:00
Brian Behlendorf 9f4865e4ca Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2009-02-18 14:34:45 -08: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 87307ab12a Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2009-02-18 14:30:48 -08:00
Brian Behlendorf 6fe19bd252 Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch
Conflicts:

	lib/libzpool/kernel.c
	module/zfs/arc.c
2009-02-18 14:28:15 -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 f686a87058 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch
Conflicts:

	module/zfs/arc.c
2009-02-18 13:12:26 -08:00
Brian Behlendorf d164b20935 Rebase master to b108 2009-02-18 12:51:31 -08:00
Brian Behlendorf adcb983918 Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl 2009-01-15 14:22:14 -08:00
Brian Behlendorf 465b2c795d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-01-15 14:21:24 -08:00
Brian Behlendorf 924bc262cc Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-01-15 14:21:05 -08:00
Brian Behlendorf ee1faab64d Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-01-15 14:21:03 -08:00
Brian Behlendorf 767928dcd2 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-01-15 14:20:55 -08:00
Brian Behlendorf 091a4a4ca4 Resolve conflict with removed cleaner type 2009-01-15 14:20:49 -08:00
Brian Behlendorf 1f372d9030 Resolve conflict with removed cleaner type 2009-01-15 14:18:01 -08:00
Brian Behlendorf 27cf20b0d6 Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2009-01-15 14:16:19 -08:00
Brian Behlendorf 551838a6c8 Resolve conflict with removed cleaner type 2009-01-15 14:13:39 -08:00
Brian Behlendorf da7151a89e Resolve conflict with removed cleaner type 2009-01-15 14:11:19 -08:00
Brian Behlendorf 3fa768e21b Resolve conflict with removed cleaner type 2009-01-15 14:04:35 -08:00
Brian Behlendorf fb5f0bc833 Rebase master to b105 2009-01-15 13:59:39 -08:00
Brian Behlendorf 14f8f1d4bf Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl 2009-01-13 15:03:50 -08:00
Brian Behlendorf e095be1cc5 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-01-13 15:03:12 -08:00
Brian Behlendorf 28d3375587 Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-01-13 15:02:58 -08:00
Brian Behlendorf 3486f62c97 Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-01-13 15:02:57 -08:00
Brian Behlendorf fd1da7d6b9 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-01-13 15:02:50 -08:00
Brian Behlendorf 042deede25 Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2009-01-13 15:02:49 -08:00
Brian Behlendorf 149c57fd06 Merge branch 'linux-arc' into refs/top-bases/linux-zfs-branch 2009-01-13 15:02:15 -08:00
Brian Behlendorf 4a5bd7a3a8 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2009-01-13 15:02:11 -08:00
Brian Behlendorf bec036636e List cleanup and use of list_node_init initializer 2009-01-13 15:00:12 -08:00
Brian Behlendorf 1cf2f6a63e Merge branch 'linux-have-zpl' into refs/top-bases/linux-zfs-branch 2009-01-09 15:57:21 -08:00
Brian Behlendorf 1475f7234b Make the ZPL only bits conditional 2009-01-09 15:55:19 -08:00
Brian Behlendorf c0f45a99fc Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-01-09 15:52:08 -08:00
Brian Behlendorf 3f70ee0f8a Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-01-09 15:52:07 -08:00
Brian Behlendorf 2148f8256b Merge branch 'linux-have-sysevent' into refs/top-bases/linux-zfs-branch 2009-01-09 15:52:02 -08:00