HomeFreeBSD

MFC r354333,r354359: zfs: enable SPA_PROCESS on the kernel side

Description

MFC r354333,r354359: zfs: enable SPA_PROCESS on the kernel side

The purpose of this change is to group kernel threads 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.

Details

Provenance
avgAuthored on
Parents
rS361376: MFC r353679: document taskqueue_start_threads_in_proc
Branches
Unknown
Tags
Unknown