From: Ameer Hamza <106930537+ixhamza@users.noreply.github.com> Date: Thu, 2 Feb 2023 23:09:57 +0000 (+0500) Subject: Fix console progress reporting for recursive send X-Git-Tag: zfs-2.2.0~451 X-Git-Url: https://git.proxmox.com/?p=mirror_zfs.git;a=commitdiff_plain;h=05b72415d16e3cfbdeb0f59d5f24640f10ee34d6 Fix console progress reporting for recursive send After commit 19d3961, progress reporting (-v) with replication flag enabled does not report the progress on the console. This commit fixes the issue by updating the logic to check for pa->progress instead of pa_verbosity in send_progress_thread(). Reviewed-by: Brian Behlendorf Reviewed-by: Ryan Moeller Signed-off-by: Ameer Hamza Closes #14448 --- diff --git a/cmd/zfs/zfs_main.c b/cmd/zfs/zfs_main.c index 9d48b2b32..cec025ce6 100644 --- a/cmd/zfs/zfs_main.c +++ b/cmd/zfs/zfs_main.c @@ -4532,7 +4532,7 @@ zfs_do_send(int argc, char **argv) } } - if (flags.parsable && flags.verbosity == 0) + if ((flags.parsable || flags.progressastitle) && flags.verbosity == 0) flags.verbosity = 1; if (excludes.count > 0 && !flags.replicate) { diff --git a/lib/libzfs/libzfs_sendrecv.c b/lib/libzfs/libzfs_sendrecv.c index 038613a1f..1d2ad1944 100644 --- a/lib/libzfs/libzfs_sendrecv.c +++ b/lib/libzfs/libzfs_sendrecv.c @@ -84,6 +84,7 @@ typedef struct progress_arg { boolean_t pa_estimate; int pa_verbosity; boolean_t pa_astitle; + boolean_t pa_progress; uint64_t pa_size; } progress_arg_t; @@ -940,7 +941,7 @@ send_progress_thread(void *arg) struct tm tm; int err; - if (!pa->pa_parsable && pa->pa_verbosity != 0) { + if (!pa->pa_parsable && pa->pa_progress) { (void) fprintf(stderr, "TIME %s %sSNAPSHOT %s\n", pa->pa_estimate ? "BYTES" : " SENT", @@ -990,7 +991,7 @@ send_progress_thread(void *arg) (void) fprintf(stderr, "%02d:%02d:%02d\t%llu\t%s\n", tm.tm_hour, tm.tm_min, tm.tm_sec, (u_longlong_t)bytes, zhp->zfs_name); - } else if (pa->pa_verbosity != 0) { + } else if (pa->pa_progress) { zfs_nicebytes(bytes, buf, sizeof (buf)); (void) fprintf(stderr, "%02d:%02d:%02d %5s %s\n", tm.tm_hour, tm.tm_min, tm.tm_sec, @@ -1206,6 +1207,7 @@ dump_snapshot(zfs_handle_t *zhp, void *arg) pa.pa_verbosity = sdd->verbosity; pa.pa_size = sdd->size; pa.pa_astitle = sdd->progressastitle; + pa.pa_progress = sdd->progress; if ((err = pthread_create(&tid, NULL, send_progress_thread, &pa)) != 0) { @@ -1886,6 +1888,7 @@ zfs_send_resume_impl_cb_impl(libzfs_handle_t *hdl, sendflags_t *flags, pa.pa_verbosity = flags->verbosity; pa.pa_size = size; pa.pa_astitle = flags->progressastitle; + pa.pa_progress = flags->progress; error = pthread_create(&tid, NULL, send_progress_thread, &pa); @@ -2696,6 +2699,7 @@ zfs_send_one_cb_impl(zfs_handle_t *zhp, const char *from, int fd, pa.pa_verbosity = flags->verbosity; pa.pa_size = size; pa.pa_astitle = flags->progressastitle; + pa.pa_progress = flags->progress; err = pthread_create(&ptid, NULL, send_progress_thread, &pa);