From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.4 required=3.0 tests=DKIM_ADSP_ALL,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 71427C43603 for ; Thu, 5 Dec 2019 14:02:16 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 423852464D for ; Thu, 5 Dec 2019 14:02:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="c2ZwzVIW" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 423852464D Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amazon.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1icrhi-0007E1-J2; Thu, 05 Dec 2019 14:02:02 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1icrhh-0007DZ-Ej for xen-devel@lists.xenproject.org; Thu, 05 Dec 2019 14:02:01 +0000 X-Inumbo-ID: cda40d49-1767-11ea-8227-12813bfff9fa Received: from smtp-fw-6002.amazon.com (unknown [52.95.49.90]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id cda40d49-1767-11ea-8227-12813bfff9fa; Thu, 05 Dec 2019 14:01:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1575554518; x=1607090518; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1WJZpOjGUIHVRhgcjBz3yJxjB5haQQg6kXg1z4d6ets=; b=c2ZwzVIWRG2Nk4RNs6RRh0k7Ca5C67ZCJZMmSzY/4jcRUTebZCUh1FeV UzCOZZB2rO3WDusWhKIX5bmlxrQNwEs4eivc0k+vn8sdM7w2h/oiSnboP EUC9538TjTffzFmROUwOQBDyO7ItvcC53H3PLllv3sy5bGL80myknLZgo Y=; IronPort-SDR: loNKSiQNwG75LMDfydCOTefyzN9ieNk12e8ueIaZsuDiGfR+2DLVXIwfiA2ChyEQXKkm9x/Dym IWYCNYTcFGTg== X-IronPort-AV: E=Sophos;i="5.69,281,1571702400"; d="scan'208";a="6345518" Received: from iad6-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1d-2c665b5d.us-east-1.amazon.com) ([10.124.125.6]) by smtp-border-fw-out-6002.iad6.amazon.com with ESMTP; 05 Dec 2019 14:01:58 +0000 Received: from EX13MTAUEA001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1d-2c665b5d.us-east-1.amazon.com (Postfix) with ESMTPS id 04AB0A2A13; Thu, 5 Dec 2019 14:01:55 +0000 (UTC) Received: from EX13D32EUC001.ant.amazon.com (10.43.164.159) by EX13MTAUEA001.ant.amazon.com (10.43.61.243) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 5 Dec 2019 14:01:46 +0000 Received: from EX13MTAUWC001.ant.amazon.com (10.43.162.135) by EX13D32EUC001.ant.amazon.com (10.43.164.159) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 5 Dec 2019 14:01:43 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.162.232) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Thu, 5 Dec 2019 14:01:40 +0000 From: Paul Durrant To: , Date: Thu, 5 Dec 2019 14:01:23 +0000 Message-ID: <20191205140123.3817-5-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191205140123.3817-1-pdurrant@amazon.com> References: <20191205140123.3817-1-pdurrant@amazon.com> MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH 4/4] xen-blkback: support dynamic unbind/bind X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Jens Axboe , Juergen Gross , Stefano Stabellini , Konrad Rzeszutek Wilk , Paul Durrant , Boris Ostrovsky , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Qnkgc2ltcGx5IHJlLWF0dGFjaGluZyB0byBzaGFyZWQgcmluZ3MgZHVyaW5nIGNvbm5lY3Rfcmlu ZygpIHJhdGhlciB0aGFuCmFzc3VtaW5nIHRoZXkgYXJlIGZyZXNobHkgYWxsb2NhdGVkIChpLmUg YXNzdW1pbmcgdGhlIGNvdW50ZXJzIGFyZSB6ZXJvKQppdCBpcyBwb3NzaWJsZSBmb3IgdmJkIGlu c3RhbmNlcyB0byBiZSB1bmJvdW5kIGFuZCByZS1ib3VuZCBmcm9tIGFuZCB0bwoocmVzcGVjdGl2 ZWx5KSBhIHJ1bm5pbmcgZ3Vlc3QuCgpUaGlzIGhhcyBiZWVuIHRlc3RlZCBieSBydW5uaW5nOgoK d2hpbGUgdHJ1ZTsgZG8gZGQgaWY9L2Rldi91cmFuZG9tIG9mPXRlc3QuaW1nIGJzPTFNIGNvdW50 PTEwMjQ7IGRvbmUKCmluIGEgUFYgZ3Vlc3Qgd2hpbHN0IHJ1bm5pbmc6Cgp3aGlsZSB0cnVlOwog IGRvIGVjaG8gdmJkLSRET01JRC0kVkJEID51bmJpbmQ7CiAgZWNobyB1bmJvdW5kOwogIHNsZWVw IDU7CiAgZWNobyB2YmQtJERPTUlELSRWQkQgPmJpbmQ7CiAgZWNobyBib3VuZDsKICBzbGVlcCAz OwogIGRvbmUKCmluIGRvbTAgZnJvbSAvc3lzL2J1cy94ZW4tYmFja2VuZC9kcml2ZXJzL3ZiZCB0 byBjb250aW51b3VzbHkgdW5iaW5kIGFuZApyZS1iaW5kIGl0cyBzeXN0ZW0gZGlzayBpbWFnZS4K ClRoaXMgaXMgYSBoaWdobHkgdXNlZnVsIGZlYXR1cmUgZm9yIGEgYmFja2VuZCBtb2R1bGUgYXMg aXQgYWxsb3dzIGl0IHRvIGJlCnVubG9hZGVkIGFuZCByZS1sb2FkZWQgKGkuZS4gdXBkYXRlZCkg d2l0aG91dCByZXF1aXJpbmcgZG9tVXMgdG8gYmUgaGFsdGVkLgpUaGlzIHdhcyBhbHNvIHRlc3Rl ZCBieSBydW5uaW5nOgoKd2hpbGUgdHJ1ZTsKICBkbyBlY2hvIHZiZC0kRE9NSUQtJFZCRCA+dW5i aW5kOwogIGVjaG8gdW5ib3VuZDsKICBzbGVlcCA1OwogIHJtbW9kIHhlbi1ibGtiYWNrOwogIGVj aG8gdW5sb2FkZWQ7CiAgc2xlZXAgMTsKICBtb2Rwcm9iZSB4ZW4tYmxrYmFjazsKICBlY2hvIGJv dW5kOwogIGNkICQocHdkKTsKICBzbGVlcCAzOwogIGRvbmUKCmluIGRvbTAgd2hpbHN0IHJ1bm5p bmcgdGhlIHNhbWUgbG9vcCBhcyBhYm92ZSBpbiB0aGUgKHNpbmdsZSkgUFYgZ3Vlc3QuCgpTb21l IChsZXNzIHN0cmVzc2Z1bCkgdGVzdGluZyBoYXMgYWxzbyBiZWVuIGRvbmUgdXNpbmcgYSBXaW5k b3dzIEhWTSBndWVzdAp3aXRoIHRoZSBsYXRlc3QgOS4wIFBWIGRyaXZlcnMgaW5zdGFsbGVkLgoK U2lnbmVkLW9mZi1ieTogUGF1bCBEdXJyYW50IDxwZHVycmFudEBhbWF6b24uY29tPgotLS0KQ2M6 IEtvbnJhZCBSemVzenV0ZWsgV2lsayA8a29ucmFkLndpbGtAb3JhY2xlLmNvbT4KQ2M6ICJSb2dl ciBQYXUgTW9ubsOpIiA8cm9nZXIucGF1QGNpdHJpeC5jb20+CkNjOiBKZW5zIEF4Ym9lIDxheGJv ZUBrZXJuZWwuZGs+CkNjOiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUu Y29tPgpDYzogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgpDYzogU3RlZmFubyBTdGFi ZWxsaW5pIDxzc3RhYmVsbGluaUBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvYmxvY2sveGVuLWJs a2JhY2sveGVuYnVzLmMgfCAxMiArKysrKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4t YmxrYmFjay94ZW5idXMuYyBiL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVuYnVzLmMKaW5k ZXggZThjNWM1NGUxZDI2Li4wYjgyNzQwYzRhOWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sv eGVuLWJsa2JhY2sveGVuYnVzLmMKKysrIGIvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5i dXMuYwpAQCAtMTk2LDI0ICsxOTYsMjQgQEAgc3RhdGljIGludCB4ZW5fYmxraWZfbWFwKHN0cnVj dCB4ZW5fYmxraWZfcmluZyAqcmluZywgZ3JhbnRfcmVmX3QgKmdyZWYsCiAJewogCQlzdHJ1Y3Qg YmxraWZfc3JpbmcgKnNyaW5nOwogCQlzcmluZyA9IChzdHJ1Y3QgYmxraWZfc3JpbmcgKilyaW5n LT5ibGtfcmluZzsKLQkJQkFDS19SSU5HX0lOSVQoJnJpbmctPmJsa19yaW5ncy5uYXRpdmUsIHNy aW5nLAotCQkJICAgICAgIFhFTl9QQUdFX1NJWkUgKiBucl9ncmVmcyk7CisJCUJBQ0tfUklOR19B VFRBQ0goJnJpbmctPmJsa19yaW5ncy5uYXRpdmUsIHNyaW5nLAorCQkJCSBYRU5fUEFHRV9TSVpF ICogbnJfZ3JlZnMpOwogCQlicmVhazsKIAl9CiAJY2FzZSBCTEtJRl9QUk9UT0NPTF9YODZfMzI6 CiAJewogCQlzdHJ1Y3QgYmxraWZfeDg2XzMyX3NyaW5nICpzcmluZ194ODZfMzI7CiAJCXNyaW5n X3g4Nl8zMiA9IChzdHJ1Y3QgYmxraWZfeDg2XzMyX3NyaW5nICopcmluZy0+YmxrX3Jpbmc7Ci0J CUJBQ0tfUklOR19JTklUKCZyaW5nLT5ibGtfcmluZ3MueDg2XzMyLCBzcmluZ194ODZfMzIsCi0J CQkgICAgICAgWEVOX1BBR0VfU0laRSAqIG5yX2dyZWZzKTsKKwkJQkFDS19SSU5HX0FUVEFDSCgm cmluZy0+YmxrX3JpbmdzLng4Nl8zMiwgc3JpbmdfeDg2XzMyLAorCQkJCSBYRU5fUEFHRV9TSVpF ICogbnJfZ3JlZnMpOwogCQlicmVhazsKIAl9CiAJY2FzZSBCTEtJRl9QUk9UT0NPTF9YODZfNjQ6 CiAJewogCQlzdHJ1Y3QgYmxraWZfeDg2XzY0X3NyaW5nICpzcmluZ194ODZfNjQ7CiAJCXNyaW5n X3g4Nl82NCA9IChzdHJ1Y3QgYmxraWZfeDg2XzY0X3NyaW5nICopcmluZy0+YmxrX3Jpbmc7Ci0J CUJBQ0tfUklOR19JTklUKCZyaW5nLT5ibGtfcmluZ3MueDg2XzY0LCBzcmluZ194ODZfNjQsCi0J CQkgICAgICAgWEVOX1BBR0VfU0laRSAqIG5yX2dyZWZzKTsKKwkJQkFDS19SSU5HX0FUVEFDSCgm cmluZy0+YmxrX3JpbmdzLng4Nl82NCwgc3JpbmdfeDg2XzY0LAorCQkJCSBYRU5fUEFHRV9TSVpF ICogbnJfZ3JlZnMpOwogCQlicmVhazsKIAl9CiAJZGVmYXVsdDoKLS0gCjIuMjAuMQoKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWls aW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVu cHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.9 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9E0AC43603 for ; Thu, 5 Dec 2019 14:02:02 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B23E22464D for ; Thu, 5 Dec 2019 14:02:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="RVgbpOdg" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729654AbfLEOCB (ORCPT ); Thu, 5 Dec 2019 09:02:01 -0500 Received: from smtp-fw-6002.amazon.com ([52.95.49.90]:22558 "EHLO smtp-fw-6002.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729598AbfLEOCA (ORCPT ); Thu, 5 Dec 2019 09:02:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1575554519; x=1607090519; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=1WJZpOjGUIHVRhgcjBz3yJxjB5haQQg6kXg1z4d6ets=; b=RVgbpOdgiK+xSOiR47dMVbre1KMRaE2eEKkTFpLw1YeGKnqHpq2ccnmG 4RUJvkwiv6mB5cKWf+VFQiGZRYTleuH0w2s55RIBZbnxtyQclCl0rFbAD X6nj8G9gKjxrKmoAdxYNlgy4Mn9dx6VWm3x/8W8Fo7ecsYugILbM94qin E=; IronPort-SDR: loNKSiQNwG75LMDfydCOTefyzN9ieNk12e8ueIaZsuDiGfR+2DLVXIwfiA2ChyEQXKkm9x/Dym IWYCNYTcFGTg== X-IronPort-AV: E=Sophos;i="5.69,281,1571702400"; d="scan'208";a="6345518" Received: from iad6-co-svc-p1-lb1-vlan3.amazon.com (HELO email-inbound-relay-1d-2c665b5d.us-east-1.amazon.com) ([10.124.125.6]) by smtp-border-fw-out-6002.iad6.amazon.com with ESMTP; 05 Dec 2019 14:01:58 +0000 Received: from EX13MTAUEA001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan3.iad.amazon.com [10.40.159.166]) by email-inbound-relay-1d-2c665b5d.us-east-1.amazon.com (Postfix) with ESMTPS id 04AB0A2A13; Thu, 5 Dec 2019 14:01:55 +0000 (UTC) Received: from EX13D32EUC001.ant.amazon.com (10.43.164.159) by EX13MTAUEA001.ant.amazon.com (10.43.61.243) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 5 Dec 2019 14:01:46 +0000 Received: from EX13MTAUWC001.ant.amazon.com (10.43.162.135) by EX13D32EUC001.ant.amazon.com (10.43.164.159) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Thu, 5 Dec 2019 14:01:43 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.162.232) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Thu, 5 Dec 2019 14:01:40 +0000 From: Paul Durrant To: , CC: Paul Durrant , Konrad Rzeszutek Wilk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Jens Axboe , Boris Ostrovsky , Juergen Gross , "Stefano Stabellini" Subject: [PATCH 4/4] xen-blkback: support dynamic unbind/bind Date: Thu, 5 Dec 2019 14:01:23 +0000 Message-ID: <20191205140123.3817-5-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191205140123.3817-1-pdurrant@amazon.com> References: <20191205140123.3817-1-pdurrant@amazon.com> MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By simply re-attaching to shared rings during connect_ring() rather than assuming they are freshly allocated (i.e assuming the counters are zero) it is possible for vbd instances to be unbound and re-bound from and to (respectively) a running guest. This has been tested by running: while true; do dd if=/dev/urandom of=test.img bs=1M count=1024; done in a PV guest whilst running: while true; do echo vbd-$DOMID-$VBD >unbind; echo unbound; sleep 5; echo vbd-$DOMID-$VBD >bind; echo bound; sleep 3; done in dom0 from /sys/bus/xen-backend/drivers/vbd to continuously unbind and re-bind its system disk image. This is a highly useful feature for a backend module as it allows it to be unloaded and re-loaded (i.e. updated) without requiring domUs to be halted. This was also tested by running: while true; do echo vbd-$DOMID-$VBD >unbind; echo unbound; sleep 5; rmmod xen-blkback; echo unloaded; sleep 1; modprobe xen-blkback; echo bound; cd $(pwd); sleep 3; done in dom0 whilst running the same loop as above in the (single) PV guest. Some (less stressful) testing has also been done using a Windows HVM guest with the latest 9.0 PV drivers installed. Signed-off-by: Paul Durrant --- Cc: Konrad Rzeszutek Wilk Cc: "Roger Pau Monné" Cc: Jens Axboe Cc: Boris Ostrovsky Cc: Juergen Gross Cc: Stefano Stabellini --- drivers/block/xen-blkback/xenbus.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index e8c5c54e1d26..0b82740c4a9d 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -196,24 +196,24 @@ static int xen_blkif_map(struct xen_blkif_ring *ring, grant_ref_t *gref, { struct blkif_sring *sring; sring = (struct blkif_sring *)ring->blk_ring; - BACK_RING_INIT(&ring->blk_rings.native, sring, - XEN_PAGE_SIZE * nr_grefs); + BACK_RING_ATTACH(&ring->blk_rings.native, sring, + XEN_PAGE_SIZE * nr_grefs); break; } case BLKIF_PROTOCOL_X86_32: { struct blkif_x86_32_sring *sring_x86_32; sring_x86_32 = (struct blkif_x86_32_sring *)ring->blk_ring; - BACK_RING_INIT(&ring->blk_rings.x86_32, sring_x86_32, - XEN_PAGE_SIZE * nr_grefs); + BACK_RING_ATTACH(&ring->blk_rings.x86_32, sring_x86_32, + XEN_PAGE_SIZE * nr_grefs); break; } case BLKIF_PROTOCOL_X86_64: { struct blkif_x86_64_sring *sring_x86_64; sring_x86_64 = (struct blkif_x86_64_sring *)ring->blk_ring; - BACK_RING_INIT(&ring->blk_rings.x86_64, sring_x86_64, - XEN_PAGE_SIZE * nr_grefs); + BACK_RING_ATTACH(&ring->blk_rings.x86_64, sring_x86_64, + XEN_PAGE_SIZE * nr_grefs); break; } default: -- 2.20.1