The 2.6.30 kernel build systems sets -Wframe-larger-than=2048 which causes a warning to be generated when an individual stack frame exceeds 2048. This caught the spa_history_log() and dmu_objset_snapshot() functions which declared a data structure on the stack which contained a char array of MAXPATHLEN. This in defined to be 4096 in the linux kernel and I imagine it is quite large under Solaris as well. Regardless, the offending data structures were moved to the heap to correctly keep the stack depth to a minimum. We might consider setting this value even lower to catch additional offenders because we are expecting deep stacks. |
||
---|---|---|
.. | ||
avl | ||
nvpair | ||
unicode | ||
zcommon | ||
zfs |