Commit Graph

2871 Commits

Author SHA1 Message Date
Brian Behlendorf be5b2d1154 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-13 11:01:29 -07:00
Brian Behlendorf 96c653a09b Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-13 11:01:26 -07:00
Brian Behlendorf 946cb083b2 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-13 11:01:25 -07:00
Brian Behlendorf c3e541b62c Merge branch 'fix-stack-zio_execute' into refs/top-bases/fix-branch 2010-08-13 10:56:51 -07:00
Brian Behlendorf f412e32773 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-12 21:28:04 -07:00
Brian Behlendorf 5bbc3e2a68 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-12 21:28:01 -07:00
Brian Behlendorf 13eca9436e Merge branch 'gcc-branch' into refs/top-bases/zfs-branch 2010-08-12 21:28:00 -07:00
Brian Behlendorf a1f90df3db Merge branch 'gcc-uninit' into refs/top-bases/gcc-branch 2010-08-12 21:27:59 -07:00
Brian Behlendorf 2b89d86fff Initialize resid variable
Properly initialize the variable resid for the error case where
vn_rdwr() returns an error with setting *resid.  In practice
this is harmless because the contents of resid don't matter
when vn_rdwr() returns an error.  But the code does check the
result which means we may or may not end up having the check
zio->io_error.  This makes gcc unhappy and having a completely
deterministic code path here is a good thing.

Closes #51
2010-08-12 21:19:01 -07:00
Brian Behlendorf 52f9b6d142 Merge branch 'linux-kernel-mem' into refs/top-bases/linux-zfs-branch 2010-08-12 16:45:23 -07:00
Brian Behlendorf 9ae9e077fb Quiet two more large allocation warnings
Both of these allocations are larger than 8k which trips the
warning, but so no large that they must be vmem_alloc()'ed.  For
this case I have added the KM_NODEBUG flag which silences the
warning.  The flag also acts as a marker in the source so I can
keep track of this as something which needs to be better addressed
in the long term.

SPL: large kmem_alloc(11876, 0x50) at get_nvlist:911 (341009/1877530)
SPL: large kmem_alloc(11240, 0x50) at load_nvlist:1273 (2639492/2643588)

Closes #50
2010-08-12 16:41:09 -07:00
Brian Behlendorf 3fb16111ea Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-12 15:54:18 -07:00
Brian Behlendorf a9b244704c Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-12 15:53:54 -07:00
Brian Behlendorf 2e26d243e2 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-12 15:53:52 -07:00
Brian Behlendorf 775b428dfb Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-12 15:53:51 -07:00
Brian Behlendorf afd34c561c Merge branch 'fix-taskq' into refs/top-bases/fix-branch 2010-08-12 15:53:49 -07:00
Brian Behlendorf abb4708772 Revert "Use inline version of __zio_execute"
This reverts commit 49177b6ab7.
2010-08-12 15:49:31 -07:00
Brian Behlendorf bd86729c1e Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-12 15:42:38 -07:00
Brian Behlendorf 62e9e03ada Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-12 15:42:15 -07:00
Brian Behlendorf 7ded72a08d Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-12 15:42:12 -07:00
Brian Behlendorf de99114352 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-12 15:42:11 -07:00
Brian Behlendorf a1c9fee0c9 Merge branch 'fix-commit-callback' into refs/top-bases/fix-branch
Conflicts:

	cmd/ztest/ztest.c
2010-08-12 15:37:51 -07:00
Ricardo M. Correia 8af0664652 Fix upstream commit callback
The upstream commit cb code had a few bugs:

1) The arguments of the list_move_tail() call in txg_dispatch_callbacks()
were reversed by mistake. This caused the commit callbacks to not be
called at all.

2) ztest had a bug in ztest_dmu_commit_callbacks() where "error" was not
initialized correctly. This seems to have caused the test to always take
the simulated error code path, which made ztest unable to detect whether
commit cbs were being called for transactions that successfuly complete.

3) ztest had another bug in ztest_dmu_commit_callbacks() where the commit
cb threshold was not being compared correctly.

4) The commit cb taskq was using 'max_ncpus * 2' as the maxalloc argument
of taskq_create(), which could have caused unnecessary delays in the txg
sync thread.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-12 15:34:29 -07:00
Brian Behlendorf 4c38d8822e Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-12 15:23:36 -07:00
Brian Behlendorf 9df7de4475 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-12 15:23:13 -07:00
Brian Behlendorf 8cc3da98d0 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-12 15:23:10 -07:00
Brian Behlendorf baac50219c Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-12 15:23:10 -07:00
Brian Behlendorf 6821ba2bbc Merge branch 'fix-taskq' into refs/top-bases/fix-branch 2010-08-12 15:23:08 -07:00
Ned Bass 49177b6ab7 Use inline version of __zio_execute
Explicitly call to inline version to minimize stack usage.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-12 15:18:43 -07:00
Ned Bass 2e3c7a06c2 Wrap zio_execute() to enable inlining
Implement zio_execute() as a wrapper around the static function
__zio_execute() so that we can force  __zio_execute() to be inlined.
This reduces stack overhead which is important because __zio_execute()
is called recursively in several zio code paths.  zio_execute() itself
cannot be inlined because it is externally visible.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-12 15:18:18 -07:00
Brian Behlendorf 54e72b511a Merge branch 'linux-kernel-mem' into refs/top-bases/linux-zfs-branch 2010-08-11 11:15:08 -07:00
Brian Behlendorf 0d95a031bc Use vmem_alloc() for 128K allocation
The mzap_update() function allocates enough memory for a full
dbuf which can be 128K in size.  Ideally, this memory should
be allocated from our slab but in the short term it's simplest
just to vmem_alloc() the memory instead.

