Skip to content

Commit 37a3e26

Browse files
author
Artem-OSSRevival
authored
Add more descriptive destroy error message
Reviewed-by: Tony Hutter <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Reviewed-by: Tino Reichardt <[email protected]> Reviewed by: Attila Fülöp <[email protected]> Signed-off-by: Artem-OSSRevival <[email protected]> Fixes: #14538 Closes: #17234
1 parent 38c3a8b commit 37a3e26

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

lib/libzfs/libzfs_dataset.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4028,6 +4028,26 @@ zfs_destroy_snaps_nvl(libzfs_handle_t *hdl, nvlist_t *snaps, boolean_t defer)
40284028
dgettext(TEXT_DOMAIN, "snapshot is cloned"));
40294029
ret = zfs_error(hdl, EZFS_EXISTS, errbuf);
40304030
break;
4031+
case EBUSY: {
4032+
nvlist_t *existing_holds;
4033+
int err = lzc_get_holds(nvpair_name(pair),
4034+
&existing_holds);
4035+
4036+
/* check the presence of holders */
4037+
if (err == 0 && !nvlist_empty(existing_holds)) {
4038+
zfs_error_aux(hdl,
4039+
dgettext(TEXT_DOMAIN, "it's being held. "
4040+
"Run 'zfs holds -r %s' to see holders."),
4041+
nvpair_name(pair));
4042+
ret = zfs_error(hdl, EBUSY, errbuf);
4043+
} else {
4044+
ret = zfs_standard_error(hdl, errno, errbuf);
4045+
}
4046+
4047+
if (err == 0)
4048+
nvlist_free(existing_holds);
4049+
break;
4050+
}
40314051
default:
40324052
ret = zfs_standard_error(hdl, errno, errbuf);
40334053
break;

0 commit comments

Comments
 (0)