Commit Graph

1447 Commits

Author SHA1 Message Date
Brian Behlendorf 0002f6f7e5 Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-08-02 13:49:05 -07:00
Brian Behlendorf 215b84f12f Merge branch 'fix-stack-inline' into refs/top-bases/fix-branch 2010-08-02 13:49:05 -07:00
Brian Behlendorf 8d443f35c4 Merge branch 'fix-stack-ztest' into refs/top-bases/fix-branch 2010-08-02 13:49:04 -07:00
Brian Behlendorf 084b700b92 New TopGit dependency: fix-stack-inline 2010-08-02 13:49:02 -07:00
Ned Bass 411dd65af1 Inline zio_execute() to reduce stack use
Deep recursive call chains are contributing to segfaults in ztest due to
heavy stack use.  Inlining zio_execute() helps reduce the stack depth of
the zio_notify_parent() -> zio_execute() -> zio_wait() recursive cycle.
I am no longer seeing ztest segfaults in this code path with this change.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:47:49 -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
Ned Bass dd72f3d647 Inline zio_notify_parent() to reduce stack use
Deep recursive call chains are contributing to segfaults in ztest due
to heavy stack use.  Inlining zio_notify_parent() helps reduce the
stack depth of the zio_notify_parent() -> zio_execute() -> zio_done()
recursive cycle.  I am no longer seeing ztest segfaults in this code
path with this change combined with the zio_done() stack reduction in
the previous commit.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:46:48 -07:00
Brian Behlendorf ca5262f030 Reduce stack by inlining spa_impl_load
The spa_load function may call itself recursively through
the spa_load_impl function.  This call path of spa_load->
spa_load_impl->spa_load->spa_load_impl takes 640 bytes of
stack.  By forcing spa_load_impl to be inlined as part of
spa_load the can be reduced to 448 bytes, for a savings of
192 bytes,
2010-08-02 13:45:28 -07:00
Brian Behlendorf a8a452d74b Initial commit for fix-stack-inline topic branch 2010-08-02 13:44:56 -07:00
Ned Bass bb20b03060 Move ztest_od_t structures to the heap
A number of ztest functions create one or more 312B ztest_od_t data
structures.  To conserve stack usage, this commit moves all of these data
structures to the heap.  However, I am still seeing ztest segfaults due
to heavy stack usage of the dbuf_findbp() -> dbuf_hold_impl() recursion.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:42:25 -07:00
Brian Behlendorf bb064e0220 Merge branch 'fix-taskq' into refs/top-bases/fix-branch 2010-08-02 13:21:51 -07:00
Brian Behlendorf c90ad869ca Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-08-02 13:21:51 -07:00
Ricardo M. Correia 4ca4dfe9bb Fix taskq_dispatch() call in zio_taskq_dispatch().
The feature branch 'fix-taskq' in Linux's ZFS tree changes the taskq_dispatch()
flag from TQ_SLEEP to TQ_NOSLEEP to avoid sleeping in some circumstances.

However, this has the side effect that taskq_dispatch() now may fail, and since
the return code was not even being checked, it could lead to zio's not being
scheduled to execute.

I'm fixing this in a simplistic but not very elegant way, by just looping until
taskq_dispatch() succeeds.

