HomeFreeBSD

Add mutex_enter_interruptible() for interruptible sleeping IOCTLs

Description

Add mutex_enter_interruptible() for interruptible sleeping IOCTLs

Many long-running ZFS ioctls lock the spa_namespace_lock, forcing
concurrent ioctls to sleep for the mutex. Previously, the only
option is to call mutex_enter() which sleeps uninterruptibly. This
is a usability issue for sysadmins, for example, if the admin runs
zpool status while a slow zpool import is ongoing, the admin's
shell will be locked in uninterruptible sleep for a long time.

This patch resolves this admin usability issue by introducing
mutex_enter_interruptible() which sleeps interruptibly while waiting
to acquire a lock. It is implemented for both Linux and FreeBSD.

The ZFS_IOC_POOL_CONFIGS ioctl, used by zpool status, is changed to
use this new macro so that the command can be interrupted if it is
issued during a concurrent zpool import (or other long-running
operation).

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Thomas Bertschinger <bertschinger@lanl.gov>
Closes #15360

Details

Provenance
Thomas Bertschinger <101425190+bertschinger@users.noreply.github.com>Authored on Oct 26 2023, 4:17 PM
GitHub <noreply@github.com>Committed on Oct 26 2023, 4:17 PM
Parents
rG6a629f323444: arc_default_max on Linux should match FreeBSD
Branches
Unknown
Tags
Unknown

Event Timeline

GitHub <noreply@github.com> committed rG97a0b5be5096: Add mutex_enter_interruptible() for interruptible sleeping IOCTLs (authored by Thomas Bertschinger <101425190+bertschinger@users.noreply.github.com>).Oct 26 2023, 4:17 PM