HomeFreeBSD

Workaround issue cleaning up automounted snapshots on Linux

Description

Workaround issue cleaning up automounted snapshots on Linux

On Linux, sometimes, when ZFS goes to unmount an automounted snap,
it fails a VERIFY check on debug builds, because taskq_cancel_id
returned ENOENT after not finding the taskq it was trying to cancel.

This presumably happens when it already died for some reason; in this
case, we don't really mind it already being dead, since we're just
going to dispatch a new task to unmount it right after.

So we just ignore it if we get back ENOENT trying to cancel here,
retry a couple times if we get back the only other possible condition
(EBUSY), and log to dbgmsg if we got anything but ENOENT or success.

(We also add some locking around taskqid, to avoid one or two cases
of two instances of trying to cancel something at once.)

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
Signed-off-by: Rich Ercolani <rincebrain@gmail.com>
Closes #11632
Closes #12670

Details

Provenance
rincebrain_gmail.comAuthored on Nov 3 2021, 3:00 PM
Brian Behlendorf <behlendorf1@llnl.gov>Committed on Aug 25 2023, 12:16 AM
Parents
rG245850b66c1e: Linux 6.4 compat: META
Branches
Unknown
Tags
Unknown