From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:53583) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hC5pz-0005ug-A3 for qemu-devel@nongnu.org; Thu, 04 Apr 2019 13:07:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hC5py-0002LI-41 for qemu-devel@nongnu.org; Thu, 04 Apr 2019 13:07:39 -0400 Received: from smtp03.citrix.com ([162.221.156.55]:38283) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hC5px-00028D-M6 for qemu-devel@nongnu.org; Thu, 04 Apr 2019 13:07:38 -0400 From: Anthony PERARD Date: Thu, 4 Apr 2019 18:07:21 +0100 Message-ID: <20190404170722.4492-2-anthony.perard@citrix.com> In-Reply-To: <20190404170722.4492-1-anthony.perard@citrix.com> References: <20190404170722.4492-1-anthony.perard@citrix.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain Subject: [Qemu-devel] [PULL 1/2] xen-block: only advertize discard to the frontend when it is enabled... List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: xen-devel@lists.xenproject.org, Peter Maydell , Anthony PERARD From: Paul Durrant ...and properly enable it when synthesizing a drive. The Xen toolstack sets 'discard-enable' to '1' in xenstore when it wants to enable discard on a specified image. The code in xen_block_drive_create() correctly parses this and uses it to set 'discard' to 'unmap' for the file_layer, but fails to do the same for the driver_layer (which effectively disables it). Meanwhile the code in xen_block_realize() advertizes discard support to the frontend in the default case (because conf->discard_granularity defaults to -1), even when the underlying image may not handle it. This patch adds the missing option to the driver_layer in xen_block_driver_create() and checks whether BDRV_O_UNMAP is actually set on the block device before advertizing discard to the frontend. In the case that discard is supported it also makes sure that the granularity is set to the physical block size. Signed-off-by: Paul Durrant Reviewed-by: Anthony PERARD Message-Id: <20190320142825.24565-1-paul.durrant@citrix.com> Signed-off-by: Anthony PERARD --- hw/block/xen-block.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/hw/block/xen-block.c b/hw/block/xen-block.c index 9c722b9b95..475a67845d 100644 --- a/hw/block/xen-block.c +++ b/hw/block/xen-block.c @@ -232,8 +232,14 @@ static void xen_block_realize(XenDevice *xendev, Error **errp) blk_set_dev_ops(conf->blk, &xen_block_dev_ops, blockdev); blk_set_guest_block_size(conf->blk, conf->logical_block_size); - if (conf->discard_granularity > 0) { + if (conf->discard_granularity == -1) { + conf->discard_granularity = conf->physical_block_size; + } + + if (blk_get_flags(conf->blk) & BDRV_O_UNMAP) { xen_device_backend_printf(xendev, "feature-discard", "%u", 1); + xen_device_backend_printf(xendev, "discard-granularity", "%u", + conf->discard_granularity); } xen_device_backend_printf(xendev, "feature-flush-cache", "%u", 1); @@ -755,6 +761,7 @@ static XenBlockDrive *xen_block_drive_create(const char *id, drive->id = g_strdup(id); file_layer = qdict_new(); + driver_layer = qdict_new(); qdict_put_str(file_layer, "driver", "file"); qdict_put_str(file_layer, "filename", filename); @@ -782,6 +789,7 @@ static XenBlockDrive *xen_block_drive_create(const char *id, if (!qemu_strtoul(discard_enable, NULL, 2, &value) && !!value) { qdict_put_str(file_layer, "discard", "unmap"); + qdict_put_str(driver_layer, "discard", "unmap"); } } @@ -791,8 +799,6 @@ static XenBlockDrive *xen_block_drive_create(const char *id, */ qdict_put_str(file_layer, "locking", "off"); - driver_layer = qdict_new(); - qdict_put_str(driver_layer, "driver", driver); g_free(driver); -- Anthony PERARD From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: [PULL 1/2] xen-block: only advertize discard to the frontend when it is enabled... Date: Thu, 4 Apr 2019 18:07:21 +0100 Message-ID: <20190404170722.4492-2-anthony.perard@citrix.com> References: <20190404170722.4492-1-anthony.perard@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: 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 1hC5pt-0002qb-91 for xen-devel@lists.xenproject.org; Thu, 04 Apr 2019 17:07:33 +0000 In-Reply-To: <20190404170722.4492-1-anthony.perard@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: qemu-devel@nongnu.org Cc: Anthony PERARD , xen-devel@lists.xenproject.org, Peter Maydell List-Id: xen-devel@lists.xenproject.org RnJvbTogUGF1bCBEdXJyYW50IDxwYXVsLmR1cnJhbnRAY2l0cml4LmNvbT4KCi4uLmFuZCBwcm9w ZXJseSBlbmFibGUgaXQgd2hlbiBzeW50aGVzaXppbmcgYSBkcml2ZS4KClRoZSBYZW4gdG9vbHN0 YWNrIHNldHMgJ2Rpc2NhcmQtZW5hYmxlJyB0byAnMScgaW4geGVuc3RvcmUgd2hlbiBpdCB3YW50 cwp0byBlbmFibGUgZGlzY2FyZCBvbiBhIHNwZWNpZmllZCBpbWFnZS4gVGhlIGNvZGUgaW4KeGVu X2Jsb2NrX2RyaXZlX2NyZWF0ZSgpIGNvcnJlY3RseSBwYXJzZXMgdGhpcyBhbmQgdXNlcyBpdCB0 byBzZXQKJ2Rpc2NhcmQnIHRvICd1bm1hcCcgZm9yIHRoZSBmaWxlX2xheWVyLCBidXQgZmFpbHMg dG8gZG8gdGhlIHNhbWUgZm9yIHRoZQpkcml2ZXJfbGF5ZXIgKHdoaWNoIGVmZmVjdGl2ZWx5IGRp c2FibGVzIGl0KS4gTWVhbndoaWxlIHRoZSBjb2RlIGluCnhlbl9ibG9ja19yZWFsaXplKCkgYWR2 ZXJ0aXplcyBkaXNjYXJkIHN1cHBvcnQgdG8gdGhlIGZyb250ZW5kIGluIHRoZQpkZWZhdWx0IGNh c2UgKGJlY2F1c2UgY29uZi0+ZGlzY2FyZF9ncmFudWxhcml0eSBkZWZhdWx0cyB0byAtMSksIGV2 ZW4gd2hlbgp0aGUgdW5kZXJseWluZyBpbWFnZSBtYXkgbm90IGhhbmRsZSBpdC4KClRoaXMgcGF0 Y2ggYWRkcyB0aGUgbWlzc2luZyBvcHRpb24gdG8gdGhlIGRyaXZlcl9sYXllciBpbgp4ZW5fYmxv Y2tfZHJpdmVyX2NyZWF0ZSgpIGFuZCBjaGVja3Mgd2hldGhlciBCRFJWX09fVU5NQVAgaXMgYWN0 dWFsbHkKc2V0IG9uIHRoZSBibG9jayBkZXZpY2UgYmVmb3JlIGFkdmVydGl6aW5nIGRpc2NhcmQg dG8gdGhlIGZyb250ZW5kLgpJbiB0aGUgY2FzZSB0aGF0IGRpc2NhcmQgaXMgc3VwcG9ydGVkIGl0 IGFsc28gbWFrZXMgc3VyZSB0aGF0IHRoZQpncmFudWxhcml0eSBpcyBzZXQgdG8gdGhlIHBoeXNp Y2FsIGJsb2NrIHNpemUuCgpTaWduZWQtb2ZmLWJ5OiBQYXVsIER1cnJhbnQgPHBhdWwuZHVycmFu dEBjaXRyaXguY29tPgpSZXZpZXdlZC1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhvbnkucGVyYXJk QGNpdHJpeC5jb20+Ck1lc3NhZ2UtSWQ6IDwyMDE5MDMyMDE0MjgyNS4yNDU2NS0xLXBhdWwuZHVy cmFudEBjaXRyaXguY29tPgpTaWduZWQtb2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5w ZXJhcmRAY2l0cml4LmNvbT4KLS0tCiBody9ibG9jay94ZW4tYmxvY2suYyB8IDEyICsrKysrKysr Ky0tLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9ody9ibG9jay94ZW4tYmxvY2suYyBiL2h3L2Jsb2NrL3hlbi1ibG9jay5jCmlu ZGV4IDljNzIyYjliOTUuLjQ3NWE2Nzg0NWQgMTAwNjQ0Ci0tLSBhL2h3L2Jsb2NrL3hlbi1ibG9j ay5jCisrKyBiL2h3L2Jsb2NrL3hlbi1ibG9jay5jCkBAIC0yMzIsOCArMjMyLDE0IEBAIHN0YXRp YyB2b2lkIHhlbl9ibG9ja19yZWFsaXplKFhlbkRldmljZSAqeGVuZGV2LCBFcnJvciAqKmVycnAp CiAgICAgYmxrX3NldF9kZXZfb3BzKGNvbmYtPmJsaywgJnhlbl9ibG9ja19kZXZfb3BzLCBibG9j a2Rldik7CiAgICAgYmxrX3NldF9ndWVzdF9ibG9ja19zaXplKGNvbmYtPmJsaywgY29uZi0+bG9n aWNhbF9ibG9ja19zaXplKTsKIAotICAgIGlmIChjb25mLT5kaXNjYXJkX2dyYW51bGFyaXR5ID4g MCkgeworICAgIGlmIChjb25mLT5kaXNjYXJkX2dyYW51bGFyaXR5ID09IC0xKSB7CisgICAgICAg IGNvbmYtPmRpc2NhcmRfZ3JhbnVsYXJpdHkgPSBjb25mLT5waHlzaWNhbF9ibG9ja19zaXplOwor ICAgIH0KKworICAgIGlmIChibGtfZ2V0X2ZsYWdzKGNvbmYtPmJsaykgJiBCRFJWX09fVU5NQVAp IHsKICAgICAgICAgeGVuX2RldmljZV9iYWNrZW5kX3ByaW50Zih4ZW5kZXYsICJmZWF0dXJlLWRp c2NhcmQiLCAiJXUiLCAxKTsKKyAgICAgICAgeGVuX2RldmljZV9iYWNrZW5kX3ByaW50Zih4ZW5k ZXYsICJkaXNjYXJkLWdyYW51bGFyaXR5IiwgIiV1IiwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25mLT5kaXNjYXJkX2dyYW51bGFyaXR5KTsKICAgICB9CiAKICAgICB4ZW5f ZGV2aWNlX2JhY2tlbmRfcHJpbnRmKHhlbmRldiwgImZlYXR1cmUtZmx1c2gtY2FjaGUiLCAiJXUi LCAxKTsKQEAgLTc1NSw2ICs3NjEsNyBAQCBzdGF0aWMgWGVuQmxvY2tEcml2ZSAqeGVuX2Jsb2Nr X2RyaXZlX2NyZWF0ZShjb25zdCBjaGFyICppZCwKICAgICBkcml2ZS0+aWQgPSBnX3N0cmR1cChp ZCk7CiAKICAgICBmaWxlX2xheWVyID0gcWRpY3RfbmV3KCk7CisgICAgZHJpdmVyX2xheWVyID0g cWRpY3RfbmV3KCk7CiAKICAgICBxZGljdF9wdXRfc3RyKGZpbGVfbGF5ZXIsICJkcml2ZXIiLCAi ZmlsZSIpOwogICAgIHFkaWN0X3B1dF9zdHIoZmlsZV9sYXllciwgImZpbGVuYW1lIiwgZmlsZW5h bWUpOwpAQCAtNzgyLDYgKzc4OSw3IEBAIHN0YXRpYyBYZW5CbG9ja0RyaXZlICp4ZW5fYmxvY2tf ZHJpdmVfY3JlYXRlKGNvbnN0IGNoYXIgKmlkLAogCiAgICAgICAgIGlmICghcWVtdV9zdHJ0b3Vs KGRpc2NhcmRfZW5hYmxlLCBOVUxMLCAyLCAmdmFsdWUpICYmICEhdmFsdWUpIHsKICAgICAgICAg ICAgIHFkaWN0X3B1dF9zdHIoZmlsZV9sYXllciwgImRpc2NhcmQiLCAidW5tYXAiKTsKKyAgICAg ICAgICAgIHFkaWN0X3B1dF9zdHIoZHJpdmVyX2xheWVyLCAiZGlzY2FyZCIsICJ1bm1hcCIpOwog ICAgICAgICB9CiAgICAgfQogCkBAIC03OTEsOCArNzk5LDYgQEAgc3RhdGljIFhlbkJsb2NrRHJp dmUgKnhlbl9ibG9ja19kcml2ZV9jcmVhdGUoY29uc3QgY2hhciAqaWQsCiAgICAgICovCiAgICAg cWRpY3RfcHV0X3N0cihmaWxlX2xheWVyLCAibG9ja2luZyIsICJvZmYiKTsKIAotICAgIGRyaXZl cl9sYXllciA9IHFkaWN0X25ldygpOwotCiAgICAgcWRpY3RfcHV0X3N0cihkcml2ZXJfbGF5ZXIs ICJkcml2ZXIiLCBkcml2ZXIpOwogICAgIGdfZnJlZShkcml2ZXIpOwogCi0tIApBbnRob255IFBF UkFSRAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhl bi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBz Oi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=