Closes #48
2010-08-11 11:09:33 -07:00
Brian Behlendorf acf6f07ace Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-08-09 16:51:26 -07:00
Brian Behlendorf dd11e3f7f0 Limit sysfs name to KOBJ_NAME_LEN
See commit dfc166d174 for details.
2010-08-09 16:45:38 -07:00
Brian Behlendorf 5ce3b77ef8 Remove /zvol/ path component for zvol devices
As part of commit f162433deb the /zvol/
path component was added for zvol devices.  This ensured all zvol
devices would be created by udev in /dev/zvol/<pool>/<dataset>, as
opposed to the previous /dev/<pool>/<dataset> path.  Logically, it
was nice to organize them in a directory much like Solaris does.

However, while initial testing showed this to work fine with modern
kernels it does not appear to be supported under RHEL5.  The extra
path component triggers a NULL deref in create_dir().  Anyway, to
avoid having different zvol path names based on your kernel version
its more consistent simply to revert to the original naming convention.
If you really want the zvol component you can always add custom
udev rules to do exactly this.

We can revisiting this change again once we are willing to drop
support for RHEL5 and similar older distros.
2010-08-09 16:42:42 -07:00
Brian Behlendorf 3d78dbe4b6 Merge branch 'linux-kernel-mem' into refs/top-bases/linux-zfs-branch 2010-08-06 14:02:10 -07:00
Brian Behlendorf c10118d23e Reapply changes to correct TopGit merge
See commit 992e89df07
2010-08-06 13:56:23 -07:00
Brian Behlendorf 979273cab1 Merge branch 'linux-kernel-mem' into refs/top-bases/linux-zfs-branch
Conflicts:

	module/zfs/zfs_ioctl.c
2010-08-06 13:37:03 -07:00
Brian Behlendorf 992e89df07 Revert changes to correct TopGit merge
I've noticed the TopGit linux-zfs-branch has some linux-kernel-mem
changes which were incorrectly merged.  To fix the issue I'm
reverting the changes in the linux-kernel-mem topic branch, then
remerging the revert, and finally reapplying and merging the
change correctly.
2010-08-06 13:27:32 -07:00
Brian Behlendorf 743e2cde8f Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-06 10:53:08 -07:00
Brian Behlendorf 7e693479b0 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-06 10:52:58 -07:00
Brian Behlendorf f7017594c4 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-06 10:52:39 -07:00
Brian Behlendorf 9e3e35dc3f Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-06 10:52:35 -07:00
Brian Behlendorf 8f8d2b66aa Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-06 10:52:34 -07:00
Brian Behlendorf 2e982255da Merge branch 'fix-zfs_ioc_objset_stats' into refs/top-bases/fix-branch 2010-08-06 10:47:02 -07:00
Brian Behlendorf 89f0abf9b5 Add missing zfs_ioc_objset_stats() error handling
Interestingly this looks like an upstream bug as well.  If for some
reason we are unable to get a zvols statistics, because perhaps the
zpool is hopelessly corrupt, we would trigger the VERIFY.  This
commit adds the proper error handling just to propagate the error
back to user space.  Now the user space tools still must handle this
properly but in the worst case the tool will crash or perhaps have
some missing output.  That's far far better than crashing the host.

Closes #45
2010-08-06 10:46:39 -07:00
Brian Behlendorf 5222cdac37 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-08-04 16:10:44 -07:00
Brian Behlendorf f3aa3b93df Fix zvol partition creation during module load
Partitions for a zvol device were not appearing in /dev/zvol/<pool>/
at module load time for a couple of reasons.

1) The Linux block layer expects a block device to have a non-zero
   capacity during add_disk().  If the capacity is zero it does not
   attempt to open the device which means we never trigger a partition
   scan.  The device capacity was just being set during the first open.

2) Because we expect to be adding a block device to the zvol_state_list
   during zvol_create_minor() the zvol_state_lock() is held.  This
   can result in a deadlock in add_disk() when it attempts to open
   the block device via zvol_open() which also takes this same lock.
   To avoid this issue special handling has been added to zvol_open()
   and zvol_release() to allow the mutex owner to enter these functions
   without retaking the lock.

3) In __zvol_create_minor() the call to dmu_objset_disown() must occur
   before the call to add_disk().  As mentioned above add_disk() results
   in a call to zvol_open() which will attempt to call dmu_objset_own()
   again on the objset.  If the objset is already open it will fail
   resulting in a failed open.  This in turn means the kernel will be
   unable to read the partition information from the device.
2010-08-04 16:05:25 -07:00
Brian Behlendorf 9cb6a0067d Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-03 16:02:49 -07:00
Brian Behlendorf f216be8859 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-08-03 16:02:43 -07:00