From nobody Thu May 2 23:48:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1541171643274302.98929226711437; Fri, 2 Nov 2018 08:14:03 -0700 (PDT) Received: from localhost ([::1]:52106 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIb8u-000785-IS for importer@patchew.org; Fri, 02 Nov 2018 11:13:48 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32858) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIb7C-0004b4-Td for qemu-devel@nongnu.org; Fri, 02 Nov 2018 11:12:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIb77-0003JB-TK for qemu-devel@nongnu.org; Fri, 02 Nov 2018 11:12:02 -0400 Received: from relay.sw.ru ([185.231.240.75]:57848) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gIb77-0003IS-KK; Fri, 02 Nov 2018 11:11:57 -0400 Received: from [10.28.8.145] (helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1gIb73-0006Y4-HO; Fri, 02 Nov 2018 18:11:53 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Fri, 2 Nov 2018 18:11:50 +0300 Message-Id: <20181102151152.288399-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181102151152.288399-1-vsementsov@virtuozzo.com> References: <20181102151152.288399-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 1/3] error: add error_get_hint X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, armbru@redhat.com, mdroth@linux.vnet.ibm.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Add a function to export error hint - a pair to error_get_pretty. It's needed to handle errors by hand, where we can't just report it or propagate. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/qapi/error.h | 5 +++++ util/error.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/include/qapi/error.h b/include/qapi/error.h index 51b63dd4b5..ff2f61b877 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -139,6 +139,11 @@ typedef enum ErrorClass { */ const char *error_get_pretty(const Error *err); =20 +/* + * Get @err's hint if any. Otherwise return NULL. + */ +const char *error_get_hint(const Error *err); + /* * Get @err's error class. * Note: use of error classes other than ERROR_CLASS_GENERIC_ERROR is diff --git a/util/error.c b/util/error.c index b5ccbd8eac..e7cedd5c4a 100644 --- a/util/error.c +++ b/util/error.c @@ -223,6 +223,11 @@ const char *error_get_pretty(const Error *err) return err->msg; } =20 +const char *error_get_hint(const Error *err) +{ + return err->hint ? err->hint->str : NULL; +} + void error_report_err(Error *err) { error_report("%s", error_get_pretty(err)); --=20 2.18.0 From nobody Thu May 2 23:48:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1541171643274665.0891820174171; Fri, 2 Nov 2018 08:14:03 -0700 (PDT) Received: from localhost ([::1]:52107 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIb8w-00079f-GM for importer@patchew.org; Fri, 02 Nov 2018 11:13:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32859) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIb7C-0004b5-Tf for qemu-devel@nongnu.org; Fri, 02 Nov 2018 11:12:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIb78-0003JS-6z for qemu-devel@nongnu.org; Fri, 02 Nov 2018 11:12:02 -0400 Received: from relay.sw.ru ([185.231.240.75]:57842) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gIb77-0003IR-VB; Fri, 02 Nov 2018 11:11:58 -0400 Received: from [10.28.8.145] (helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1gIb73-0006Y4-MV; Fri, 02 Nov 2018 18:11:53 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Fri, 2 Nov 2018 18:11:51 +0300 Message-Id: <20181102151152.288399-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181102151152.288399-1-vsementsov@virtuozzo.com> References: <20181102151152.288399-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 2/3] nbd: publish _lookup functions X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, armbru@redhat.com, mdroth@linux.vnet.ibm.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" These functions are used for formatting pretty trace points. We are going to add some in block/nbd-client, so, let's publish all these functions at once. Note, that nbd_reply_type_lookup is already published, and constants, "named" by these functions live in include/block/nbd.h too. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Eric Blake --- include/block/nbd.h | 5 +++++ nbd/nbd-internal.h | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/include/block/nbd.h b/include/block/nbd.h index 6a5bfe5d55..65402d3396 100644 --- a/include/block/nbd.h +++ b/include/block/nbd.h @@ -343,5 +343,10 @@ static inline bool nbd_reply_is_structured(NBDReply *r= eply) } =20 const char *nbd_reply_type_lookup(uint16_t type); +const char *nbd_opt_lookup(uint32_t opt); +const char *nbd_rep_lookup(uint32_t rep); +const char *nbd_info_lookup(uint16_t info); +const char *nbd_cmd_lookup(uint16_t info); +const char *nbd_err_lookup(int err); =20 #endif diff --git a/nbd/nbd-internal.h b/nbd/nbd-internal.h index eeff78d3c9..f38be9ebaa 100644 --- a/nbd/nbd-internal.h +++ b/nbd/nbd-internal.h @@ -100,11 +100,6 @@ struct NBDTLSHandshakeData { =20 void nbd_tls_handshake(QIOTask *task, void *opaque); -const char *nbd_opt_lookup(uint32_t opt); -const char *nbd_rep_lookup(uint32_t rep); -const char *nbd_info_lookup(uint16_t info); -const char *nbd_cmd_lookup(uint16_t info); -const char *nbd_err_lookup(int err); =20 int nbd_drop(QIOChannel *ioc, size_t size, Error **errp); =20 --=20 2.18.0 From nobody Thu May 2 23:48:32 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=virtuozzo.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 154117164341391.32810995441162; Fri, 2 Nov 2018 08:14:03 -0700 (PDT) Received: from localhost ([::1]:52108 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIb8z-0007BO-1C for importer@patchew.org; Fri, 02 Nov 2018 11:13:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32863) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gIb7C-0004b7-UL for qemu-devel@nongnu.org; Fri, 02 Nov 2018 11:12:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gIb77-0003JA-TI for qemu-devel@nongnu.org; Fri, 02 Nov 2018 11:12:02 -0400 Received: from relay.sw.ru ([185.231.240.75]:57838) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gIb77-0003IO-JQ; Fri, 02 Nov 2018 11:11:57 -0400 Received: from [10.28.8.145] (helo=kvm.sw.ru) by relay.sw.ru with esmtp (Exim 4.90_1) (envelope-from ) id 1gIb73-0006Y4-QT; Fri, 02 Nov 2018 18:11:53 +0300 From: Vladimir Sementsov-Ogievskiy To: qemu-devel@nongnu.org, qemu-block@nongnu.org Date: Fri, 2 Nov 2018 18:11:52 +0300 Message-Id: <20181102151152.288399-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20181102151152.288399-1-vsementsov@virtuozzo.com> References: <20181102151152.288399-1-vsementsov@virtuozzo.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 185.231.240.75 Subject: [Qemu-devel] [PATCH 3/3] block/nbd-client: use traces instead of noisy error_report_err X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: kwolf@redhat.com, vsementsov@virtuozzo.com, armbru@redhat.com, mdroth@linux.vnet.ibm.com, mreitz@redhat.com, den@openvz.org, pbonzini@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Reduce extra noise of nbd-client, change 083 correspondingly. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/nbd-client.c | 27 +++++++++++++++++++++++---- block/trace-events | 4 ++++ tests/qemu-iotests/083.out | 28 ---------------------------- 3 files changed, 27 insertions(+), 32 deletions(-) diff --git a/block/nbd-client.c b/block/nbd-client.c index 9686ecbd5e..9b1dab6e5d 100644 --- a/block/nbd-client.c +++ b/block/nbd-client.c @@ -28,6 +28,8 @@ */ =20 #include "qemu/osdep.h" + +#include "trace.h" #include "qapi/error.h" #include "nbd-client.h" =20 @@ -79,7 +81,9 @@ static coroutine_fn void nbd_read_reply_entry(void *opaqu= e) assert(s->reply.handle =3D=3D 0); ret =3D nbd_receive_reply(s->ioc, &s->reply, &local_err); if (local_err) { - error_report_err(local_err); + trace_nbd_read_reply_entry_fail(ret, error_get_pretty(local_er= r), + error_get_hint(local_err) ?: "= "); + error_free(local_err); } if (ret <=3D 0) { break; @@ -771,7 +775,12 @@ static int nbd_co_request(BlockDriverState *bs, NBDReq= uest *request, =20 ret =3D nbd_co_receive_return_code(client, request->handle, &local_err= ); if (local_err) { - error_report_err(local_err); + trace_nbd_co_request_fail(request->from, request->len, request->ha= ndle, + request->flags, request->type, + nbd_cmd_lookup(request->type), + ret, error_get_pretty(local_err), + error_get_hint(local_err) ?: ""); + error_free(local_err); } return ret; } @@ -802,7 +811,12 @@ int nbd_client_co_preadv(BlockDriverState *bs, uint64_= t offset, ret =3D nbd_co_receive_cmdread_reply(client, request.handle, offset, q= iov, &local_err); if (local_err) { - error_report_err(local_err); + trace_nbd_co_request_fail(request.from, request.len, request.handl= e, + request.flags, request.type, + nbd_cmd_lookup(request.type), + ret, error_get_pretty(local_err), + error_get_hint(local_err) ?: ""); + error_free(local_err); } return ret; } @@ -925,7 +939,12 @@ int coroutine_fn nbd_client_co_block_status(BlockDrive= rState *bs, ret =3D nbd_co_receive_blockstatus_reply(client, request.handle, bytes, &extent, &local_err); if (local_err) { - error_report_err(local_err); + trace_nbd_co_request_fail(request.from, request.len, request.handl= e, + request.flags, request.type, + nbd_cmd_lookup(request.type), + ret, error_get_pretty(local_err), + error_get_hint(local_err) ?: ""); + error_free(local_err); } if (ret < 0) { return ret; diff --git a/block/trace-events b/block/trace-events index 3e8c47bb24..f518432300 100644 --- a/block/trace-events +++ b/block/trace-events @@ -156,3 +156,7 @@ nvme_cmd_map_qiov_iov(void *s, int i, void *page, int p= ages) "s %p iov[%d] %p pa =20 # block/iscsi.c iscsi_xcopy(void *src_lun, uint64_t src_off, void *dst_lun, uint64_t dst_o= ff, uint64_t bytes, int ret) "src_lun %p offset %"PRIu64" dst_lun %p offset= %"PRIu64" bytes %"PRIu64" ret %d" + +# block/nbd-client.c +nbd_read_reply_entry_fail(int ret, const char *err, const char *hint) "ret= =3D %d, err: %s%s" +nbd_co_request_fail(uint64_t from, uint32_t len, uint64_t handle, uint16_t= flags, uint16_t type, const char *name, int ret, const char *err, const ch= ar *hint) "Request failed { .from =3D %" PRIu64", .len =3D %" PRIu32 ", .ha= ndle =3D %" PRIu64 ", .flags =3D 0x%" PRIx16 ", .type =3D %" PRIu16 " (%s) = } ret =3D %d, err: %s%s" diff --git a/tests/qemu-iotests/083.out b/tests/qemu-iotests/083.out index f9af8bb691..7419722cd7 100644 --- a/tests/qemu-iotests/083.out +++ b/tests/qemu-iotests/083.out @@ -41,8 +41,6 @@ can't open device nbd+tcp://127.0.0.1:PORT/foo =20 =3D=3D=3D Check disconnect after neg2 =3D=3D=3D =20 -Unable to read from socket: Connection reset by peer -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect 8 neg2 =3D=3D=3D @@ -55,40 +53,30 @@ can't open device nbd+tcp://127.0.0.1:PORT/foo =20 =3D=3D=3D Check disconnect before request =3D=3D=3D =20 -Unable to read from socket: Connection reset by peer -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect after request =3D=3D=3D =20 -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect before reply =3D=3D=3D =20 -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect after reply =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read read failed: Input/output error =20 =3D=3D=3D Check disconnect 4 reply =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect 8 reply =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect before data =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read read failed: Input/output error =20 =3D=3D=3D Check disconnect after data =3D=3D=3D @@ -118,8 +106,6 @@ can't open device nbd+tcp://127.0.0.1:PORT/ =20 =3D=3D=3D Check disconnect after neg-classic =3D=3D=3D =20 -Unable to read from socket: Connection reset by peer -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect before neg1 =3D=3D=3D @@ -164,8 +150,6 @@ can't open device nbd+unix:///foo?socket=3DTEST_DIR/nbd= .sock =20 =3D=3D=3D Check disconnect after neg2 =3D=3D=3D =20 -Unable to read from socket: Connection reset by peer -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect 8 neg2 =3D=3D=3D @@ -178,40 +162,30 @@ can't open device nbd+unix:///foo?socket=3DTEST_DIR/n= bd.sock =20 =3D=3D=3D Check disconnect before request =3D=3D=3D =20 -Unable to read from socket: Connection reset by peer -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect after request =3D=3D=3D =20 -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect before reply =3D=3D=3D =20 -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect after reply =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read read failed: Input/output error =20 =3D=3D=3D Check disconnect 4 reply =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect 8 reply =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read -Connection closed read failed: Input/output error =20 =3D=3D=3D Check disconnect before data =3D=3D=3D =20 -Unexpected end-of-file before all bytes were read read failed: Input/output error =20 =3D=3D=3D Check disconnect after data =3D=3D=3D @@ -241,8 +215,6 @@ can't open device nbd+unix:///?socket=3DTEST_DIR/nbd.so= ck =20 =3D=3D=3D Check disconnect after neg-classic =3D=3D=3D =20 -Unable to read from socket: Connection reset by peer -Connection closed read failed: Input/output error =20 *** done --=20 2.18.0