Commit Graph

280 Commits

Author SHA1 Message Date
Brian Behlendorf 208e42ffe6 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2010-04-29 11:01:23 -07:00
Brian Behlendorf ea12ca13bf Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2010-04-29 11:01:22 -07:00
Brian Behlendorf 76d877a211 Merge branch 'linux-docs' into refs/top-bases/linux-zfs-branch 2010-04-29 11:00:49 -07:00
Brian Behlendorf 8535236dca Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2010-04-29 11:00:45 -07:00
Brian Behlendorf 72de3a8ee1 Merge branch 'gcc-ident-pragmas' into refs/top-bases/gcc-branch 2010-04-29 11:00:44 -07:00
Brian Behlendorf 151f424dd8 Strip ident pragma from module/zfs/include/sys/fm/util.h 2010-04-29 10:57:17 -07:00
Brian Behlendorf 9c9f3480ad Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-04-29 10:42:47 -07:00
Brian Behlendorf 25aa7e01e3 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2010-04-29 10:42:40 -07:00
Brian Behlendorf 86705eb3e0 Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2010-04-29 10:42:39 -07:00
Brian Behlendorf 91b582d4a1 Merge branch 'linux-docs' into refs/top-bases/linux-zfs-branch 2010-04-29 10:42:02 -07:00
Brian Behlendorf 9199dc112a Merge commit 'refs/top-bases/feature-commit-cb' into feature-commit-cb 2010-04-29 10:41:55 -07:00
Brian Behlendorf c97d2c5541 Merge branch 'feature-zap-cursor-to-key' into refs/top-bases/feature-branch 2010-04-29 10:41:53 -07:00
Brian Behlendorf 18f485a504 Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2010-04-29 10:41:52 -07:00
Brian Behlendorf 13668b7879 Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch 2010-04-29 10:41:23 -07:00
Brian Behlendorf 34d62da9bc Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2010-04-29 10:41:18 -07:00
Brian Behlendorf d91c81c4df Merge commit 'refs/top-bases/gcc-ident-pragmas' into gcc-ident-pragmas 2010-04-29 10:41:09 -07:00
Brian Behlendorf 097e1158e6 Merge commit 'refs/top-bases/gcc-invalid-prototype' into gcc-invalid-prototype 2010-04-29 10:40:48 -07:00
Brian Behlendorf 8c24800b72 Merge branch 'gcc-c90' into refs/top-bases/gcc-branch 2010-04-29 10:40:36 -07:00
Brian Behlendorf fa42225a3d Add Solaris FMA style support 2010-04-29 10:37:15 -07:00
Brian Behlendorf a608242d71 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-03-22 16:56:41 -07:00
Brian Behlendorf 5b14d2ab2f Move zfs_config.h include to command line -include
Remove the few places in the code where zfs_config.h is included.
It is now added to the gcc compile line to ensure the config results
2010-03-22 16:50:58 -07:00
Brian Behlendorf 821cec7046 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2009-12-23 14:50:47 -08:00
Brian Behlendorf 9345a0c1a0 Using autoconf check define fmode_t typedef if undefined. 2009-12-23 14:45:04 -08:00
Brian Behlendorf 45a5551a0e Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch
Conflicts:

	module/zfs/zfs_ioctl.c
2009-11-20 12:11:23 -08:00
Brian Behlendorf fb1b00e9f4 Linux ZVOL implementation; kernel-side changes
At last a useful user space interface for the Linux ZFS port arrives.
With the addition of the ZVOL real ZFS based block devices are available
and can be compared head to head with Linux's MD and LVM block drivers.
The Linux ZVOL has not yet had any performance work done but from a user
perspective it should be functionally complete and behave like any other
Linux block device.

The ZVOL has so far been tested using zconfig.sh on the following x86_64
based platforms: FC11, CHAOS4, RHEL5, RHEL6, and SLES11.  However, more
testing is required to ensure everything is working as designed.

What follows in a somewhat detailed list of changes includes in this
commit to make ZVOL's possible.  A few other issues were addressed in
the context of these changes which will also be mentioned.

* Added module/zfs/zvol.c which is based off the original Solaris ZVOL
implementation but rewritten to intergrate with the Linux block device
APIs.  The basic design remains the similar in Linux with the major
change being request processing.  Request processing is handled by
registering a request function which the elevator calls once all request
merges is finished and the elevator unplugs.  This function is called
under a spin lock and the request structure is passed to the block driver
to be queued for IO.  The elevator must be notified asyncronously once
the request completes or fails with an error.  This allows us the block
driver a chance to handle many request concurrently.  For the ZVOL we
maintain a taskq with a service thread per core.  As requests are delivered
by the elevator each request is dispatched to the taskq.  The task queue
handles each request with a write or read helper function which basically
copies the request data in to our out of the DMU object.  Writes single
completion as soon as the DMU has the data unless they are marked sync.
Reads are all handled syncronously however the elevator will merge many
small reads in to a large read before it submitting the request.

* Cachine is worth specifically mentioning.  Because both the Linux VFS
and the ZFS ARC both want to fully manage the cache we unfortunately
end up with two caches.  This means our memory foot print is larger
than otherwise expected, and it means we have an extra copy between
the caches, but it does not impact correctness.  All syncs are barrior
requests I believe are handled correctly.  Longer term there is lots of
room for improvement here but it will require fairly extensive changes
to either the Linux VFS and VM layer, or additional DMU interfaces to
handle managing buffer not directly allocated by the ARC.

