]> git.proxmox.com Git - mirror_zfs.git/commitdiff
splat taskq:order: Reduce stack frame
authorBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 10 Dec 2012 23:24:39 +0000 (15:24 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Wed, 12 Dec 2012 17:56:54 +0000 (09:56 -0800)
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 <behlendorf1@llnl.gov>
module/splat/splat-taskq.c

index 673f4bd3397f3f343efba94a3dc4729427348d98..f05d1c0ebdd73eba66a1f4ef6d4bccb7ffaffc2b 100644 (file)
@@ -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;
 }