mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2025-01-27 10:24:22 +03:00
3238e71763
Add a test case for taskq_cancel_id() to verify it is working properly. Just like taskq:delay we start by dispatching 100 tasks. However this time 1/3 of the tasks use taskq_dispatch() and will be run immediately, and 2/3 use taskq_dispatch_delay(). The idea is to create a busy taskq with both active, pending, and delayed tasks. After all the items have been successfully dispatched the test begins randomly canceling known task ids. It will do this for 5 seconds randomly canceling a task id and then sleeping for a few milliseconds. The task being canceled may have already run, still be on the pending list, or may be currently being executed by a worker thread. The idea is to ensure we catch any subtle race conditions. Once all the non-canceled tasks have completed we cross check the number of tasks which ran with the number of tasks which were successfully canceled. Additionally, we verify that the taskq_cancel_id() function never blocks longer than needed. This time is bounded by the longest run time of the task which was dispatched. Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> |
||
---|---|---|
.. | ||
Makefile.in | ||
splat-atomic.c | ||
splat-condvar.c | ||
splat-cred.c | ||
splat-ctl.c | ||
splat-generic.c | ||
splat-internal.h | ||
splat-kmem.c | ||
splat-kobj.c | ||
splat-linux.c | ||
splat-list.c | ||
splat-mutex.c | ||
splat-random.c | ||
splat-rwlock.c | ||
splat-taskq.c | ||
splat-thread.c | ||
splat-time.c | ||
splat-vnode.c | ||
splat-zlib.c |