Commit Graph

117 Commits

Author SHA1 Message Date
Brian Behlendorf 38cc41b5fe Merge commit 'refs/top-bases/gcc-invalid-prototype' into gcc-invalid-prototype 2009-08-18 12:05:26 -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 45d1cae3b8 Rebase master to b121 2009-08-18 11:43:27 -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 f48b799f78 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-07-06 15:03:09 -07:00
Brian Behlendorf 8795d8f034 Merge commit 'refs/top-bases/feature-commit-cb' into feature-commit-cb 2009-07-06 13:15:43 -07:00
Brian Behlendorf 95ba24ed69 Merge branch 'feature-zap-cursor-to-key' into refs/top-bases/feature-branch
Conflicts:

	cmd/ztest/ztest.c
2009-07-06 13:15:35 -07:00
Brian Behlendorf d369760713 Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2009-07-06 13:14:41 -07:00
Brian Behlendorf 01c3cfc58f Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch
Conflicts:

	module/zfs/zil.c
2009-07-06 13:12:23 -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 5a2a5d64a5 Merge commit 'refs/top-bases/gcc-invalid-prototype' into gcc-invalid-prototype 2009-07-02 16:51:09 -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 b08807315c Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-19 21:09:02 -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 7c39f7c920 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-19 15:30:57 -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 fbe3b02667 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-11 11:18:54 -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 4f57a6ccb6 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-03-11 10:43:09 -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 3d4185ed1d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-02-18 14:35:43 -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 fc8954db24 Merge commit 'refs/top-bases/gcc-invalid-prototype' into gcc-invalid-prototype 2009-02-18 13:12:48 -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 465b2c795d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-01-15 14:21:24 -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 86e39f5e3b Resolve conflict with removed cleaner type 2009-01-15 14:05:21 -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 e095be1cc5 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-01-13 15:03:12 -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 4522c570e8 Add missing prototype 2009-01-06 08:39:45 -08:00
Brian Behlendorf 3a1f0dcde1 Refresh prototype due to upstream changes 2009-01-05 16:53:23 -08:00
Brian Behlendorf caac73b67d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2008-12-18 11:39:34 -08:00
Brian Behlendorf 9ae2c70438 Merge branch 'feature-branch' into refs/top-bases/zfs-branch 2008-12-18 11:34:25 -08:00
Brian Behlendorf 625fac6664 Merge branch 'feature-commit-cb' into refs/top-bases/feature-branch 2008-12-18 11:34:24 -08:00
Brian Behlendorf 63bf9b60d5 Revert changes from this branch so the branch may be removed. We
will integrate the latest patch from Sun here once everything is
is basically working.  This verion of the patch is out of date
anyone and may not be what is needed.
2008-12-18 11:31:32 -08:00
Brian Behlendorf e885dd3a7d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2008-12-17 12:29:14 -08:00
Brian Behlendorf 9ef6211ce7 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2008-12-17 12:23:57 -08:00
Brian Behlendorf b23299c7db Fix two prototypes in the right place 2008-12-17 12:20:20 -08:00
Brian Behlendorf 3278f7b38d Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2008-12-17 12:16:26 -08:00
Brian Behlendorf 6a509b3bca Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2008-12-17 11:50:41 -08:00
Brian Behlendorf 77811f8236 Fix prototype 2008-12-17 11:48:40 -08:00
Brian Behlendorf a2d1d32c17 move vdev_disk to it's new home 2008-12-11 15:26:36 -08:00
Brian Behlendorf e1694cfaec Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2008-12-11 11:27:18 -08:00
Brian Behlendorf 8aad84f781 Merge branch 'feature-commit-cb' into refs/top-bases/feature-branch 2008-12-11 11:27:12 -08:00
Brian Behlendorf e152d6e601 Merge commit 'refs/top-bases/feature-commit-cb' into feature-commit-cb 2008-12-11 11:27:10 -08:00
Brian Behlendorf 756a122d37 Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2008-12-11 11:25:42 -08:00
Brian Behlendorf 8f8ac4288f Merge commit 'refs/top-bases/gcc-invalid-prototype' into gcc-invalid-prototype 2008-12-11 11:25:09 -08:00
Brian Behlendorf 4f5d567cfd Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2008-12-11 11:24:45 -08:00
Brian Behlendorf 172bb4bd5e Move the world out of /zfs/ and seperate out module build tree 2008-12-11 11:08:09 -08:00