HomeFreeBSD

zfs: enable SPA_PROCESS on the kernel side

Description

zfs: enable SPA_PROCESS on the kernel side

The purpose of this change is to group kernelthreads specific to a
particular ZFS pool under a kernel process. There can be many dozens of
threads per pool. This change improves observability of those threads.

This change consists of several subchanges:

  1. illumos taskq_create_proc can now pass its process parameter to

taskqueue. Also, use zfsproc instead of NULL for taskq_create. Caveat:
zfsproc might not be initialized yet. But in that case it is still NULL,
so not worse than before.

  1. illumos sys/proc.h: kthread id is stored in t_did field, not t_tid.
  1. zfs: enable SPA_PROCESS on the kernel side. The change is a bit hairy

as newproc() is implemented privately to spa.c. I couldn't think of a
better way to populate process name than to poke inside the argument for
the process routine.

  1. illumos thread_create: allow assigning thread to process other than

zfsproc.

  1. zfs: expose spa_proc to other users, assign sync and quiesce threads

to it.

Pool-specific threads created using (relatively new) zthr mechanism are
still assigned to the zfskern process rather than to a respective
zpool-xxx process. I am going to address this a bit later.

Reviewed by: no one
MFC after: 5 weeks
Relnotes: perhaps
Differential Revision: https://reviews.freebsd.org/D9720

Details

Provenance
avgAuthored on
Differential Revision
D9720: zfs: enable SPA_PROCESS on the kernel side
Parents
rS354332: loader: show APFS partition type name
Branches
Unknown
Tags
Unknown