HomeFreeBSD

Linux 6.9: Call add_disk() from workqueue to fix zfs_allow_010_pos (#16282)

Description

Linux 6.9: Call add_disk() from workqueue to fix zfs_allow_010_pos (#16282)

The 6.9 kernel behaves differently in how it releases block devices. In
the common case it will async release the device only after the return
to userspace. This is different from the 6.8 and older kernels which
release the block devices synchronously. To get around this, call
add_disk() from a workqueue so that the kernel uses a different
codepath to release our zvols in the way we expect. This stops
zfs_allow_010_pos from hanging.

Fixes: #16089

Signed-off-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Reviewed-by: Rob Norris <rob.norris@klarasystems.com>

Details

Provenance
Tony Hutter <hutter2@llnl.gov>Authored on Jun 28 2024, 4:52 PM
Parents
rGf4e2aed42a70: Linux 6.7 compat: detect if kernel defines intptr_t
Branches
Unknown
Tags
Unknown

Event Timeline