I have this situation
zfs destroy -r rpool@1-9-2025 cannot destroy snapshot rpool/ROOT/nas@1-9-2025: dataset is busy So..
umount -v /root/.zfs/snapshot/1-9-2025 umount: /root/.zfs/snapshot/1-9-2025 (rpool/ROOT/nas@1-9-2025) unmounted Umounted?
df -h /root/.zfs/snapshot/1-9-2025 Filesystem Size Used Avail Use% Mounted on rpool/ROOT/nas@1-9-2025 5.9T 2.6G 5.9T 1% /root/.zfs/snapshot/1-9-2025 How to umount and destroy snapshot?
Lsof report no use on it, but it remount immediately.
lsof /root/.zfs/snapshot/1-9-2025 no holds on dataset
zfs holds rpool@1-9-2025 NAME TAG TIMESTAMP Actually I use this workaround, instead of use -r I use destroy the snaps one by one
zfs destroy rpool/home@1-9-2025 zfs destroy rpool/opt@1-9-2025 zfs destroy rpool/root@1-9-2025 but some are still busy
zfs list -t snapshot|grep 1-9-2025|cut -d ' ' -f 1 rpool/ROOT/nas@1-9-2025 zfs destroy rpool/ROOT/nas@1-9-2025 cannot destroy snapshot rpool/ROOT/nas@1-9-2025: dataset is busy
zfs umountrather thanumount) - the.zfs/dir at the top level of a dataset (and everything under it) is controlled by a dataset'ssnapdirproperty - seeman zfspropsandman zfsconcepts. The snapshot might be held, needing to be released before destroying it - seeman zfs-holdfor details.nasdataset mounted on another machine? if so, is there some process using the .zfs/snapshots/1-9-2025 snapshot directory in the nas dataset? maybe a backup or restore process, but all it takes is a possibly-forgotten shell with that dir as its cwdcanmountproperty is set tonoauto. e.g. by using-o canmount=noautowith thezfs recvcommand, or by modifying your backup script to runzfs set canmount=noautoon all backed-up datasets after the backup has completed.