aboutsummaryrefslogtreecommitdiffstats
path: root/module
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2012-12-10 15:24:39 -0800
committerBrian Behlendorf <[email protected]>2012-12-12 09:56:54 -0800
commit94ff5d38e30e5c79a45099413ac642c94b55a619 (patch)
tree8ae3c275b36d8548aaa1dad31fe472f0809ce91b /module
parent3238e717631c68f6f44907b46733f4ae70452d3b (diff)
splat taskq:order: Reduce stack frame
The slightly increased size of the taskq_ent_t when debugging is enabled has pushed the taskq:order splat test over frame size limit. To resolve this dynamically allocate the taskq_ent_t structures so they are part of the heap instead of the stack. In function 'splat_taskq_test5_impl' error: the frame size of 1680 bytes is larger than 1024 bytes Signed-off-by: Brian Behlendorf <[email protected]>
Diffstat (limited to 'module')
-rw-r--r--module/splat/splat-taskq.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/module/splat/splat-taskq.c b/module/splat/splat-taskq.c
index 673f4bd33..f05d1c0eb 100644
--- a/module/splat/splat-taskq.c
+++ b/module/splat/splat-taskq.c
@@ -669,9 +669,12 @@ splat_taskq_test5_impl(struct file *file, void *arg, boolean_t prealloc)
splat_taskq_arg_t tq_arg;
int order1[SPLAT_TASKQ_ORDER_MAX] = { 1,2,4,5,3,0,0,0 };
int order2[SPLAT_TASKQ_ORDER_MAX] = { 1,2,4,5,3,8,6,7 };
- taskq_ent_t tqes[SPLAT_TASKQ_ORDER_MAX];
+ taskq_ent_t *tqes;
int i, rc = 0;
+ tqes = kmem_alloc(sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX, KM_SLEEP);
+ memset(tqes, 0, sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX);
+
splat_vprint(file, SPLAT_TASKQ_TEST5_NAME,
"Taskq '%s' creating (%s dispatch)\n",
SPLAT_TASKQ_TEST5_NAME,
@@ -738,6 +741,8 @@ out:
"Taskq '%s' destroying\n", tq_arg.name);
taskq_destroy(tq);
+ kmem_free(tqes, sizeof(*tqes) * SPLAT_TASKQ_ORDER_MAX);
+
return rc;
}