git: 1bb8b1d7e190 - main - libdtrace: Fix formatting of messages about drops

From: Mark Johnston <markj_at_FreeBSD.org>
Date: Tue, 15 Apr 2025 18:27:11 UTC
The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=1bb8b1d7e190d75597d31ab87364a058e8ef8c5b

commit 1bb8b1d7e190d75597d31ab87364a058e8ef8c5b
Author:     Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-04-15 14:03:47 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-04-15 18:26:59 +0000

    libdtrace: Fix formatting of messages about drops
    
    dt_oformat_drop() should only be called when in structured output mode.
    
    Reviewed by:    Domagoj Stolfa
    Fixes:          93f27766a7e1 ("dtrace: Add the 'oformat' libdtrace option")
---
 .../opensolaris/lib/libdtrace/common/dt_aggregate.c   | 16 ++++++++++------
 .../opensolaris/lib/libdtrace/common/dt_consume.c     | 19 +++++++++++++------
 2 files changed, 23 insertions(+), 12 deletions(-)

diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
index 1c3131e74cb0..e5d10ad5ac0a 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c
@@ -472,14 +472,18 @@ dt_aggregate_snap_cpu(dtrace_hdl_t *dtp, processorid_t cpu)
 	}
 
 	if (buf->dtbd_drops != 0) {
-		xo_open_instance("probes");
-		dt_oformat_drop(dtp, cpu);
-		if (dt_handle_cpudrop(dtp, cpu,
-		    DTRACEDROP_AGGREGATION, buf->dtbd_drops) == -1) {
+		int error;
+
+		if (dtp->dt_oformat) {
+			xo_open_instance("probes");
+			dt_oformat_drop(dtp, cpu);
+		}
+		error = dt_handle_cpudrop(dtp, cpu, DTRACEDROP_AGGREGATION,
+		    buf->dtbd_drops);
+		if (dtp->dt_oformat)
 			xo_close_instance("probes");
+		if (error != 0)
 			return (-1);
-		}
-		xo_close_instance("probes");
 	}
 
 	if (buf->dtbd_size == 0)
diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
index a760642c33bb..385c9d78bdfc 100644
--- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
+++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c
@@ -3678,10 +3678,13 @@ nextepid:
 	 */
 	buf->dtbd_drops = 0;
 
-	xo_open_instance("probes");
-	dt_oformat_drop(dtp, cpu);
+	if (dtp->dt_oformat) {
+		xo_open_instance("probes");
+		dt_oformat_drop(dtp, cpu);
+	}
 	rval = dt_handle_cpudrop(dtp, cpu, DTRACEDROP_PRINCIPAL, drops);
-	xo_close_instance("probes");
+	if (dtp->dt_oformat)
+		xo_close_instance("probes");
 
 	return (rval);
 }
@@ -4187,11 +4190,15 @@ dtrace_consume(dtrace_hdl_t *dtp, FILE *fp,
 		for (i = 0; i < max_ncpus; i++) {
 			if (drops[i] != 0) {
 				int error;
-				xo_open_instance("probes");
-				dt_oformat_drop(dtp, i);
+
+				if (dtp->dt_oformat) {
+					xo_open_instance("probes");
+					dt_oformat_drop(dtp, i);
+				}
 				error = dt_handle_cpudrop(dtp, i,
 				    DTRACEDROP_PRINCIPAL, drops[i]);
-				xo_close_instance("probes");
+				if (dtp->dt_oformat)
+					xo_close_instance("probes");
 				if (error != 0)
 					return (error);
 			}