From nobody Mon Feb 9 02:25:14 2026 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; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1530215999541782.0051830572658; Thu, 28 Jun 2018 12:59:59 -0700 (PDT) Received: from localhost ([::1]:38252 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd53-0003Ol-IS for importer@patchew.org; Thu, 28 Jun 2018 15:59:49 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36376) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd36-0002DD-Ay for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYd33-0000SR-RI for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:48 -0400 Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:50987) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYd33-0000Qk-Ki for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:45 -0400 Received: by mail-wm0-x229.google.com with SMTP id e16-v6so10965341wmd.0 for ; Thu, 28 Jun 2018 12:57:45 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id d102-v6sm12516646wma.10.2018.06.28.12.57.43 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 12:57:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=LEJpmGTR1sh04RSAdXZRZhe7n//wduG1WmzvBNmdzrg=; b=uuza2BrlzVrmW24nRHc1m6pE8GV23CMYbFNkezyfOMam+A12zC0iP0DmaJMCsV2n5A rj+X6rQh8RUBl0IwTY8g6/avK8SwNF+4MfOAIeXE57H0jrW179aKaz86DjY7JMZqvYwq gnaHmql84ICwhYdCkDF43lSroduCl6k/Cs9ta74IyDwWYd5Zf4vU3g3D3qlXd5rez3CP yuAp+Q0eMoh2bA9TQBDE6tjjBqLf/Uvbf3TGswbo5y0d8eo+/C7pJyuxd/LmUOS00XTy 0Q5k9IpDXAE9/i8zufkGe5cJiMW7WgpG3aSpxwe7HmxZTRudEeKKJAlOCeX5JGVU46vz 63gw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=LEJpmGTR1sh04RSAdXZRZhe7n//wduG1WmzvBNmdzrg=; b=dzFBRWEbGzzmYBw6UFo7MfJqfcR2/NipCCAk2jTR2/mcJO2idk9NC2Ljo3tqZ7mViC WRnJrRQMqI/Xbk0Y/kY6Y3Mf4AbsgZ92V5OuS6SMWkpPv3sCDC+X50XpxYRGerCLJbCv +IdBrPvhkTChG0/cWQleODkKbUuyrT7rSYUgl7yX6bAIUTyQVkSjgTDcLQ4dDeCg2M4f m4QodIn2/5pbbvMrcpr2cZmPyktpPQNkx8VLgPaB7bv/b9cDAXNVMlaRYG+RbPGRMPLJ Boh0DXCYXI8dgksHEWkz0OIXINOlgzCfTrwqEigWLzW5vZe/RDRz0XdVk3Inx868SOch YKSw== X-Gm-Message-State: APt69E1jpLi9hSXB3BT7C/fU4GgbL1nmg/z+H6jRmiVSc019jhlqj3uB Sz8lRuxbp9Z9KpkhEdteBPe37j96 X-Google-Smtp-Source: AAOMgpe6jSZsYvyQkdfCnR8b9MEbopobICUIpwHbswM/ZTPsZK1InWIhByNo0wSlua0rgdfFF8hCJw== X-Received: by 2002:a1c:d884:: with SMTP id p126-v6mr8747311wmg.110.1530215864238; Thu, 28 Jun 2018 12:57:44 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 21:57:33 +0200 Message-Id: <1530215858-1525-2-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> References: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::229 Subject: [Qemu-devel] [PATCH 1/6] pr-helper: fix --socket-path default in help 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Currently --help shows "(default '(null)')" for the -k/--socket-path option. Fix it by getting the default path in /var/run. Signed-off-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- scsi/qemu-pr-helper.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c index d0f8317..4057cf3 100644 --- a/scsi/qemu-pr-helper.c +++ b/scsi/qemu-pr-helper.c @@ -74,8 +74,16 @@ static int uid =3D -1; static int gid =3D -1; #endif =20 +static void compute_default_paths(void) +{ + if (!socket_path) { + socket_path =3D qemu_get_local_state_pathname("run/qemu-pr-helper.= sock"); + } +} + static void usage(const char *name) { + compute_default_paths(); (printf) ( "Usage: %s [OPTIONS] FILE\n" "Persistent Reservation helper program for QEMU\n" @@ -845,13 +853,6 @@ static const char *socket_activation_validate_opts(voi= d) return NULL; } =20 -static void compute_default_paths(void) -{ - if (!socket_path) { - socket_path =3D qemu_get_local_state_pathname("run/qemu-pr-helper.= sock"); - } -} - static void termsig_handler(int signum) { atomic_cmpxchg(&state, RUNNING, TERMINATE); --=20 1.8.3.1 From nobody Mon Feb 9 02:25:14 2026 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; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1530215993542835.255520786393; Thu, 28 Jun 2018 12:59:53 -0700 (PDT) Received: from localhost ([::1]:38251 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd51-0003MQ-5S for importer@patchew.org; Thu, 28 Jun 2018 15:59:47 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36381) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd36-0002DG-Bm for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYd34-0000UP-Rq for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:48 -0400 Received: from mail-wm0-x232.google.com ([2a00:1450:400c:c09::232]:40195) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYd34-0000Sc-J0 for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:46 -0400 Received: by mail-wm0-x232.google.com with SMTP id z13-v6so10273890wma.5 for ; Thu, 28 Jun 2018 12:57:46 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id d102-v6sm12516646wma.10.2018.06.28.12.57.44 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 12:57:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=NNxdw9EfoglPw0eE0yAPZpny98Ei/3+q+kS3oSgkaso=; b=Z2oXQVqIHrdQWELXdnAg2CpoDcNzQnLIWu+0VP4JnWaSDCwyZaBj1AOPPzt0yU7RCF +LYFWqzfYRnwPhKEaFvj0f4eeBosgHg2q8FtnEz/jUF4/k5onVENcmPMUluYJt7fqBDZ 5lkTCWQFICeXimWM9ZHJ+MuvKVPPndp5kbD8gkq+vAli86yynhDcO/EyCEMWx/XaDCkQ UGOzxGbS1lyTIq6qPt4UezIEqlyNmDEEOhWY4DRkD9suphMlm4kPva0d7MeUcNEz82q2 6QTs+DlwpTruzUAaYq9BHxH/LuuKkMWCHQlvtHrPZPT0gKAonpbGOndCKE8Fxrhhem21 LcIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=NNxdw9EfoglPw0eE0yAPZpny98Ei/3+q+kS3oSgkaso=; b=HXndSOg/NWcs53HdVF6W6xLsC9ZAM9lEv/MYrW4XpAGM4D9H87fzqFlRJ+q1TIP06G CmtDYvxLbp5M+LV/EObwCYABSHJeRre+lTT6ra6eTiqxtRzOMeSenDPzGcnUbiyDa2BT ziQFui9TJd/McMOZFSZJUmgVtAfVGDTmCWAOqt7jgNNVl9s4B18ZIL4uX2QoBsmC7mb+ TpJhUQufCIQ/C9bxgHuhd2Eiwj0uTBPYqopUGJSEISu4jZ3+w5svHY7dHPBweKuvMKvx Hbuluy+jYMFXY8StOs+IFE1p0a/AXk8Oi5ilG1nbUWiWBww3sdanQTl+0EVZ/06ojJii VRiw== X-Gm-Message-State: APt69E3QFavmRvoGLrKQsyO7tIvULi4aaJxxBzPfxLKhapbFFSiyIiBU mHz+1rJdq8rdOsjo5ExLL/zj0u/h X-Google-Smtp-Source: AAOMgpc5qKTNbwqTeJkhvUNYFkfFaE4Ub7jB/IyJdQJxwzR8Ef95hWEa5mZeNUpulXuLJrJYuWsOKw== X-Received: by 2002:a1c:8312:: with SMTP id f18-v6mr9538531wmd.127.1530215865188; Thu, 28 Jun 2018 12:57:45 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 21:57:34 +0200 Message-Id: <1530215858-1525-3-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> References: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::232 Subject: [Qemu-devel] [PATCH 2/6] pr-helper: fix assertion failure on failed multipath PERSISTENT RESERVE IN 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 The response size is expected to be zero if the SCSI status is not "GOOD", but nothing was resetting it. This can be reproduced simply by "sg_persist -s /dev/sdb" where /dev/sdb in the guest is a scsi-block device corresponding to a multipath device on the host. Before: PR in (Read full status): Aborted command and on the host: prh_write_response: Assertion `resp->sz =3D=3D 0' failed. After: PR in (Read full status): bad field in cdb or parameter list (perhaps unsupported service action) Reported-by: Jiri Belka Reviewed-by: Michal Privoznik Signed-off-by: Paolo Bonzini Reviewed-by: Paolo Bonzini Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- scsi/qemu-pr-helper.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c index 4057cf3..0218d65 100644 --- a/scsi/qemu-pr-helper.c +++ b/scsi/qemu-pr-helper.c @@ -558,7 +558,11 @@ static int do_pr_in(int fd, const uint8_t *cdb, uint8_= t *sense, #ifdef CONFIG_MPATH if (is_mpath(fd)) { /* multipath_pr_in fills the whole input buffer. */ - return multipath_pr_in(fd, cdb, sense, data, *resp_sz); + int r =3D multipath_pr_in(fd, cdb, sense, data, *resp_sz); + if (r !=3D GOOD) { + *resp_sz =3D 0; + } + return r; } #endif =20 --=20 1.8.3.1 From nobody Mon Feb 9 02:25:14 2026 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; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 153021599570928.901792784636655; Thu, 28 Jun 2018 12:59:55 -0700 (PDT) Received: from localhost ([::1]:38248 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd4y-0003Ka-LE for importer@patchew.org; Thu, 28 Jun 2018 15:59:44 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36378) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd36-0002DE-B8 for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYd35-0000W6-KT for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:48 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:55366) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYd35-0000UB-Di for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:47 -0400 Received: by mail-wm0-x244.google.com with SMTP id v16-v6so11034033wmv.5 for ; Thu, 28 Jun 2018 12:57:47 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id d102-v6sm12516646wma.10.2018.06.28.12.57.45 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 12:57:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=SJWSu/co/e56+DQruRImg1DYHL9dO8HtFEc5qpwCORQ=; b=u8SQNNvvNR2T+1SB5VEBr6SIZWc64FPkD+bfiEhYopJa4jyBvMoKbzXvjAktVySBV1 6cbudqX+eVxgQo+CcaYLP7NrG+YfEkaLDnBQvMCc+ry6E0cbHAQZJyYvxrROnKdy65Us SlQ441eo43TgliF6k2cerEh8bqa2KbfZDZDcDRB5s8znQqgnVJ1qharpGiueBD96K/Q1 7Kks58Q61WkVJmiGy+k0pFzCR6qZ7qAxmfbfEz7TzSQpBqfW819d3VMOX5W2zs3CcZtb IY/TPKmezsW1KIPxQTpo9DlWc30s/IdwBWiAZVeYuCJNZXoYMBFWkS3oVRZfB3RZA3Py 2jOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=SJWSu/co/e56+DQruRImg1DYHL9dO8HtFEc5qpwCORQ=; b=H31dsF7FeD40RCMLQs+xO+RYm/uxMybkXMvogiC6vCdnToBh0PT5fscBRlJHuS3c9j 5StECfEs+b31huG6bleLE51UxfBRBXANTHrneZ/0OaYWZpzF86XG8xdK42DvYXRo3ecY ytrbP8RChGYQl6Q0onLQR7rgDpwcbZGlB5XoPcvP4om97AEW7y99hFRI/dl2Zb9fQr3i 5TWvQYz/9WtyJ3mqpimsKrUqv3hZqASzHT94ziZIdx/On5JGGrG8Zuxc0b4Gk0QRff2J hcLalLeBP08nMn9g8FQvP9tfmFbvvWvV2t/VjQgKBMub5xvgFRKTFdasGoEILdKNAle8 GqLA== X-Gm-Message-State: APt69E0JtLm9gRvJuAh2loxh66KjCp8Z7gJGyRQfGnoVie8JOGO06vcK wZmkvpB9yE6WoUTH4GSQIa2nVDGh X-Google-Smtp-Source: AAOMgpckCJkJhdrNURu5TrhNR5SATk1f3x/WUCcqJi887wkcG0xJ2wM7KH79ULRTcghA4WnBSErK3g== X-Received: by 2002:a1c:850c:: with SMTP id h12-v6mr8987230wmd.116.1530215866009; Thu, 28 Jun 2018 12:57:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 21:57:35 +0200 Message-Id: <1530215858-1525-4-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> References: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::244 Subject: [Qemu-devel] [PATCH 3/6] pr-manager-helper: avoid SIGSEGV when writing to the socket fail 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" When writing to the qemu-pr-helper socket failed, the persistent reservation manager was correctly disconnecting the socket, but it did not clear pr_mgr->ioc. So the rest of the code did not know that the socket had been disconnected, accessed pr_mgr->ioc and happily caused a crash. To reproduce, it is enough to stop qemu-pr-helper between QEMU startup and executing e.g. sg_persist -k /dev/sdb. Reviewed-by: Michal Privoznik Signed-off-by: Paolo Bonzini --- scsi/pr-manager-helper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c index 82ff6b6..0c0fe38 100644 --- a/scsi/pr-manager-helper.c +++ b/scsi/pr-manager-helper.c @@ -71,6 +71,7 @@ static int pr_manager_helper_write(PRManagerHelper *pr_mg= r, if (n_written <=3D 0) { assert(n_written !=3D QIO_CHANNEL_ERR_BLOCK); object_unref(OBJECT(pr_mgr->ioc)); + pr_mgr->ioc =3D NULL; return n_written < 0 ? -EINVAL : 0; } =20 --=20 1.8.3.1 From nobody Mon Feb 9 02:25:14 2026 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; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1530216123486195.14728145032961; Thu, 28 Jun 2018 13:02:03 -0700 (PDT) Received: from localhost ([::1]:38269 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd7C-0005Q2-Mw for importer@patchew.org; Thu, 28 Jun 2018 16:02:02 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36411) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd37-0002DZ-Hc for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:50 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYd36-0000ZC-JT for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:49 -0400 Received: from mail-wr0-x243.google.com ([2a00:1450:400c:c0c::243]:39143) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYd36-0000WI-Al for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:48 -0400 Received: by mail-wr0-x243.google.com with SMTP id b8-v6so6658913wro.6 for ; Thu, 28 Jun 2018 12:57:48 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id d102-v6sm12516646wma.10.2018.06.28.12.57.46 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 12:57:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=lwGal+cYmL5tuooR3D3HxGQkn5aetGa//QdgjO06iPc=; b=EGq77rVnsyE0rPbztPLKQsA1imu915oGQqmQVYXflN44gc3fr7BgWuh02+ksdvA3r4 SHb3Jrk07ixLCie9ZxFrWrwbBqe8G/YJRykj2DxtRTDoM0fRlYBcJSU04F7atV6CTYcS 0DYr8UmHbUlcHi1dbxh2Ptwzz/VkqBz6OgGE6ZbuK3IfNgEJR1lFB1KrrnJcZfL9gc0q TaL6h7Sx3vdE+8MQEvD+agIxUBmmHj4ux5/wwWygo15bK52tdpAqSc2mB6z/gSKl73kO vV1kCPGV30Xru19biEPr1wVTSWqdsjkOkje/TOtqIbtkM5lpAeGHDVY+6SOcrHghQ2QN 90bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=lwGal+cYmL5tuooR3D3HxGQkn5aetGa//QdgjO06iPc=; b=j+AIDtIcZkNnyLnlgC57EU05oPu7m8pBPzULmQNojdJc0v00ZZa7ujIWCmzDQ3J+th jHh8/QUUTLB1S41p/veytgOM74nR8WS5UodBv9ctqFGfnJnxs9/qly1lIqWpITOcYsCC KOK3vFcz9jx0rUmV8k3md/NvO9VRNtZ83XO6Qn/XKv3LZTCKIKNcAaZzFDBeAda6nKCC TY2jOCT/RnAEe48RLnbl1VT6V0t2w1Xf7NezPMvMnWsWlvmtGhhCUYR2TUeLxj0OWJIx H6z2kM7FPKzHq5mCsqe5WeHXwXgmG4AXBPqOmlL7eWdlvfUGPUSakAjnDfELwipYgSOw LOag== X-Gm-Message-State: APt69E1Rs9haAo7teXZuIiesgtn1yRp4IETUdX5c1IluGCFh9WqJdC4j jro4zpo0IUjEUjme8ZWQowWM2DAt X-Google-Smtp-Source: AAOMgpdpT938RkcpQVK5PowU/+1Kf7wNWrxCuthQcQmBkhuxwIzfE87/fkzSiFSdnpM9fg69Sm1/fg== X-Received: by 2002:adf:9226:: with SMTP id 35-v6mr6334794wrj.44.1530215866915; Thu, 28 Jun 2018 12:57:46 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 21:57:36 +0200 Message-Id: <1530215858-1525-5-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> References: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::243 Subject: [Qemu-devel] [PATCH 4/6] pr-manager: put stubs in .c file 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Paolo Bonzini --- include/scsi/pr-manager.h | 9 --------- scsi/Makefile.objs | 1 + scsi/pr-manager-stub.c | 24 ++++++++++++++++++++++++ 3 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 scsi/pr-manager-stub.c diff --git a/include/scsi/pr-manager.h b/include/scsi/pr-manager.h index 5d2f13a..71971ae 100644 --- a/include/scsi/pr-manager.h +++ b/include/scsi/pr-manager.h @@ -41,15 +41,6 @@ BlockAIOCB *pr_manager_execute(PRManager *pr_mgr, BlockCompletionFunc *complete, void *opaque); =20 -#ifdef CONFIG_LINUX PRManager *pr_manager_lookup(const char *id, Error **errp); -#else -static inline PRManager *pr_manager_lookup(const char *id, Error **errp) -{ - /* The classes do not exist at all! */ - error_setg(errp, "No persistent reservation manager with id '%s'", id); - return NULL; -} -#endif =20 #endif diff --git a/scsi/Makefile.objs b/scsi/Makefile.objs index 4d25e47..bb8789c 100644 --- a/scsi/Makefile.objs +++ b/scsi/Makefile.objs @@ -1,3 +1,4 @@ block-obj-y +=3D utils.o =20 block-obj-$(CONFIG_LINUX) +=3D pr-manager.o pr-manager-helper.o +block-obj-$(call lnot,$(CONFIG_LINUX)) +=3D pr-manager-stub.o diff --git a/scsi/pr-manager-stub.c b/scsi/pr-manager-stub.c new file mode 100644 index 0000000..632f17c --- /dev/null +++ b/scsi/pr-manager-stub.c @@ -0,0 +1,24 @@ +/* + * Persistent reservation manager - stub for non-Linux platforms + * + * Copyright (c) 2018 Red Hat, Inc. + * + * Author: Paolo Bonzini + * + * This code is licensed under the LGPL. + * + */ + +#include "qemu/osdep.h" +#include "qapi/error.h" +#include "scsi/pr-manager.h" +#include "trace.h" +#include "qapi/qapi-types-block.h" +#include "qapi/qapi-commands-block.h" + +PRManager *pr_manager_lookup(const char *id, Error **errp) +{ + /* The classes do not exist at all! */ + error_setg(errp, "No persistent reservation manager with id '%s'", id); + return NULL; +} --=20 1.8.3.1 From nobody Mon Feb 9 02:25:14 2026 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; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1530216216388132.5734409896869; Thu, 28 Jun 2018 13:03:36 -0700 (PDT) Received: from localhost ([::1]:38273 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd8h-0006Ix-Mp for importer@patchew.org; Thu, 28 Jun 2018 16:03:35 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36425) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd38-0002Di-V2 for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYd37-0000bt-Lx for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:51 -0400 Received: from mail-wm0-x22b.google.com ([2a00:1450:400c:c09::22b]:50989) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYd37-0000ZU-BA for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:49 -0400 Received: by mail-wm0-x22b.google.com with SMTP id e16-v6so10965504wmd.0 for ; Thu, 28 Jun 2018 12:57:49 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id d102-v6sm12516646wma.10.2018.06.28.12.57.46 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 12:57:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=s6FUk87YKGeyiKgWUIZtX/7jlAuSyOv4eI+XEFoPLok=; b=L30be9i30kUrTRZWzaXglnQtn3xzGUZU7LCa8lQaCaVs9GgKAPS08cnpjUuKmeAyhD 6eM2DfEiZwvWUZfJLuPP/4+iqkVzYiTpSOCUaBykqUoEKxEYrMlW1n28v8R+qf7H9txw 9qNKXRAMqY4JtAJSryuvj38w64uQAEGWKdITqY+l2m7bbad08XqG9a7h7lV4mCYii1ni rpQvKJLTlMlgdOHf3+ECZB4b5uRSeKYO9Ni6DSx2r4Y3TZ13DHVEJUYUPG7jaCAMPtmy ynGFMqm68K9b9gNqE2IrMqYTBlt/O7x54vpmPSZKcWTqgU6ulmGPHufSZl0eY1aIpb/x Vs0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=s6FUk87YKGeyiKgWUIZtX/7jlAuSyOv4eI+XEFoPLok=; b=gKcw6Q19tHYx3TEUN7+pjhCLnf2QYJ4t6YepCPlL7gffZWBpOM1Zjq9LfOmQ2Y39BM nPBBi+S+Qa0yOAwOdnTBGaOdqfArU/N9oYDCB0ormnDjFhMkeX0VDX4Ivx+0NW50oBRw 2jrUFWMVxR0LiTuzJUeahG8lfjI2pxD6+cDb22/sV6NmeBev4AE4tri75JtknCPkVQEI 5A3C3g2r9oom6uSsRVnOxgl5oqzT4+doZMdbmc2h1k4PHo8tKY4IUOJit1RYfkSKWQrv 0zyttZ/tfyWmeFOgsc8UhrkPrTZrQbgAKT5AMd8qD7ahyNSSgqKeVPT2aWY+NjLfT6M9 /r2g== X-Gm-Message-State: APt69E0YqiyWPXla20xNzbeG/jU8+d1RSFc0SelO31YsKGZKAKPOEh6N qk6yyxXi3wmt2OlkELfTI5d/DkxN X-Google-Smtp-Source: AAOMgpcJqZk5FdkCJIoMjRhihi4r+KlpGs7exl4cqe3FSQO7H8C9Qq4Jw1PZXO68z5MzpwDL+/nvqQ== X-Received: by 2002:a1c:6502:: with SMTP id z2-v6mr8795487wmb.15.1530215867854; Thu, 28 Jun 2018 12:57:47 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 21:57:37 +0200 Message-Id: <1530215858-1525-6-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> References: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::22b Subject: [Qemu-devel] [PATCH 5/6] pr-manager: add query-pr-managers QMP command 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This command lets you query the connection status of each pr-manager-helper object. Signed-off-by: Paolo Bonzini --- include/scsi/pr-manager.h | 2 ++ qapi/block.json | 28 ++++++++++++++++++++++++++++ scsi/pr-manager-helper.c | 13 +++++++++++++ scsi/pr-manager-stub.c | 6 ++++++ scsi/pr-manager.c | 45 +++++++++++++++++++++++++++++++++++++++++++= ++ 5 files changed, 94 insertions(+) diff --git a/include/scsi/pr-manager.h b/include/scsi/pr-manager.h index 71971ae..50a77b0 100644 --- a/include/scsi/pr-manager.h +++ b/include/scsi/pr-manager.h @@ -33,8 +33,10 @@ typedef struct PRManagerClass { =20 /* */ int (*run)(PRManager *pr_mgr, int fd, struct sg_io_hdr *hdr); + bool (*is_connected)(PRManager *pr_mgr); } PRManagerClass; =20 +bool pr_manager_is_connected(PRManager *pr_mgr); BlockAIOCB *pr_manager_execute(PRManager *pr_mgr, AioContext *ctx, int fd, struct sg_io_hdr *hdr, diff --git a/qapi/block.json b/qapi/block.json index ca807f1..8765c29 100644 --- a/qapi/block.json +++ b/qapi/block.json @@ -78,6 +78,34 @@ 'data': { 'device': 'str', 'name': 'str' } } =20 ## +# @PRManagerInfo: +# +# Information about a persistent reservation manager +# +# @id: the identifier of the persistent reservation manager +# +# @connected: true if the persistent reservation manager is connected to +# the underlying storage or helper +# +# Since: 3.0 +## +{ 'struct': 'PRManagerInfo', + 'data': {'id': 'str', 'connected': 'bool'} } + +## +# @query-pr-managers: +# +# Returns a list of information about each persistent reservation manager. +# +# Returns: a list of @PRManagerInfo for each persistent reservation manager +# +# Since: 3.0 +## +{ 'command': 'query-pr-managers', 'returns': ['PRManagerInfo'], + 'allow-preconfig': true } + + +## # @blockdev-snapshot-internal-sync: # # Synchronously take an internal snapshot of a block device, when the diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c index 0c0fe38..b11481b 100644 --- a/scsi/pr-manager-helper.c +++ b/scsi/pr-manager-helper.c @@ -235,6 +235,18 @@ out: return ret; } =20 +static bool pr_manager_helper_is_connected(PRManager *p) +{ + PRManagerHelper *pr_mgr =3D PR_MANAGER_HELPER(p); + bool result; + + qemu_mutex_lock(&pr_mgr->lock); + result =3D (pr_mgr->ioc !=3D NULL); + qemu_mutex_unlock(&pr_mgr->lock); + + return result; +} + static void pr_manager_helper_complete(UserCreatable *uc, Error **errp) { PRManagerHelper *pr_mgr =3D PR_MANAGER_HELPER(uc); @@ -284,6 +296,7 @@ static void pr_manager_helper_class_init(ObjectClass *k= lass, &error_abort); uc_klass->complete =3D pr_manager_helper_complete; prmgr_klass->run =3D pr_manager_helper_run; + prmgr_klass->is_connected =3D pr_manager_helper_is_connected; } =20 static const TypeInfo pr_manager_helper_info =3D { diff --git a/scsi/pr-manager-stub.c b/scsi/pr-manager-stub.c index 632f17c..738b6d7 100644 --- a/scsi/pr-manager-stub.c +++ b/scsi/pr-manager-stub.c @@ -22,3 +22,9 @@ PRManager *pr_manager_lookup(const char *id, Error **errp) error_setg(errp, "No persistent reservation manager with id '%s'", id); return NULL; } + + +PRManagerInfoList *qmp_query_pr_managers(Error **errp) +{ + return NULL; +} diff --git a/scsi/pr-manager.c b/scsi/pr-manager.c index 87c45db..2a8f300 100644 --- a/scsi/pr-manager.c +++ b/scsi/pr-manager.c @@ -17,6 +17,10 @@ #include "block/thread-pool.h" #include "scsi/pr-manager.h" #include "trace.h" +#include "qapi/qapi-types-block.h" +#include "qapi/qapi-commands-block.h" + +#define PR_MANAGER_PATH "/objects" =20 typedef struct PRManagerData { PRManager *pr_mgr; @@ -64,6 +68,14 @@ BlockAIOCB *pr_manager_execute(PRManager *pr_mgr, data, complete, opaque); } =20 +bool pr_manager_is_connected(PRManager *pr_mgr) +{ + PRManagerClass *pr_mgr_class =3D + PR_MANAGER_GET_CLASS(pr_mgr); + + return !pr_mgr_class->is_connected || pr_mgr_class->is_connected(pr_mg= r); +} + static const TypeInfo pr_manager_info =3D { .parent =3D TYPE_OBJECT, .name =3D TYPE_PR_MANAGER, @@ -105,5 +117,38 @@ pr_manager_register_types(void) type_register_static(&pr_manager_info); } =20 +static int query_one_pr_manager(Object *object, void *opaque) +{ + PRManagerInfoList ***prev =3D opaque; + PRManagerInfoList *elem; + PRManagerInfo *info; + PRManager *pr_mgr; + + pr_mgr =3D (PRManager *)object_dynamic_cast(object, TYPE_PR_MANAGER); + if (!pr_mgr) { + return 0; + } + + elem =3D g_new0(PRManagerInfoList, 1); + info =3D g_new0(PRManagerInfo, 1); + info->id =3D object_get_canonical_path_component(object); + info->connected =3D pr_manager_is_connected(pr_mgr); + elem->value =3D info; + elem->next =3D NULL; + + **prev =3D elem; + *prev =3D &elem->next; + return 0; +} + +PRManagerInfoList *qmp_query_pr_managers(Error **errp) +{ + PRManagerInfoList *head =3D NULL; + PRManagerInfoList **prev =3D &head; + Object *container =3D container_get(object_get_root(), PR_MANAGER_PATH= ); + + object_child_foreach(container, query_one_pr_manager, &prev); + return head; +} =20 type_init(pr_manager_register_types); --=20 1.8.3.1 From nobody Mon Feb 9 02:25:14 2026 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; dkim=fail; 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=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1530216121734830.2594163853935; Thu, 28 Jun 2018 13:02:01 -0700 (PDT) Received: from localhost ([::1]:38268 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd7B-0005Oh-1s for importer@patchew.org; Thu, 28 Jun 2018 16:02:01 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36431) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYd39-0002EZ-IU for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYd38-0000dN-Ac for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:51 -0400 Received: from mail-wm0-x233.google.com ([2a00:1450:400c:c09::233]:37634) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fYd38-0000bS-4T for qemu-devel@nongnu.org; Thu, 28 Jun 2018 15:57:50 -0400 Received: by mail-wm0-x233.google.com with SMTP id n17-v6so9744001wmh.2 for ; Thu, 28 Jun 2018 12:57:49 -0700 (PDT) Received: from 640k.lan ([82.84.124.111]) by smtp.gmail.com with ESMTPSA id d102-v6sm12516646wma.10.2018.06.28.12.57.47 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 28 Jun 2018 12:57:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=mO0hAaOtHPtWRlC0Qa+Uf+wdjguiZp5fFePRKqCfNrk=; b=NCdkL15Q+jG9REyN9ZfOOgkAzD/eISuImW0GCkxKK/K6DP9GreCrf51Doe710D5w++ 3I3A4HbPDg3dydTrcCcdKLVm0x5iDEkYD+RkmaY/FEF+KAb1Cf8eotUCR7tp1OtC9Z4W BpxIxY8ja3GeefQnkf94CqUgxXytSshBgdvpv+7NBwVWY3l3+wdbcNvpU9sSgQDfg+uZ PI5q6jQSWrH3UrJK/uRxVOyrjlYwGfxDchO5YOVrg/iw2gnHJY7GLbyBeSsgpZiEDJwc r+6Tkl/Bh/0kXZi6HV7ZOHJ+OAar1EDrnb8pTUT5ZMgyFmdS9y6TIr+xGZ6M/lAVz9cK 3QNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=mO0hAaOtHPtWRlC0Qa+Uf+wdjguiZp5fFePRKqCfNrk=; b=eSLivZBt8k06avA9Pnf8o8rjCic24d8jV35gLl4CMHOhDMwM1pBUAvJBdMaPB5I25b V3u7epxie60jtA28jrb4/jJKkpbukJxurVraqGcBkiDs04V+3HpTEqMjhGOVU/zzha0F sV/C85ujnvK10ecEUUKEErId0bh+iBUa5N/xOiu7u9FDUPucEU5HQVb3wW5tJ2arkzo9 BJ1VJZd9D9QiVffG97choSPloCI5KAb+62DmH2s7sCcge5eTQwTC23WZ1GcX86g/x9eK bHdVcPcfrPiJFk7TLQJLQ9wcy2iWzNIpWiBTRrxM07lBh4L0sRRVqhBjsGreakCDWraw oCqQ== X-Gm-Message-State: APt69E1fkJQVL2aB0EUvuikb5lmIbamiKkSu8RzupzA0RLBQVusU61LT PvDGfDdwss8Gk3XEs/nq1gidJpOM X-Google-Smtp-Source: AAOMgpcjRQhKmPFaBVC3xsaNDKBqphnhlpVQljhg+t8EXoGHAJH+Uyawd1PiCjUTm0vAmws2DkwDXA== X-Received: by 2002:a1c:abc6:: with SMTP id u189-v6mr9046971wme.64.1530215868719; Thu, 28 Jun 2018 12:57:48 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Thu, 28 Jun 2018 21:57:38 +0200 Message-Id: <1530215858-1525-7-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> References: <1530215858-1525-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c09::233 Subject: [Qemu-devel] [PATCH 6/6] pr-manager-helper: report event on connection/disconnection 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: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Let management know if there were any problems communicating with qemu-pr-helper. The event is edge-triggered, and is sent every time the connection status of the pr-manager-helper object changes. Signed-off-by: Paolo Bonzini --- qapi/block.json | 24 ++++++++++++++++++++++++ scsi/pr-manager-helper.c | 14 ++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/qapi/block.json b/qapi/block.json index 8765c29..11f01f2 100644 --- a/qapi/block.json +++ b/qapi/block.json @@ -359,6 +359,30 @@ 'data': { 'device': 'str', 'id': 'str', 'tray-open': 'bool' } } =20 ## +# @PR_MANAGER_STATUS_CHANGED: +# +# Emitted whenever the connected status of a persistent reservation +# manager changes. +# +# @id: The id of the PR manager object +# +# @connected: true if the PR manager is connected to a backend +# +# Since: 3.0 +# +# Example: +# +# <- { "event": "PR_MANAGER_STATUS_CHANGED", +# "data": { "id": "pr-helper0", +# "connected": true +# }, +# "timestamp": { "seconds": 1519840375, "microseconds": 450486 } } +# +## +{ 'event': 'PR_MANAGER_STATUS_CHANGED', + 'data': { 'id': 'str', 'connected': 'bool' } } + +## # @QuorumOpType: # # An enumeration of the quorum operation types diff --git a/scsi/pr-manager-helper.c b/scsi/pr-manager-helper.c index b11481b..519a296 100644 --- a/scsi/pr-manager-helper.c +++ b/scsi/pr-manager-helper.c @@ -17,6 +17,7 @@ #include "io/channel.h" #include "io/channel-socket.h" #include "pr-helper.h" +#include "qapi/qapi-events-block.h" =20 #include =20 @@ -38,6 +39,16 @@ typedef struct PRManagerHelper { QIOChannel *ioc; } PRManagerHelper; =20 +static void pr_manager_send_status_changed_event(PRManagerHelper *pr_mgr) +{ + char *id =3D object_get_canonical_path_component(OBJECT(pr_mgr)); + + if (id) { + qapi_event_send_pr_manager_status_changed(id, !!pr_mgr->ioc, + &error_abort); + } +} + /* Called with lock held. */ static int pr_manager_helper_read(PRManagerHelper *pr_mgr, void *buf, int sz, Error **errp) @@ -47,6 +58,7 @@ static int pr_manager_helper_read(PRManagerHelper *pr_mgr, if (r < 0) { object_unref(OBJECT(pr_mgr->ioc)); pr_mgr->ioc =3D NULL; + pr_manager_send_status_changed_event(pr_mgr); return -EINVAL; } =20 @@ -72,6 +84,7 @@ static int pr_manager_helper_write(PRManagerHelper *pr_mg= r, assert(n_written !=3D QIO_CHANNEL_ERR_BLOCK); object_unref(OBJECT(pr_mgr->ioc)); pr_mgr->ioc =3D NULL; + pr_manager_send_status_changed_event(pr_mgr); return n_written < 0 ? -EINVAL : 0; } =20 @@ -127,6 +140,7 @@ static int pr_manager_helper_initialize(PRManagerHelper= *pr_mgr, goto out_close; } =20 + pr_manager_send_status_changed_event(pr_mgr); return 0; =20 out_close: --=20 1.8.3.1