HomeFreeBSD

FreeBSD: Improve taskq wrapper

Description

FreeBSD: Improve taskq wrapper

  • Group tqent_task and tqent_timeout_task into a union. They are

never used same time. This shrinks taskq_ent_t from 192 to 160 bytes.

  • Remove tqent_registered. Use tqent_id != 0 instead.
  • Remove tqent_cancelled. Use taskqueue pending counter instead.
  • Change tqent_type into uint_t. We don't need to pack it any more.
  • Change tqent_rc into uint_t, matching refcount(9).
  • Take shared locks in taskq_lookup().
  • Call proper taskqueue_drain_timeout() for TIMEOUT_TASK in

taskq_cancel_id() and taskq_wait_id().

  • Switch from CK_LIST to regular LIST.

Reviewed-by: Allan Jude <allan@klarasystems.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Mateusz Guzik <mjguzik@gmail.com>
Signed-off-by: Alexander Motin <mav@FreeBSD.org>
Sponsored by: iXsystems, Inc.
Closes #15356

Details

Provenance
mavAuthored on Oct 13 2023, 5:41 PM
GitHub <noreply@github.com>Committed on Oct 13 2023, 5:41 PM
Parents
rG8a7407012834: Zpool can start allocating from metaslab before TRIMs have completed
Branches
Unknown
Tags
Unknown