Commit Graph

23613 Commits

Author SHA1 Message Date
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
Ned Bass
421d95b3ea Remove declarations in VERIFY3_IMPL to save stack
This has a minor impact on stack usage of individual functions, but the
VERIFY macros are used so frequently that their overhead may add up.
This macro declared two new local variables to cast its argument types.
Doing the typecast inline eliminates the need for these variables.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
2010-08-02 13:34:48 -07:00
Brian Behlendorf
3b5fc59236 Merge commit 'refs/top-bases/top' into top 2010-08-02 13:24:25 -07:00
Brian Behlendorf
121b1ceddc Merge commit 'refs/top-bases/linux-configure-branch' into linux-configure-branch 2010-08-02 13:24:23 -07:00
Brian Behlendorf
b89f8ad41b Merge commit 'refs/top-bases/linux-zfs-branch' into linux-zfs-branch 2010-08-02 13:24:21 -07:00
Brian Behlendorf
d85703c480 Merge branch 'linux-have-mlslabel' into refs/top-bases/linux-zfs-branch 2010-08-02 13:24:19 -07:00
Brian Behlendorf
fd1a5226a9 Merge commit 'refs/top-bases/linux-have-mlslabel' into linux-have-mlslabel 2010-08-02 13:24:17 -07:00
Brian Behlendorf
5a75578b99 Merge branch 'linux-spa-thread' into refs/top-bases/linux-zfs-branch 2010-08-02 13:24:12 -07:00
Brian Behlendorf
ba8f3085ca Merge commit 'refs/top-bases/linux-spa-thread' into linux-spa-thread 2010-08-02 13:24:10 -07:00
Brian Behlendorf
84db3581c3 Merge branch 'linux-topology' into refs/top-bases/linux-zfs-branch 2010-08-02 13:24:04 -07:00
Brian Behlendorf
2a15280353 Merge commit 'refs/top-bases/linux-topology' into linux-topology 2010-08-02 13:24:02 -07:00
Brian Behlendorf
83058943de Merge branch 'linux-sha2' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:57 -07:00
Brian Behlendorf
dca5a535cd Merge commit 'refs/top-bases/linux-sha2' into linux-sha2 2010-08-02 13:23:55 -07:00
Brian Behlendorf
82dc97f462 Merge branch 'linux-user-util' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:49 -07:00
Brian Behlendorf
189685f2bb Merge commit 'refs/top-bases/linux-user-util' into linux-user-util 2010-08-02 13:23:47 -07:00
Brian Behlendorf
ef1ea46bd4 Merge branch 'linux-events' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:42 -07:00
Brian Behlendorf
52b1e9edad Merge commit 'refs/top-bases/linux-events' into linux-events 2010-08-02 13:23:40 -07:00
Brian Behlendorf
fbae8d0a92 Merge branch 'linux-kernel-module' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:34 -07:00
Brian Behlendorf
8a2017515b Merge commit 'refs/top-bases/linux-kernel-module' into linux-kernel-module 2010-08-02 13:23:32 -07:00
Brian Behlendorf
ee89d487c9 Merge branch 'linux-kernel-device' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:26 -07:00
Brian Behlendorf
02648544c7 Merge commit 'refs/top-bases/linux-kernel-device' into linux-kernel-device 2010-08-02 13:23:24 -07:00
Brian Behlendorf
19cbaae01c Merge branch 'linux-have-idmap' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:19 -07:00
Brian Behlendorf
ae2d3042ab Merge commit 'refs/top-bases/linux-have-idmap' into linux-have-idmap 2010-08-02 13:23:17 -07:00
Brian Behlendorf
e3f24c0281 Merge branch 'linux-ztest' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:12 -07:00
Brian Behlendorf
a1fd05c6a5 Merge commit 'refs/top-bases/linux-ztest' into linux-ztest 2010-08-02 13:23:09 -07:00
Brian Behlendorf
999337606c Merge branch 'linux-unused' into refs/top-bases/linux-zfs-branch 2010-08-02 13:23:04 -07:00
Brian Behlendorf
0de1c4f4ce Merge commit 'refs/top-bases/linux-unused' into linux-unused 2010-08-02 13:23:02 -07:00
Brian Behlendorf
caa1caa4a0 Merge branch 'linux-libspl' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:56 -07:00
Brian Behlendorf
494a650cbb Merge commit 'refs/top-bases/linux-libspl' into linux-libspl 2010-08-02 13:22:55 -07:00
Brian Behlendorf
939778e799 Merge branch 'linux-zpios' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:49 -07:00
Brian Behlendorf
c53e5d229c Merge commit 'refs/top-bases/linux-zpios' into linux-zpios 2010-08-02 13:22:47 -07:00
Brian Behlendorf
24743e1ee8 Merge branch 'linux-user-disk' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:41 -07:00
Brian Behlendorf
590bd1dd2f Merge commit 'refs/top-bases/linux-user-disk' into linux-user-disk 2010-08-02 13:22:39 -07:00
Brian Behlendorf
0578f16042 Merge branch 'linux-symbol-collisions' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:33 -07:00
Brian Behlendorf
4909386ed9 Merge commit 'refs/top-bases/linux-symbol-collisions' into linux-symbol-collisions 2010-08-02 13:22:31 -07:00
Brian Behlendorf
5b17c2bcee Merge branch 'linux-kernel-mem' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:24 -07:00
Brian Behlendorf
73759365d7 Merge commit 'refs/top-bases/linux-kernel-mem' into linux-kernel-mem 2010-08-02 13:22:22 -07:00
Brian Behlendorf
db72cd9ba6 Merge branch 'linux-kernel-disk' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:15 -07:00
Brian Behlendorf
1f3c757320 Merge commit 'refs/top-bases/linux-kernel-disk' into linux-kernel-disk 2010-08-02 13:22:13 -07:00
Brian Behlendorf
c736f16e18 Merge branch 'linux-have-spl-debug' into refs/top-bases/linux-zfs-branch 2010-08-02 13:22:06 -07:00
Brian Behlendorf
f983481a3f Merge commit 'refs/top-bases/linux-have-spl-debug' into linux-have-spl-debug 2010-08-02 13:22:04 -07:00
Brian Behlendorf
37e5e668d6 Merge branch 'linux-have-mntent' into refs/top-bases/linux-zfs-branch 2010-08-02 13:21:57 -07:00
Brian Behlendorf
cf10cb3419 Merge commit 'refs/top-bases/linux-have-mntent' into linux-have-mntent 2010-08-02 13:21:54 -07:00
Brian Behlendorf
0fee5e7ac8 Merge commit 'refs/top-bases/zfs-branch' into zfs-branch 2010-08-02 13:21:53 -07:00
Brian Behlendorf
7b8a233029 Merge branch 'fix-branch' into refs/top-bases/zfs-branch 2010-08-02 13:21:52 -07:00