* Added module/zfs/include/sys/blkdev.h which contains all the Linux
compatibility foo which is required to handle changes in the Linux block
APIs from 2.6.18 thru 2.6.31 based kernels.

* The dmu_{read,write}_uio interfaces which don't make sense on Linux
have been modified to dmu_{read,write}_req functions which consume the
standard Linux IO request structure.  Their function fundamentally
remains the same so this happily worked out pretty cleanly.

* The /dev/zfs character device is no longer created through the half
implemented Solaris driver DDI interfaces.  It is now simply created
with it's own major number as a Linux misc device which greatly simplifies
everything.  It is only capable of handling ioctls() but this fits nicely
because that's all it ever has to do.  The ZVOL devices unlike in Solaris
do not leverage the same major number as /dev/zfs but instead register
their own major.  Because only one major is allocated and space is reserved
for 16 partitions per-device there is a limit of 16384 concurrent ZVOL
devices.  By using multiple majors like the scsi driver this limit could
be addressed if it becomes a problem.

* The {spa,zfs,zvol}_busy() functions have all be removed because they
are not required on a Linux system.  Under Linux the registered module
exit function will not be called while the are still references to the
module.  Once the exit function is called however it must succeed or
block, it may not fail so returning an error on module unload makes to
sense under Linux.

* With the addition of ZVOL support all the HAVE_ZVOL defines were removed
for obvious reasons.  However, the HAVE_ZPL defines have been relocated
in to the linux-{kernel,user}-disk topic branches and must remain until
the ZPL is implemented.
2009-11-20 11:06:59 -08:00
Brian Behlendorf a40a4803a8 Merge branch 'linux-have-uio-rw' into refs/top-bases/linux-zfs-branch 2009-11-20 10:39:42 -08:00
Brian Behlendorf 6936334ac1 Revert linux-have-uio-rw branch, moved to linux-kernel-disk branch. 2009-11-20 10:35:26 -08:00
Brian Behlendorf e576375b9f Merge branch 'linux-have-zpl' into refs/top-bases/linux-zfs-branch 2009-11-15 16:11:05 -08:00
Brian Behlendorf e588ef08cb Revert contents of linux-have-zpl topic branch. 2009-11-15 16:06:10 -08:00
Brian Behlendorf e68f100aaa Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2009-11-12 12:55:49 -08:00
Brian Behlendorf 73fe782522 Use HAVE_BDEV_LOGICAL_BLOCK_SIZE compat marco in vdev_disk.
This is a 2.6.31 API change.
2009-11-12 12:51:16 -08:00
Brian Behlendorf 5b421bb734 Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-10-06 12:27:51 -07:00
Brian Behlendorf 6df0b54851 Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-10-06 12:27:50 -07:00
Brian Behlendorf bea5b8a0a2 Merge branch 'linux-have-sysevent' into refs/top-bases/linux-zfs-branch 2009-10-06 12:27:31 -07:00
Brian Behlendorf cf1bc6baa5 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-10-06 12:27:28 -07:00
Brian Behlendorf 5bc2e9e592 Add spa_config_path module option for alternate cache file. 2009-10-06 12:17:38 -07:00
Brian Behlendorf 6e43f5a80b Merge commit 'refs/top-bases/linux-have-zpl' into linux-have-zpl
Conflicts:

	module/zfs/rrwlock.c
	module/zfs/zfs_ioctl.c
2009-08-18 12:59:17 -07:00
Brian Behlendorf 1cf9e2582c Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2009-08-18 12:34:09 -07:00
Brian Behlendorf 6a97dcc2bf Merge commit 'refs/top-bases/linux-have-uio-rw' into linux-have-uio-rw 2009-08-18 12:33:39 -07:00
Brian Behlendorf 7c3b0a4a2f Merge commit 'refs/top-bases/linux-debug-zerocopy' into linux-debug-zerocopy 2009-08-18 12:33:35 -07:00
Brian Behlendorf c9519311a3 Merge commit 'refs/top-bases/linux-have-sysevent' into linux-have-sysevent 2009-08-18 12:33:10 -07:00
Brian Behlendorf 954484f75d Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module
Conflicts:

	module/zfs/dsl_dataset.c
	module/zfs/spa_history.c
2009-08-18 12:32:53 -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 5a81224e6f Merge commit 'refs/top-bases/feature-commit-cb' into feature-commit-cb 2009-08-18 12:10:43 -07:00
Brian Behlendorf bfbac5daec Merge branch 'feature-zap-cursor-to-key' into refs/top-bases/feature-branch 2009-08-18 12:10:38 -07:00
Brian Behlendorf 4f6bbcd0e7 Merge commit 'refs/top-bases/feature-zap-cursor-to-key' into feature-zap-cursor-to-key 2009-08-18 12:10:36 -07:00
Brian Behlendorf d205b25a74 Merge branch 'fix-clock-wrap' into refs/top-bases/fix-branch 2009-08-18 12:09:10 -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 abd8fdb94f Merge commit 'refs/top-bases/gcc-ident-pragmas' into gcc-ident-pragmas
Conflicts:

	module/zfs/dsl_deleg.c
	module/zfs/rrwlock.c
2009-08-18 12:08:36 -07:00
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 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 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 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