Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c =================================================================== --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c (revision 187) +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c (working copy) @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -194,6 +195,8 @@ zio_t *zio; struct bio *bp; + sched_prio(curthread, PRIBIO); + ctx = arg; for (;;) { mtx_lock(&ctx->gc_queue_mtx); Index: sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c =================================================================== --- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c (revision 187) +++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c (working copy) @@ -72,6 +72,7 @@ #include #include #include +#include #include #include "zfs_namecheck.h" @@ -402,6 +403,8 @@ zvol_state_t *zv; struct bio *bp; + sched_prio(curthread, PRIBIO); + zv = arg; for (;;) { mtx_lock(&zv->zv_queue_mtx); Index: sys/cddl/compat/opensolaris/sys/proc.h =================================================================== --- sys/cddl/compat/opensolaris/sys/proc.h (revision 187) +++ sys/cddl/compat/opensolaris/sys/proc.h (working copy) @@ -35,12 +35,14 @@ #include #include #include +#include +#include #ifdef _KERNEL #define CPU curcpu -#define minclsyspri 0 -#define maxclsyspri 0 +#define minclsyspri (PRIBIO + 2) +#define maxclsyspri (PRIBIO + 1) #define max_ncpus mp_ncpus #define boot_max_ncpus mp_ncpus @@ -60,6 +62,7 @@ { proc_t *p; int error; + kthread_t *t; /* * Be sure there are no surprises. @@ -70,7 +73,13 @@ error = kproc_create(proc, arg, &p, 0, stksize / PAGE_SIZE, "solthread %p", proc); - return (error == 0 ? FIRST_THREAD_IN_PROC(p) : NULL); + if (error == 0) { + t = FIRST_THREAD_IN_PROC(p); + sched_prio(t, pri); + return t; + } else { + return NULL; + } } #define thread_exit() kproc_exit(0)