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 1C9ABC43603 for ; Tue, 10 Dec 2019 11:34:59 +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 E213F20663 for ; Tue, 10 Dec 2019 11:34:58 +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="OUkxD0Co" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E213F20663 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 1iedmv-0006Eb-7B; Tue, 10 Dec 2019 11:34:45 +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 1iedmt-0006Dj-1W for xen-devel@lists.xenproject.org; Tue, 10 Dec 2019 11:34:43 +0000 X-Inumbo-ID: 0e92781c-1b41-11ea-8925-12813bfff9fa Received: from smtp-fw-9102.amazon.com (unknown [207.171.184.29]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 0e92781c-1b41-11ea-8925-12813bfff9fa; Tue, 10 Dec 2019 11:34:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1575977683; x=1607513683; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IKPqIf9U+emKxRr0L9uELmQeeXO75kuyRnRZTLa/FT0=; b=OUkxD0CoFOJRRuC6Y+jnKJZmeTAzHK3VCmMrxQRGOVLC1gBHKlBtTRw6 WbyL2lSI0y40XxeFpzr8aFJXbTyCEp5XiH1JSGCTpq/5IbMYzyGma7HWP RFoew50XTr05mBhO8/mJVBnUazE0gqRh1E1csrMPBzjp6MDrKeNf37PNx 0=; IronPort-SDR: pAKF5MoAr76J9iO89BZo3uc8b1Jq1EE0fQSdRsliBQFEAmOwujQiv6pHuhrAy/NjYWjuvaYCSe xQd6Q8GGdWnQ== X-IronPort-AV: E=Sophos;i="5.69,299,1571702400"; d="scan'208";a="12635074" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-2a-90c42d1d.us-west-2.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-9102.sea19.amazon.com with ESMTP; 10 Dec 2019 11:34:42 +0000 Received: from EX13MTAUEA001.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan3.pdx.amazon.com [10.170.41.166]) by email-inbound-relay-2a-90c42d1d.us-west-2.amazon.com (Postfix) with ESMTPS id 26633A192C; Tue, 10 Dec 2019 11:34:41 +0000 (UTC) Received: from EX13D32EUC001.ant.amazon.com (10.43.164.159) by EX13MTAUEA001.ant.amazon.com (10.43.61.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 10 Dec 2019 11:34:13 +0000 Received: from EX13MTAUEE001.ant.amazon.com (10.43.62.200) by EX13D32EUC001.ant.amazon.com (10.43.164.159) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 10 Dec 2019 11:34:12 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.62.226) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Tue, 10 Dec 2019 11:34:11 +0000 From: Paul Durrant To: , Date: Tue, 10 Dec 2019 11:33:47 +0000 Message-ID: <20191210113347.3404-5-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191210113347.3404-1-pdurrant@amazon.com> References: <20191210113347.3404-1-pdurrant@amazon.com> MIME-Version: 1.0 Precedence: Bulk Subject: [Xen-devel] [PATCH v2 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 d2hpbGUgdHJ1ZTsKICBkbyBmaW8gLS1uYW1lPXJhbmR3cml0ZSAtLWlvZW5naW5lPWxpYmFpbyAt LWlvZGVwdGg9MTYgXAogIC0tcnc9cmFuZHdyaXRlIC0tYnM9NGsgLS1kaXJlY3Q9MSAtLXNpemU9 MUcgLS12ZXJpZnk9Y3JjMzI7CiAgZG9uZQoKaW4gYSBQViBndWVzdCB3aGlsc3QgcnVubmluZzoK CndoaWxlIHRydWU7CiAgZG8gZWNobyB2YmQtJERPTUlELSRWQkQgPnVuYmluZDsKICBlY2hvIHVu Ym91bmQ7CiAgc2xlZXAgNTsKICBlY2hvIHZiZC0kRE9NSUQtJFZCRCA+YmluZDsKICBlY2hvIGJv dW5kOwogIHNsZWVwIDM7CiAgZG9uZQoKaW4gZG9tMCBmcm9tIC9zeXMvYnVzL3hlbi1iYWNrZW5k L2RyaXZlcnMvdmJkIHRvIGNvbnRpbnVvdXNseSB1bmJpbmQgYW5kCnJlLWJpbmQgaXRzIHN5c3Rl bSBkaXNrIGltYWdlLgoKVGhpcyBpcyBhIGhpZ2hseSB1c2VmdWwgZmVhdHVyZSBmb3IgYSBiYWNr ZW5kIG1vZHVsZSBhcyBpdCBhbGxvd3MgaXQgdG8gYmUKdW5sb2FkZWQgYW5kIHJlLWxvYWRlZCAo aS5lLiB1cGRhdGVkKSB3aXRob3V0IHJlcXVpcmluZyBkb21VcyB0byBiZSBoYWx0ZWQuClRoaXMg d2FzIGFsc28gdGVzdGVkIGJ5IHJ1bm5pbmc6Cgp3aGlsZSB0cnVlOwogIGRvIGVjaG8gdmJkLSRE T01JRC0kVkJEID51bmJpbmQ7CiAgZWNobyB1bmJvdW5kOwogIHNsZWVwIDU7CiAgcm1tb2QgeGVu LWJsa2JhY2s7CiAgZWNobyB1bmxvYWRlZDsKICBzbGVlcCAxOwogIG1vZHByb2JlIHhlbi1ibGti YWNrOwogIGVjaG8gYm91bmQ7CiAgY2QgJChwd2QpOwogIHNsZWVwIDM7CiAgZG9uZQoKaW4gZG9t MCB3aGlsc3QgcnVubmluZyB0aGUgc2FtZSBsb29wIGFzIGFib3ZlIGluIHRoZSAoc2luZ2xlKSBQ ViBndWVzdC4KClNvbWUgKGxlc3Mgc3RyZXNzZnVsKSB0ZXN0aW5nIGhhcyBhbHNvIGJlZW4gZG9u ZSB1c2luZyBhIFdpbmRvd3MgSFZNIGd1ZXN0CndpdGggdGhlIGxhdGVzdCA5LjAgUFYgZHJpdmVy cyBpbnN0YWxsZWQuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBkdXJyYW50QGFtYXpv bi5jb20+Ci0tLQpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxrb25yYWQud2lsa0BvcmFjbGUu Y29tPgpDYzogIlJvZ2VyIFBhdSBNb25uw6kiIDxyb2dlci5wYXVAY2l0cml4LmNvbT4KQ2M6IEpl bnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5kaz4KQ2M6IEJvcmlzIE9zdHJvdnNreSA8Ym9yaXMub3N0 cm92c2t5QG9yYWNsZS5jb20+CkNjOiBKdWVyZ2VuIEdyb3NzIDxqZ3Jvc3NAc3VzZS5jb20+CkNj OiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxsaW5pQGtlcm5lbC5vcmc+Cgp2MjoKIC0gQXBw bHkgYSBzYW5pdHkgY2hlY2sgdG8gdGhlIHZhbHVlIG9mIHJzcF9wcm9kIGFuZCBmYWlsIHRoZSBy ZS1hdHRhY2gKICAgaWYgaXQgaXMgaW1wbGF1c2libGUKIC0gU2V0IGFsbG93X3JlYmluZCB0byBw cmV2ZW50IHJpbmcgZnJvbSBiZWluZyBjbG9zZWQgb24gdW5iaW5kCiAtIFVwZGF0ZSB0ZXN0IHdv cmtsb2FkIGZyb20gZGQgdG8gZmlvICh3aXRoIHZlcmlmaWNhdGlvbikKLS0tCiBkcml2ZXJzL2Js b2NrL3hlbi1ibGtiYWNrL3hlbmJ1cy5jIHwgNTkgKysrKysrKysrKysrKysrKysrKysrLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYyBiL2RyaXZlcnMv YmxvY2sveGVuLWJsa2JhY2sveGVuYnVzLmMKaW5kZXggZThjNWM1NGUxZDI2Li4xM2QwOTYzMGIy MzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYmxvY2sveGVuLWJsa2JhY2sveGVuYnVzLmMKKysrIGIv ZHJpdmVycy9ibG9jay94ZW4tYmxrYmFjay94ZW5idXMuYwpAQCAtMTgxLDYgKzE4MSw4IEBAIHN0 YXRpYyBpbnQgeGVuX2Jsa2lmX21hcChzdHJ1Y3QgeGVuX2Jsa2lmX3JpbmcgKnJpbmcsIGdyYW50 X3JlZl90ICpncmVmLAogewogCWludCBlcnI7CiAJc3RydWN0IHhlbl9ibGtpZiAqYmxraWYgPSBy aW5nLT5ibGtpZjsKKwlzdHJ1Y3QgYmxraWZfY29tbW9uX3NyaW5nICpzcmluZ19jb21tb247CisJ UklOR19JRFggcnNwX3Byb2QsIHJlcV9wcm9kOwogCiAJLyogQWxyZWFkeSBjb25uZWN0ZWQgdGhy b3VnaD8gKi8KIAlpZiAocmluZy0+aXJxKQpAQCAtMTkxLDQ2ICsxOTMsNjYgQEAgc3RhdGljIGlu dCB4ZW5fYmxraWZfbWFwKHN0cnVjdCB4ZW5fYmxraWZfcmluZyAqcmluZywgZ3JhbnRfcmVmX3Qg KmdyZWYsCiAJaWYgKGVyciA8IDApCiAJCXJldHVybiBlcnI7CiAKKwlzcmluZ19jb21tb24gPSAo c3RydWN0IGJsa2lmX2NvbW1vbl9zcmluZyAqKXJpbmctPmJsa19yaW5nOworCXJzcF9wcm9kID0g UkVBRF9PTkNFKHNyaW5nX2NvbW1vbi0+cnNwX3Byb2QpOworCXJlcV9wcm9kID0gUkVBRF9PTkNF KHNyaW5nX2NvbW1vbi0+cmVxX3Byb2QpOworCiAJc3dpdGNoIChibGtpZi0+YmxrX3Byb3RvY29s KSB7CiAJY2FzZSBCTEtJRl9QUk9UT0NPTF9OQVRJVkU6CiAJewotCQlzdHJ1Y3QgYmxraWZfc3Jp bmcgKnNyaW5nOwotCQlzcmluZyA9IChzdHJ1Y3QgYmxraWZfc3JpbmcgKilyaW5nLT5ibGtfcmlu ZzsKLQkJQkFDS19SSU5HX0lOSVQoJnJpbmctPmJsa19yaW5ncy5uYXRpdmUsIHNyaW5nLAotCQkJ ICAgICAgIFhFTl9QQUdFX1NJWkUgKiBucl9ncmVmcyk7CisJCXN0cnVjdCBibGtpZl9zcmluZyAq c3JpbmdfbmF0aXZlID0KKwkJCShzdHJ1Y3QgYmxraWZfc3JpbmcgKilyaW5nLT5ibGtfcmluZzsK KwkJdW5zaWduZWQgaW50IHNpemUgPSBfX1JJTkdfU0laRShzcmluZ19uYXRpdmUsCisJCQkJCQlY RU5fUEFHRV9TSVpFICogbnJfZ3JlZnMpOworCisJCUJBQ0tfUklOR19BVFRBQ0goJnJpbmctPmJs a19yaW5ncy5uYXRpdmUsIHNyaW5nX25hdGl2ZSwKKwkJCQkgcnNwX3Byb2QsIFhFTl9QQUdFX1NJ WkUgKiBucl9ncmVmcyk7CisJCWVyciA9IChyZXFfcHJvZCAtIHJzcF9wcm9kID4gc2l6ZSkgPyAt RUlPIDogMDsKIAkJYnJlYWs7CiAJfQogCWNhc2UgQkxLSUZfUFJPVE9DT0xfWDg2XzMyOgogCXsK LQkJc3RydWN0IGJsa2lmX3g4Nl8zMl9zcmluZyAqc3JpbmdfeDg2XzMyOwotCQlzcmluZ194ODZf MzIgPSAoc3RydWN0IGJsa2lmX3g4Nl8zMl9zcmluZyAqKXJpbmctPmJsa19yaW5nOwotCQlCQUNL X1JJTkdfSU5JVCgmcmluZy0+YmxrX3JpbmdzLng4Nl8zMiwgc3JpbmdfeDg2XzMyLAotCQkJICAg ICAgIFhFTl9QQUdFX1NJWkUgKiBucl9ncmVmcyk7CisJCXN0cnVjdCBibGtpZl94ODZfMzJfc3Jp bmcgKnNyaW5nX3g4Nl8zMiA9CisJCQkoc3RydWN0IGJsa2lmX3g4Nl8zMl9zcmluZyAqKXJpbmct PmJsa19yaW5nOworCQl1bnNpZ25lZCBpbnQgc2l6ZSA9IF9fUklOR19TSVpFKHNyaW5nX3g4Nl8z MiwKKwkJCQkJCVhFTl9QQUdFX1NJWkUgKiBucl9ncmVmcyk7CisKKwkJQkFDS19SSU5HX0FUVEFD SCgmcmluZy0+YmxrX3JpbmdzLng4Nl8zMiwgc3JpbmdfeDg2XzMyLAorCQkJCSByc3BfcHJvZCwg WEVOX1BBR0VfU0laRSAqIG5yX2dyZWZzKTsKKwkJZXJyID0gKHJlcV9wcm9kIC0gcnNwX3Byb2Qg PiBzaXplKSA/IC1FSU8gOiAwOwogCQlicmVhazsKIAl9CiAJY2FzZSBCTEtJRl9QUk9UT0NPTF9Y ODZfNjQ6CiAJewotCQlzdHJ1Y3QgYmxraWZfeDg2XzY0X3NyaW5nICpzcmluZ194ODZfNjQ7Ci0J CXNyaW5nX3g4Nl82NCA9IChzdHJ1Y3QgYmxraWZfeDg2XzY0X3NyaW5nICopcmluZy0+YmxrX3Jp bmc7Ci0JCUJBQ0tfUklOR19JTklUKCZyaW5nLT5ibGtfcmluZ3MueDg2XzY0LCBzcmluZ194ODZf NjQsCi0JCQkgICAgICAgWEVOX1BBR0VfU0laRSAqIG5yX2dyZWZzKTsKKwkJc3RydWN0IGJsa2lm X3g4Nl82NF9zcmluZyAqc3JpbmdfeDg2XzY0ID0KKwkJCShzdHJ1Y3QgYmxraWZfeDg2XzY0X3Ny aW5nICopcmluZy0+YmxrX3Jpbmc7CisJCXVuc2lnbmVkIGludCBzaXplID0gX19SSU5HX1NJWkUo c3JpbmdfeDg2XzY0LAorCQkJCQkJWEVOX1BBR0VfU0laRSAqIG5yX2dyZWZzKTsKKworCQlCQUNL X1JJTkdfQVRUQUNIKCZyaW5nLT5ibGtfcmluZ3MueDg2XzY0LCBzcmluZ194ODZfNjQsCisJCQkJ IHJzcF9wcm9kLCBYRU5fUEFHRV9TSVpFICogbnJfZ3JlZnMpOworCQllcnIgPSAocmVxX3Byb2Qg LSByc3BfcHJvZCA+IHNpemUpID8gLUVJTyA6IDA7CiAJCWJyZWFrOwogCX0KIAlkZWZhdWx0Ogog CQlCVUcoKTsKIAl9CisJaWYgKGVyciA8IDApCisJCWdvdG8gZmFpbDsKIAogCWVyciA9IGJpbmRf aW50ZXJkb21haW5fZXZ0Y2huX3RvX2lycWhhbmRsZXIoYmxraWYtPmRvbWlkLCBldnRjaG4sCiAJ CQkJCQkgICAgeGVuX2Jsa2lmX2JlX2ludCwgMCwKIAkJCQkJCSAgICAiYmxraWYtYmFja2VuZCIs IHJpbmcpOwotCWlmIChlcnIgPCAwKSB7Ci0JCXhlbmJ1c191bm1hcF9yaW5nX3ZmcmVlKGJsa2lm LT5iZS0+ZGV2LCByaW5nLT5ibGtfcmluZyk7Ci0JCXJpbmctPmJsa19yaW5ncy5jb21tb24uc3Jp bmcgPSBOVUxMOwotCQlyZXR1cm4gZXJyOwotCX0KKwlpZiAoZXJyIDwgMCkKKwkJZ290byBmYWls OwogCXJpbmctPmlycSA9IGVycjsKIAogCXJldHVybiAwOworCitmYWlsOgorCXhlbmJ1c191bm1h cF9yaW5nX3ZmcmVlKGJsa2lmLT5iZS0+ZGV2LCByaW5nLT5ibGtfcmluZyk7CisJcmluZy0+Ymxr X3JpbmdzLmNvbW1vbi5zcmluZyA9IE5VTEw7CisJcmV0dXJuIGVycjsKIH0KIAogc3RhdGljIGlu dCB4ZW5fYmxraWZfZGlzY29ubmVjdChzdHJ1Y3QgeGVuX2Jsa2lmICpibGtpZikKQEAgLTExMjEs NyArMTE0Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgeGVuYnVzX2RyaXZlciB4ZW5fYmxrYmtfZHJpdmVy ID0gewogCS5pZHMgID0geGVuX2Jsa2JrX2lkcywKIAkucHJvYmUgPSB4ZW5fYmxrYmtfcHJvYmUs CiAJLnJlbW92ZSA9IHhlbl9ibGtia19yZW1vdmUsCi0JLm90aGVyZW5kX2NoYW5nZWQgPSBmcm9u dGVuZF9jaGFuZ2VkCisJLm90aGVyZW5kX2NoYW5nZWQgPSBmcm9udGVuZF9jaGFuZ2VkLAorCS5h bGxvd19yZWJpbmQgPSB0cnVlLAogfTsKIAogaW50IHhlbl9ibGtpZl94ZW5idXNfaW5pdCh2b2lk KQotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVjdC5v cmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1kZXZl bA== 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 C6FEAC00454 for ; Tue, 10 Dec 2019 11:34:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8D89120726 for ; Tue, 10 Dec 2019 11:34:44 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=amazon.com header.i=@amazon.com header.b="B6QAkM6F" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727518AbfLJLen (ORCPT ); Tue, 10 Dec 2019 06:34:43 -0500 Received: from smtp-fw-9102.amazon.com ([207.171.184.29]:62301 "EHLO smtp-fw-9102.amazon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727320AbfLJLen (ORCPT ); Tue, 10 Dec 2019 06:34:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1575977682; x=1607513682; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=IKPqIf9U+emKxRr0L9uELmQeeXO75kuyRnRZTLa/FT0=; b=B6QAkM6FGHQK+n6JqFEeRTZju5qA/KxiwVuWojs9ZS6EgCdlj8os6X3q 3oWZe06vFo5KVf3KW9blCVq08eNXxpm6N5l5iF4xpgNVDFOmk5lRz6xgf OsNpom3Oydt9AAgyYyI/sOiHZ8DnCGMs1hxTlTbOpPYWg8bhFYeCClb8O k=; IronPort-SDR: pAKF5MoAr76J9iO89BZo3uc8b1Jq1EE0fQSdRsliBQFEAmOwujQiv6pHuhrAy/NjYWjuvaYCSe xQd6Q8GGdWnQ== X-IronPort-AV: E=Sophos;i="5.69,299,1571702400"; d="scan'208";a="12635074" Received: from sea32-co-svc-lb4-vlan3.sea.corp.amazon.com (HELO email-inbound-relay-2a-90c42d1d.us-west-2.amazon.com) ([10.47.23.38]) by smtp-border-fw-out-9102.sea19.amazon.com with ESMTP; 10 Dec 2019 11:34:42 +0000 Received: from EX13MTAUEA001.ant.amazon.com (pdx4-ws-svc-p6-lb7-vlan3.pdx.amazon.com [10.170.41.166]) by email-inbound-relay-2a-90c42d1d.us-west-2.amazon.com (Postfix) with ESMTPS id 26633A192C; Tue, 10 Dec 2019 11:34:41 +0000 (UTC) Received: from EX13D32EUC001.ant.amazon.com (10.43.164.159) by EX13MTAUEA001.ant.amazon.com (10.43.61.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 10 Dec 2019 11:34:13 +0000 Received: from EX13MTAUEE001.ant.amazon.com (10.43.62.200) by EX13D32EUC001.ant.amazon.com (10.43.164.159) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 10 Dec 2019 11:34:12 +0000 Received: from u2f063a87eabd5f.cbg10.amazon.com (10.125.106.135) by mail-relay.amazon.com (10.43.62.226) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Tue, 10 Dec 2019 11:34:11 +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 v2 4/4] xen-blkback: support dynamic unbind/bind Date: Tue, 10 Dec 2019 11:33:47 +0000 Message-ID: <20191210113347.3404-5-pdurrant@amazon.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191210113347.3404-1-pdurrant@amazon.com> References: <20191210113347.3404-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 fio --name=randwrite --ioengine=libaio --iodepth=16 \ --rw=randwrite --bs=4k --direct=1 --size=1G --verify=crc32; 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 v2: - Apply a sanity check to the value of rsp_prod and fail the re-attach if it is implausible - Set allow_rebind to prevent ring from being closed on unbind - Update test workload from dd to fio (with verification) --- drivers/block/xen-blkback/xenbus.c | 59 +++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/drivers/block/xen-blkback/xenbus.c b/drivers/block/xen-blkback/xenbus.c index e8c5c54e1d26..13d09630b237 100644 --- a/drivers/block/xen-blkback/xenbus.c +++ b/drivers/block/xen-blkback/xenbus.c @@ -181,6 +181,8 @@ static int xen_blkif_map(struct xen_blkif_ring *ring, grant_ref_t *gref, { int err; struct xen_blkif *blkif = ring->blkif; + struct blkif_common_sring *sring_common; + RING_IDX rsp_prod, req_prod; /* Already connected through? */ if (ring->irq) @@ -191,46 +193,66 @@ static int xen_blkif_map(struct xen_blkif_ring *ring, grant_ref_t *gref, if (err < 0) return err; + sring_common = (struct blkif_common_sring *)ring->blk_ring; + rsp_prod = READ_ONCE(sring_common->rsp_prod); + req_prod = READ_ONCE(sring_common->req_prod); + switch (blkif->blk_protocol) { case BLKIF_PROTOCOL_NATIVE: { - struct blkif_sring *sring; - sring = (struct blkif_sring *)ring->blk_ring; - BACK_RING_INIT(&ring->blk_rings.native, sring, - XEN_PAGE_SIZE * nr_grefs); + struct blkif_sring *sring_native = + (struct blkif_sring *)ring->blk_ring; + unsigned int size = __RING_SIZE(sring_native, + XEN_PAGE_SIZE * nr_grefs); + + BACK_RING_ATTACH(&ring->blk_rings.native, sring_native, + rsp_prod, XEN_PAGE_SIZE * nr_grefs); + err = (req_prod - rsp_prod > size) ? -EIO : 0; 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); + struct blkif_x86_32_sring *sring_x86_32 = + (struct blkif_x86_32_sring *)ring->blk_ring; + unsigned int size = __RING_SIZE(sring_x86_32, + XEN_PAGE_SIZE * nr_grefs); + + BACK_RING_ATTACH(&ring->blk_rings.x86_32, sring_x86_32, + rsp_prod, XEN_PAGE_SIZE * nr_grefs); + err = (req_prod - rsp_prod > size) ? -EIO : 0; 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); + struct blkif_x86_64_sring *sring_x86_64 = + (struct blkif_x86_64_sring *)ring->blk_ring; + unsigned int size = __RING_SIZE(sring_x86_64, + XEN_PAGE_SIZE * nr_grefs); + + BACK_RING_ATTACH(&ring->blk_rings.x86_64, sring_x86_64, + rsp_prod, XEN_PAGE_SIZE * nr_grefs); + err = (req_prod - rsp_prod > size) ? -EIO : 0; break; } default: BUG(); } + if (err < 0) + goto fail; err = bind_interdomain_evtchn_to_irqhandler(blkif->domid, evtchn, xen_blkif_be_int, 0, "blkif-backend", ring); - if (err < 0) { - xenbus_unmap_ring_vfree(blkif->be->dev, ring->blk_ring); - ring->blk_rings.common.sring = NULL; - return err; - } + if (err < 0) + goto fail; ring->irq = err; return 0; + +fail: + xenbus_unmap_ring_vfree(blkif->be->dev, ring->blk_ring); + ring->blk_rings.common.sring = NULL; + return err; } static int xen_blkif_disconnect(struct xen_blkif *blkif) @@ -1121,7 +1143,8 @@ static struct xenbus_driver xen_blkbk_driver = { .ids = xen_blkbk_ids, .probe = xen_blkbk_probe, .remove = xen_blkbk_remove, - .otherend_changed = frontend_changed + .otherend_changed = frontend_changed, + .allow_rebind = true, }; int xen_blkif_xenbus_init(void) -- 2.20.1