@@ -507,6 +507,33 @@ again:
goto out;
}
+ if (flags & BTRFS_UTIL_DELETE_SUBVOLUME_RECURSIVE) {
+ struct btrfs_util_subvolume_iterator *iter;
+ err = btrfs_util_subvolume_iter_create_fd(fd, target_subvol_id,
+ BTRFS_UTIL_SUBVOLUME_ITERATOR_POST_ORDER,
+ &iter);
+ if (!err) {
+ char *child_path;
+ struct btrfs_util_subvolume_info subvol_info;
+ while (!(err = btrfs_util_subvolume_iter_next_info(iter, &child_path, &subvol_info))) {
+ pr_verbose(LOG_DEFAULT, "Delete subvolume %" PRIu64 " (%s): ",
+ subvol_info.id,
+ commit_mode == COMMIT_EACH ||
+ (commit_mode == COMMIT_AFTER && cnt + 1 == argc) ?
+ "commit" : "no-commit");
+ pr_verbose(LOG_DEFAULT, "'%s/%s/%s'\n", dname, vname, child_path);
+
+ free(child_path);
+ }
+ if (err != BTRFS_UTIL_ERROR_STOP_ITERATION)
+ warning("failed to iterate subvol : %s", btrfs_util_strerror(err));
+
+ btrfs_util_destroy_subvolume_iterator(iter);
+ } else {
+ warning("failed to create iter: %s", btrfs_util_strerror(err));
+ }
+ }
+
pr_verbose(LOG_DEFAULT, "Delete subvolume %" PRIu64 " (%s): ",
target_subvol_id,
commit_mode == COMMIT_EACH ||
When a subvolume is deleted with the recursive option, any nested (child) subvolumes also get removed without report it. This patch modifies the delete subvol command to print a listt of child subvolumes during recursive deletion. Issue: #923 Signed-off-by: Sidong Yang <realwakka@gmail.com> --- cmds/subvolume.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) -- 2.43.0