Signed-off-by: Ricardo M. Correia <ricardo.correia@oracle.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:12:54 -07:00
Brian Behlendorf 4471454be8 Merge branch 'fix-stack-ztest' into refs/top-bases/fix-branch 2010-07-23 11:42:21 -07:00
Brian Behlendorf d43294230a Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-07-23 11:42:21 -07:00
Brian Behlendorf 085c18fa55 Merge commit 'refs/top-bases/fix-stack-ztest' into fix-stack-ztest 2010-07-23 11:42:20 -07:00
Ned Bass be92edb218 Add extra guard space if needed
Some buggy NPTL threading implementations include the guard area within
the stack size allocations.  In this case we need to allocate an extra
page to account for the guard area since we only have two pages of usable
stack on Linux.  Added an autoconf test that detects such implementations
by running a test program designed to segfault if the bug is present.
Set a flag NPTL_GUARD_WITHIN_STACK that is tested to decide if extra
stack space must be allocated for the guard area.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-07-23 11:38:00 -07:00
Brian Behlendorf e16508d660 Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-07-21 10:08:23 -07:00
Brian Behlendorf a2cf158872 Merge branch 'fix-stack-ztest' into refs/top-bases/fix-branch 2010-07-21 10:08:22 -07:00
Brian Behlendorf 8d6a2d0626 Merge commit 'refs/top-bases/fix-stack-ztest' into fix-stack-ztest 2010-07-21 10:08:22 -07:00
Ned Bass 75d868af70 Fixed typo that set thread STACK_SIZE to 24k instead of 8k
__linux__ was mispelled as _linux_ so #ifdef was always
selecting the Solaris STACK_SIZE value.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-07-21 10:04:21 -07:00
Brian Behlendorf 1a58b78499 Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-06-29 16:57:39 -07:00
Brian Behlendorf 015677660a Merge branch 'fix-stack-traverse_visitbp' into refs/top-bases/fix-branch 2010-06-29 16:57:39 -07:00
Brian Behlendorf f20301b41b Minor fix to ensure tv_depth is there when debugging is disabled. 2010-06-29 16:52:42 -07:00
Brian Behlendorf ddb3357f4b Merge commit 'refs/top-bases/fix-branch' into fix-branch 2010-06-29 14:41:35 -07:00
Brian Behlendorf b8bafc851f Merge branch 'fix-stack-ztest' into refs/top-bases/fix-branch 2010-06-29 14:41:35 -07:00
Brian Behlendorf d0ddee3859 Merge commit 'refs/top-bases/fix-stack-ztest' into fix-stack-ztest 2010-06-29 14:41:34 -07:00
Brian Behlendorf 213d6423b5 Merge commit 'refs/top-bases/fix-pthreads' into fix-pthreads 2010-06-29 14:41:34 -07:00
Brian Behlendorf c366e466e3 Merge commit 'refs/top-bases/fix-stack-traverse_visitbp' into fix-stack-traverse_visitbp 2010-06-29 14:41:32 -07:00
Brian Behlendorf f47cc9aac2 Merge branch 'fix-stack-traverse_visitbp' into refs/top-bases/fix-branch 2010-06-29 14:41:32 -07:00
Brian Behlendorf 4b23500c4a Merge branch 'fix-stack-traverse_impl' into refs/top-bases/fix-branch 2010-06-29 14:41:31 -07:00
Brian Behlendorf 490eb4db5c Merge commit 'refs/top-bases/fix-stack-traverse_impl' into fix-stack-traverse_impl 2010-06-29 14:41:30 -07:00
Brian Behlendorf daef43003b Merge branch 'fix-stack-vn_open' into refs/top-bases/fix-branch 2010-06-29 14:41:29 -07:00
Brian Behlendorf 861af03304 Merge commit 'refs/top-bases/fix-stack-vn_open' into fix-stack-vn_open 2010-06-29 14:41:28 -07:00
Brian Behlendorf 33b9043394 Merge branch 'fix-stack-dsl_dataset_destroy' into refs/top-bases/fix-branch 2010-06-29 14:41:27 -07:00
Brian Behlendorf 5721f147c5 Merge commit 'refs/top-bases/fix-stack-dsl_dataset_destroy' into fix-stack-dsl_dataset_destroy 2010-06-29 14:41:27 -07:00
Brian Behlendorf 46acb1b8d2 Merge branch 'fix-stack-dmu_objset_snapshot' into refs/top-bases/fix-branch 2010-06-29 14:41:25 -07:00
Brian Behlendorf 50c15019cb Merge commit 'refs/top-bases/fix-stack-dmu_objset_snapshot' into fix-stack-dmu_objset_snapshot 2010-06-29 14:41:25 -07:00
Brian Behlendorf b8b1c5abb9 Merge branch 'fix-stack-noinline' into refs/top-bases/fix-branch 2010-06-29 14:41:24 -07:00
Brian Behlendorf 002a52896d Merge commit 'refs/top-bases/fix-stack-noinline' into fix-stack-noinline 2010-06-29 14:41:23 -07:00
Brian Behlendorf f568df2d32 Merge branch 'fix-stack-dsl_deleg_get' into refs/top-bases/fix-branch 2010-06-29 14:41:22 -07:00
Brian Behlendorf 89cd45bf85 Merge commit 'refs/top-bases/fix-stack-dsl_deleg_get' into fix-stack-dsl_deleg_get 2010-06-29 14:41:22 -07:00
Brian Behlendorf 4e8810b3ff Merge branch 'fix-stack-dsl_dir_open_spa' into refs/top-bases/fix-branch 2010-06-29 14:41:20 -07:00
Brian Behlendorf fd66f491b4 Merge commit 'refs/top-bases/fix-stack-dsl_dir_open_spa' into fix-stack-dsl_dir_open_spa 2010-06-29 14:41:20 -07:00
Brian Behlendorf eed68d5e3f Merge branch 'fix-stack-lzjb' into refs/top-bases/fix-branch 2010-06-29 14:41:19 -07:00
Brian Behlendorf 1badbf8463 Merge commit 'refs/top-bases/fix-stack-lzjb' into fix-stack-lzjb 2010-06-29 14:41:18 -07:00
Brian Behlendorf 9559cbca21 Merge branch 'fix-kstat-xuio' into refs/top-bases/fix-branch 2010-06-29 14:41:17 -07:00
Brian Behlendorf ec6656eadc Merge commit 'refs/top-bases/fix-kstat-xuio' into fix-kstat-xuio 2010-06-29 14:41:17 -07:00
Brian Behlendorf 73cf09d2ec Merge branch 'fix-metaslab' into refs/top-bases/fix-branch 2010-06-29 14:41:16 -07:00
Brian Behlendorf 3cddd49624 Merge commit 'refs/top-bases/fix-metaslab' into fix-metaslab 2010-06-29 14:41:15 -07:00