Brian Behlendorf
3de149b962
Merge branch 'fix-branch' into refs/top-bases/zfs-branch
2010-08-02 14:17:16 -07:00
Brian Behlendorf
529d515858
Merge branch 'fix-stack-dbuf_hold_impl' into refs/top-bases/fix-branch
2010-08-02 14:12:55 -07:00
Ned Bass
4d3fc57112
Reduce stack usage for recursive dbuf_hold_impl()
...
This commit preserves the recursive function dbuf_hold_impl() but moves
the local variables and function arguments to the heap to minimize
the stack frame size. Enough space is initially allocated on the
stack for 20 levels of recursion. This technique was based on commit
34229a2f2a
which reduced stack usage of
traverse_visitbp().
dbuf_hold_impl() is mutually recursive with dbuf_findbp(),
but the latter function is also called from other functions.
Therefore dbuf_findbp() must contain logic to determine how to call
dbuf_hold_impl(). To this end, dbuf_hold_impl() now takes a
struct dbuf_hold_impl_data pointer as an argument. If that argument
is NULL it calls dbuf_hold_impl() as before, otherwise it calls
__debuf_hold_impl() with a single dbuf_hold_impl_data pointer argument.
As the name implies, dbuf_hold_impl_data stores the arguments and local
variables for dbuf_hold_impl().
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 14:12:31 -07:00
Brian Behlendorf
5d145c70f1
Merge branch 'fix-branch' into refs/top-bases/zfs-branch
2010-08-02 13:52:56 -07:00
Brian Behlendorf
215b84f12f
Merge branch 'fix-stack-inline' into refs/top-bases/fix-branch
2010-08-02 13:49:05 -07:00
Ned Bass
526d004cf5
Inline dbuf_findbp() to reduce stack use
...
Deep recursive call chains are contributing to segfaults in ztest due
to heavy stack use. Inlining dbuf_findbp() helps reduce the stack depth
of the dbuf_findbp() -> dbuf_hold_impl() cycle. However, segfaults are
still occurring in this code path, so further reductions are still needed.
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:47:21 -07:00
Brian Behlendorf
8de2671680
Merge branch 'fix-branch' into refs/top-bases/zfs-branch
2010-06-16 14:43:17 -07:00
Brian Behlendorf
a2ba5b83f8
Merge branch 'fix-stack-noinline' into refs/top-bases/fix-branch
2010-06-16 14:35:14 -07:00
Brian Behlendorf
bbdb8184ec
Add fix-stack-noinline topic branch
...
Certain function must never be automatically inlined by gcc because
they are stack heavy or called recursively. This patch flags all
such functions I have found as 'noinline' to prevent gcc from making
the optimization.
2010-06-16 14:34:41 -07:00
Brian Behlendorf
7f979b27f4
Merge branch 'fix-branch' into refs/top-bases/zfs-branch
2010-06-16 14:27:30 -07:00
Brian Behlendorf
30c03a0914
Merge branch 'fix-stack' into refs/top-bases/fix-branch
2010-06-16 14:27:29 -07:00
Brian Behlendorf
2115c30515
Revert fix-stack topic branch
...
This patch will be broken in to several independent stack reductions
and reapplied as new topic branches.
2010-06-16 14:23:31 -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
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
48bd88f014
Update gcc-c90
...
Additional c90 fixes required due to ZFS update, these include fixing new
places c99 specific things have been done and some cleanup of old usage.
2010-06-14 15:15:26 -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
ffaa677995
Merge branch 'gcc-unused' into refs/top-bases/gcc-branch
...
Conflicts:
module/zfs/dbuf.c
module/zfs/dsl_dataset.c
2010-05-28 15:38:43 -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
89089d1e4b
Merge commit 'refs/top-bases/fix-stack' into fix-stack
...
Conflicts:
module/zfs/dmu_objset.c
module/zfs/spa_history.c
2010-05-28 13:54:08 -07:00
Brian Behlendorf
31630287ca
Merge branch 'fix-dbuf_dirty_record_t' into refs/top-bases/fix-branch
...
Conflicts:
lib/libzfs/libzfs_sendrecv.c
module/zfs/dmu_objset.c
module/zfs/dnode.c
module/zfs/dsl_dataset.c
module/zfs/spa_history.c
2010-05-28 13:51:29 -07:00
Brian Behlendorf
ab1a68b225
Merge commit 'refs/top-bases/fix-dbuf_dirty_record_t' into fix-dbuf_dirty_record_t
...
Conflicts:
module/zfs/dnode_sync.c
2010-05-28 13:46:45 -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
f2f52087f3
Merge branch 'gcc-branch' into refs/top-bases/zfs-branch
2009-08-03 16:28:48 -07:00
Brian Behlendorf
6cb98ae6b9
Merge branch 'gcc-unused' into refs/top-bases/gcc-branch
2009-08-03 16:28:46 -07:00
Brian Behlendorf
68a80a8b87
refcount_add() mistakenly moved to ASSERT() breaks --disable-debug builds.
2009-08-03 16:20:27 -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
326bb586bd
Merge commit 'refs/top-bases/fix-stack' into fix-stack
2009-07-06 13:13:20 -07:00
Brian Behlendorf
5b629493e0
Merge commit 'refs/top-bases/fix-dbuf_dirty_record_t' into fix-dbuf_dirty_record_t
2009-07-06 13:12:34 -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
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
36c46c6031
Merge branch 'gcc-branch' into refs/top-bases/zfs-branch
2009-03-13 10:57:45 -07:00
Brian Behlendorf
d2910d2415
Merge branch 'gcc-unused' into refs/top-bases/gcc-branch
2009-03-13 10:57:43 -07:00
Brian Behlendorf
c98996ded8
Explicitly cast to prevent 'void *' dereference.
2009-03-13 10:51:11 -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
7fe1b71533
Merge commit 'refs/top-bases/fix-stack' into fix-stack
2009-02-18 14:29:19 -08:00
Brian Behlendorf
d190a5b9bd
Merge commit 'refs/top-bases/fix-dbuf_dirty_record_t' into fix-dbuf_dirty_record_t
2009-02-18 14:28:23 -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