From nobody Fri May 17 09:01:37 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1700799733; cv=none; d=zohomail.com; s=zohoarc; b=Asi+HEKLK1+dLbVLH7rVBuqdUiyHJkci1PXjJIpiSxVKN5xq3NVuiJ2rGjD4kFd1Tsv0XnZih5SkDWudvW4fcPahangXvLDO3Qf8MvkRXvG2JVhM6iel/zoD3XDBnan6nSs/uZqaMtkIPLrJk/0qtVGaOuNQRvyVlHgPBkS+jTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1700799733; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QHUW1pcodr2Ecs7+WSFnTxBagJ8d8TMSXSpTTvwKGZ0=; b=CJWC3FjI7lipybUM/uYPN0u2+8zu1JFmUmiT1HkhzkFpUTjEcW6i62mEkLpjr9fFAXgGKWNwof4PyOP+0DjP51+ato+3fEhDSkc8+iaZwhGOKl2d2ntUuUQ/UROhfRoiTQAlFDSFNgmhqG8Sk0/xoXcn5jG6dOs84bT/HV1XYnA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1700799733583914.1748797367085; Thu, 23 Nov 2023 20:22:13 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.640139.997993 (Exim 4.92) (envelope-from ) id 1r6NhW-0005I9-5k; Fri, 24 Nov 2023 04:21:58 +0000 Received: by outflank-mailman (output) from mailman id 640139.997993; Fri, 24 Nov 2023 04:21:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1r6NhW-0005I0-2V; Fri, 24 Nov 2023 04:21:58 +0000 Received: by outflank-mailman (input) for mailman id 640139; Fri, 24 Nov 2023 04:21:56 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1r6NhU-00058O-I2 for xen-devel@lists.xenproject.org; Fri, 24 Nov 2023 04:21:56 +0000 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id ffaceaf6-8a80-11ee-9b0e-b553b5be7939; Fri, 24 Nov 2023 05:21:54 +0100 (CET) Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [10.150.64.98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 0A573219E7; Thu, 23 Nov 2023 16:08:38 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id D3BED13A82; Thu, 23 Nov 2023 16:08:37 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap2.dmz-prg2.suse.org with ESMTPSA id l4txMgV5X2U3FgAAn2gu4w (envelope-from ); Thu, 23 Nov 2023 16:08:37 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: ffaceaf6-8a80-11ee-9b0e-b553b5be7939 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1700755718; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=QHUW1pcodr2Ecs7+WSFnTxBagJ8d8TMSXSpTTvwKGZ0=; b=sJRBQu15/wd1NBWLZK+wPAElUy3ml3oGDcppZeuImv/RU3VqTSSGYyzqUPnJYRdoFX5qVU Al3NTwaPWppTXapLfhhbrld+j8m083sdo/GCUypARYbX+pJXdCHjJIQ49Yc1EQXzidKChl /yaIm0SRD1svRkCiCPQCNXFSm7YhLZY= From: Juergen Gross To: xen-devel@lists.xenproject.org Cc: Juergen Gross , Wei Liu , Julien Grall , Anthony PERARD Subject: [PATCH] tools/xenstored: potentially split trace_io() out message Date: Thu, 23 Nov 2023 17:08:34 +0100 Message-Id: <20231123160834.17674-1-jgross@suse.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Authentication-Results: smtp-out1.suse.de; none X-Spam-Level: * X-Spam-Flag: NO X-Spam-Score: 1.90 X-Spamd-Result: default: False [1.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_FIVE(0.00)[5]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] X-ZohoMail-DKIM: pass (identity @suse.com) X-ZM-MESSAGEID: 1700799734355100001 Content-Type: text/plain; charset="utf-8" Today write_messages() will call trace_io() after having written the complete message to the ring buffer or socket. In case the message can't be written in one go, split it by writing one trace entry when starting the write and one when finishing it. Signed-off-by: Juergen Gross Reviewed-by: Julien Grall --- This patch is meant to go on top of the patch "tools/xenstored: remove \"-V\" command line option" in order to not lose any possible debug information. --- tools/xenstored/core.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/tools/xenstored/core.c b/tools/xenstored/core.c index 9046b200bc..a14b240ed9 100644 --- a/tools/xenstored/core.c +++ b/tools/xenstored/core.c @@ -121,7 +121,7 @@ void trace(const char *fmt, ...) =20 static void trace_io(const struct connection *conn, const struct buffered_data *data, - int out) + const char *type) { unsigned int i; time_t now; @@ -134,8 +134,7 @@ static void trace_io(const struct connection *conn, tm =3D localtime(&now); =20 trace("io: %s %p (d%u) %04d%02d%02d %02d:%02d:%02d %s (", - out ? "OUT" : "IN", conn, conn->id, - tm->tm_year + 1900, tm->tm_mon + 1, + type, conn, conn->id, tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, sockmsg_string(data->hdr.msg.type)); =09 @@ -321,43 +320,54 @@ static bool write_messages(struct connection *conn) { int ret; struct buffered_data *out; + bool started =3D false; =20 out =3D list_top(&conn->out_list, struct buffered_data, list); if (out =3D=3D NULL) return true; =20 if (out->inhdr) { + started =3D !out->used; ret =3D conn->funcs->write(conn, out->hdr.raw + out->used, sizeof(out->hdr) - out->used); if (ret < 0) - return false; + goto err; =20 out->used +=3D ret; if (out->used < sizeof(out->hdr)) - return true; + goto start; =20 out->inhdr =3D false; out->used =3D 0; =20 /* Second write might block if non-zero. */ if (out->hdr.msg.len && !conn->domain) - return true; + goto start; } =20 ret =3D conn->funcs->write(conn, out->buffer + out->used, out->hdr.msg.len - out->used); if (ret < 0) - return false; + goto err; =20 out->used +=3D ret; if (out->used !=3D out->hdr.msg.len) - return true; + goto start; =20 - trace_io(conn, out, 1); + trace_io(conn, out, started ? "OUT" : "OUT(END)"); =20 free_buffered_data(out, conn); =20 return true; + + err: + trace_io(conn, out, "OUT(ERR)"); + return false; + + start: + if (started) + trace_io(conn, out, "OUT(START)"); + return true; } =20 static int undelay_request(void *_req) @@ -2067,7 +2077,7 @@ static void process_message(struct connection *conn, = struct buffered_data *in) =20 /* At least send_error() and send_reply() expects conn->in =3D=3D in */ assert(conn->in =3D=3D in); - trace_io(conn, in, 0); + trace_io(conn, in, "IN"); =20 if ((unsigned int)type >=3D XS_TYPE_COUNT || !wire_funcs[type].func) { eprintf("Client unknown operation %i", type); --=20 2.35.3