diff --git a/module/zfs/spa.c b/module/zfs/spa.c index 015996d15..0bf0e366a 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -1000,13 +1000,25 @@ spa_taskqs_init(spa_t *spa, zio_type_t t, zio_taskq_type_t q) /* * The write issue taskq can be extremely CPU * intensive. Run it at slightly less important - * priority than the other taskqs. Under Linux this - * means incrementing the priority value on platforms - * like illumos it should be decremented. + * priority than the other taskqs. + * + * Under Linux and FreeBSD this means incrementing + * the priority value as opposed to platforms like + * illumos where it should be decremented. + * + * On FreeBSD, if priorities divided by four (RQ_PPQ) + * are equal then a difference between them is + * insignificant. */ - if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) + if (t == ZIO_TYPE_WRITE && q == ZIO_TASKQ_ISSUE) { +#if defined(__linux__) pri++; - +#elif defined(__FreeBSD__) + pri += 4; +#else +#error "unknown OS" +#endif + } tq = taskq_create_proc(name, value, pri, 50, INT_MAX, spa->spa_proc, flags); }