OpenZFS on Linux and FreeBSD
Go to file
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
cmd Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
lib Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
man/man8 Pull in latest man pages as part of update-zfs.sh 2009-12-11 16:15:33 -08:00
module Reduce stack usage for recursive dbuf_hold_impl() 2010-08-02 14:12:31 -07:00
scripts Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00
.gitignore Ignore unsigned module build products 2010-03-09 14:14:09 -08:00
.topdeps Initial commit for fix-stack-dbuf_hold_impl topic branch 2010-08-02 14:10:28 -07:00
.topmsg Initial commit for fix-stack-dbuf_hold_impl topic branch 2010-08-02 14:10:28 -07:00
AUTHORS Add AUTHORS to master branch 2010-05-18 14:55:01 -07:00
COPYING Relocate COPYING+COPYRIGHT, remove README cruft 2008-12-01 15:34:53 -08:00
COPYRIGHT Update COPYRIGHT to reference zpios CDDL exceptions. 2010-05-18 14:25:28 -07:00
DISCLAIMER Update COPYRIGHT and DISCLAIMER. 2010-05-18 10:32:23 -07:00
GIT Refresh type in topgit git://* reference 2009-01-26 21:58:32 -08:00
OPENSOLARIS.LICENSE Add CDDL license file 2008-12-01 14:49:34 -08:00
README.markdown Add basic README 2010-06-29 14:35:21 -07:00
ZFS.RELEASE Update core ZFS code from build 121 to build 141. 2010-05-28 13:45:14 -07:00

README.markdown

Native ZFS for Linux! ZFS is an advanced file system and volume manager which was originally developed for Solaris. It has been successfully ported to FreeBSD and now there is a functional Linux ZFS kernel port too. The port currently includes a fully functional and stable SPA, DMU, and ZVOL with a ZFS Posix Layer (ZPL) on the way!

Documentation for building, configuring, and using ZFS can be found at: http://wiki.github.com/behlendorf/zfs/