Reduce stack usage in dsl_deleg_get, gcc flagged it as consuming a whopping 1040 bytes or potentially 1/4 of a 4K stack. This patch moves all the large structures and buffer off the stack and on to the heap. This includes 2 zap_cursor_t structs each 52 bytes in size, 2 zap_attribute_t structs each 280 bytes in size, and 1 256 byte char array. The total saves on the stack is 880 bytes after you account for the 5 new pointers added. Also the source buffer length has been increased from MAXNAMELEN to MAXNAMELEN+strlen(MOS_DIR_NAME)+1 as described by the comment in dsl_dir_name(). A buffer overrun may have been possible with the slightly smaller buffer. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> |
||
---|---|---|
cmd | ||
lib | ||
man/man8 | ||
module | ||
scripts | ||
.gitignore | ||
AUTHORS | ||
COPYING | ||
COPYRIGHT | ||
DISCLAIMER | ||
OPENSOLARIS.LICENSE | ||
README.markdown | ||
ZFS.RELEASE |
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/