From patchwork Fri Dec 30 14:31:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavel Butsykin X-Patchwork-Id: 9492309 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 4993860453 for ; Fri, 30 Dec 2016 16:06:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 39E9C1FF35 for ; Fri, 30 Dec 2016 16:06:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2D18E22638; Fri, 30 Dec 2016 16:06:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 863941FF35 for ; Fri, 30 Dec 2016 16:06:58 +0000 (UTC) Received: from localhost ([::1]:40516 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cMzhp-0003Mc-MD for patchwork-qemu-devel@patchwork.kernel.org; Fri, 30 Dec 2016 11:06:57 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49490) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cMzg6-0002EY-PU for qemu-devel@nongnu.org; Fri, 30 Dec 2016 11:05:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cMzg3-00038M-FP for qemu-devel@nongnu.org; Fri, 30 Dec 2016 11:05:10 -0500 Received: from mail-db5eur01on0094.outbound.protection.outlook.com ([104.47.2.94]:54442 helo=EUR01-DB5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1cMzg3-00037Z-5W; Fri, 30 Dec 2016 11:05:07 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=7qyDDisnro3MdA0Tb0DLhrUDwi3Ju3YKtqolkaNE/2c=; b=Zj/5dtIGb5+v/1LZbsuzh/thTozK3rZ9eWIrM/yLUpcEDMrxC6EkGtz+f7TMfh7Y4C9u3NCO82d2KM38koQVmob6j3sia/N6AzvYaUCcjr6aRLebJm+gPg0gXblMOW9yePBL39STVU/jd+BfN/3sILSOZtH1xSe20Dfx6EZO88U= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=pbutsykin@virtuozzo.com; Received: from pavelb-Z68P-DS3.sw.ru (195.214.232.6) by HE1PR0802MB2555.eurprd08.prod.outlook.com (10.175.35.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Fri, 30 Dec 2016 14:32:07 +0000 From: Pavel Butsykin To: , Date: Fri, 30 Dec 2016 17:31:34 +0300 Message-ID: <20161230143142.18214-11-pbutsykin@virtuozzo.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20161230143142.18214-1-pbutsykin@virtuozzo.com> References: <20161230143142.18214-1-pbutsykin@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR0802CA0010.eurprd08.prod.outlook.com (10.172.123.148) To HE1PR0802MB2555.eurprd08.prod.outlook.com (10.175.35.148) X-MS-Office365-Filtering-Correlation-Id: cb5fe199-a616-4059-fe8e-08d430c0a1f3 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:HE1PR0802MB2555; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 3:GtPqwak/fyBaG0TNED5lf7GMOh0hk4hirJuQTdkxf82t7uiDvIREyL6/5cjSq69UL4i5O0hWSrywk2LXu/TjWephPrd6NPMW6p6z3PQ4mOjewb9WBbSlB8isIkcXeANM3fzeWAgcX7dKzuTaE4Fgfg5Z0iXRf6a5em9ImcOSQxphRlUusUyWu1OVagTIf2K1tkzzYUBpkYlmfA+Ivn9xLv3vsC3A4FjM65uCmlWUG642/7/OYPK893NKBrFspIZnD94ejZ6DqLOaLcndlKaUsA==; 25:tG9Z+pzxnNqyS9/xEEdPXjyXsfqEpsCvvcip9Ikq70yaT2q8WDyzApNmnWV+ztQn/w4sWi6I+v3NlZNU6r61vZ5ddFnOSjvNEQPYO5YmgiO5WwSfXE9ozgGohYtmC8H93qggnXXxL4fCKfKgHJMl/h2ntxyhvwv7aqaUBxsB/YUPmy2CVnaqOaOHO8uw2/kNRbyBCg93nWnLfp5B0chLVi/FlUIBoZTseuzn47dShsxcqepG8YsVbxvBscsMkXpliW25wcYumCR8aXAzezEQpXOw09o6FNzze7t0h3YiruDj6RqYdH2k9sDDfI8IXq9IaCYutGICNXofreCa766J97gJUNIf5ia8PuYiBdVBkm5Z9nKt/8in2XHAhBrlhAeFMPH4XcdLey0m4y6MssHljMzR75p4oM+Q/Lpix6gDA35l22SBMjgeZeHda0Clv8S57X3UZguoWNV2O+f66a6RgQ== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 31:6HjwBnrRVwD0T1Uaftvd3ROPkO/ywZkW3lPGGBVXRaWrejyBuTr8buwL+Z+MohRLHE0+zQ4G+ElY8PfsPLv0nL0Ky46qN0VvXoeqmYeB+jNy1D9KyvTrMntcr18PJmaJFf6ruH9No9jkkWIaqtpM5QTenQfnGmxmmTTLm4u8OWx/ulrT8qoHPrrh5QDV7PIa6yr/eUqqmEAYQ5XEY1DPvJQmlUfiUkyvywINWHs+sORTEWQk9sb7AergRe9+XiNAosQtgkCsPNvR2h2qF9VKXQ==; 20:Wr1tbrUTaL9meZB/d0ls2KXTWfkN1nd+yON0F/Wl3Ff4fP3LFqB4EJpuVUe39QY6P5eTQqBn94ZCS6bJ0PkfndHf3WkcFg5XmnjdNZTFkVsMTG0feW0A0m839vGbrlpubJpntaqaZnAVdTJXQ/nl0JAc3Kxf/v/b5YGzUknYSjyw1dsnAKhGUIssJ2/0xG32vi+tl+0OnntAdAdA538ayqVhef4vC0XRcqoFvmF9HeKFzkq92zzAWxNsaCUbHbjy X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(20161123555025)(20161123558021)(20161123560025)(6072148); SRVR:HE1PR0802MB2555; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0802MB2555; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 4:5UJOGNvX2oFG0cYVdLR8PmawYv4xqgZ1Jk5qi6VZ2WAM0cZXhco6IqP4KQ8Jok/NjIeVBxBKA9fQGpff1rhsotuvc7TZlQYkSduczfPi2vvrRtqS//bnFAyz9HeIbcDCjUAMpjX8i7SauWcxaTEBFuTv694Ztm9m8eEObWuIfVPAJqJZmuQvjqJbEbqBO97a/xEto5bIWJFJpapVycPuJPcbkTNyi06hBLsHEEm3hy3MXcb8XPNYWZ6QMiZBAvFsfz1CQu95auynz24m00Y9erVwYsqXU7EMLwkQz2QEiSvjKs7yXbaNhwvdbse7NA9LPNSVOPyv4LQu2W/suQ1sfQLVRZT5FPbBCXbfb92jYjX0U484Xx+6YiPiWHvFLBUt8YligWbZAqjt73vFS2oIvQfLJ6uI1B6+KJaQJXPsYQ7jeczyiYHihnSuHIrOI68rXnxei/CpRPcCVuObzJpOLGxR013Fs4enws2AdFcM83fz3sxONz9zu/T6eXG5ij1diwdRT8x/CRZlMFBUqAwwd+ibAg83KfpGg/QLF/+msjc1PeZITPxIPa+WewcSWVHwJTLtZCLEmhAivicxDj5xcfb/SOBHo+7u2hQsbwj+dzY= X-Forefront-PRVS: 0172F0EF77 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(199003)(189002)(6666003)(5660300001)(189998001)(5001770100001)(50226002)(81156014)(81166006)(5003940100001)(8676002)(97736004)(47776003)(66066001)(6486002)(36756003)(6116002)(3846002)(76176999)(105586002)(33646002)(92566002)(305945005)(38730400001)(50466002)(106356001)(50986999)(1076002)(6506006)(6512006)(69596002)(4326007)(2950100002)(25786008)(2906002)(7736002)(68736007)(53416004)(42186005)(48376002)(101416001)(86362001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0802MB2555; H:pavelb-Z68P-DS3.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: virtuozzo.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0802MB2555; 23:IbYNAc8xOpCjkZNd3mN3FlFOczLoqZbSsVKyzSF?= =?us-ascii?Q?XlXo38x8gWrtSCRI7YXN1S4UhUDpuofXLHCqLqnO5sOPeucV8kEOG+t3F8NA?= =?us-ascii?Q?15eVKbYNE+0ybCfbcAtCFRNhXV0JqbUfLz4vwAbBO70oLLDkFJLRsm31zr9d?= =?us-ascii?Q?bFVsRWThf7zrDw0zpkzJ6OOq94GKRgVDITCnQ17L6Uc8566AjgHlcrWtmcRj?= =?us-ascii?Q?shS6ObBCFdUb9mVjJ1zfdcarCE25QEcJWLHRbv9lGXyQ4pbM23mpwJ5P3LTf?= =?us-ascii?Q?Cf1YaazglmMaSkmghmpjPMiqnCLQXCkoB8ijyEpyqiJKIWkS+a9jTqB/op7T?= =?us-ascii?Q?oDvSvIfFES+gAmFn4VzzqlRv9TUEm+w4XC2nucNj30oUFksNqWOQNP3mpdWX?= =?us-ascii?Q?66eQsCpKsAx+vM0AHw3KoABQ6TPKthBztTy1wB3efmfAzwt8kZ7bYH1bdfZT?= =?us-ascii?Q?dGkytOjL0X7rq3KfeRiJxVbnhmP78KbwGETuPBABDgIA6v7ob0VmlnnM1KoB?= =?us-ascii?Q?Me3ruGPT+d+9tJ3DHcpWZTC4jULdcJnm9FZzwxvlHkg9bYhKCyJqKomh+tVV?= =?us-ascii?Q?kDj+QF2K0WJnJurqNXYrAuc4APN7byQYVhn4dQjINWoUUw+nPuamJtJ/MHN6?= =?us-ascii?Q?Or9wqvcd+4McS76NBuEcYQzZHvrgRSv/NE4pN4PzCDNCoZcxjLZqg28/M777?= =?us-ascii?Q?cCZmZjii0+o0gzqgLg8cgVj583GQPNHXx45ZarXBx2E8k4kohy5V3RrCTulg?= =?us-ascii?Q?/wFJuWJPVeR+gx6aEMTntxKngSnMo7zfUmVKOx+YTGvYB06bD0lYXyK5XUWh?= =?us-ascii?Q?/E9hNfbjRgaQi6lf8r7xR++/QdkZGQwtL4qHoFwBX4uDNeQz+ccmT8tvpslx?= =?us-ascii?Q?mLPsDxoxhK11K67cyBpXRhLpnb8oBodrSYftwNyE8O4CRXBNHQtWTw++3pTi?= =?us-ascii?Q?pyLJr5fnQNSeN9mzRy+wxTIYRKs7kWifeeeewL6hOFWIQvVLsE2ef5rYIW2I?= =?us-ascii?Q?Y2jmaQ8lysOdJBKJjOXmQMpGpKG24ZqtqyxnoNzgJ3nXG2+YIlPByxn14CRV?= =?us-ascii?Q?FlV3MM3gbmuZCUg9I8N3cxZd93dYZdM9oIVElE0xdOq0E4qOJ1V3zWx2JtUJ?= =?us-ascii?Q?eM73NL/RoRiU=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 6:wSQwDQraU4tUF3lgRkvel84XOsmc7qaQuRrLewYuL+s5vH08sL1r5swNyDCO5hM9mOgp+HqFth73epSaWBrMqE1UE7ZiVfZtZZACxYrvpDlA/HZlwynu1gLy+R9tEmiiVyq/FuhEW1NRG5z7xumlsTOtOwRlk4sfSuwv+evPzhtfSuqQa7kZLUqyBowLkvmEmyyn7Bq+u1vmXwcRidveQR0DbqhKG2F+QflLaS9vm+CiFfrHXv4j+XPXdxNEF4bveG9SGcY/4Vxy4XzS0z3Y0L/+HRXyP6xQjLHtsT6gTeHq+yBzehdTMfG7oe77vTdhf/tgp4FaGFdPtOHpHQOlU6ZT8ZWAYsYW3wSEEIaZy5eYCXK+zMOOXXSOY+Zc41ACXShJPsq5aztEe+MHWTBMWPymjeGo7RR3hv73QWzXc14=; 5:YVqywepcqqYeYeewqBZMQVswdUI9yXj/X/wOpcLC0B481hr2EtQaK/v5P710iJP2p4N2u9ItQS5mBdsU5qKVJb4lpFzFaMhRNXmfm7CMboyXk/yar5so+L0p1u8aDfRuMVSTu1imGPNFAoYS+ORZWg==; 24:pceqkiX2EdmjMu3vuC2mhXrEg5qtpTDFxRucHbVbCQKHK9KR3nlKLmGubQv9jXWPT72mRVgX+YYcdrIsu6VHiYUjrTwZl5PTomj/WOXmqEI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0802MB2555; 7:ijx3hZ0PVXPJbbS9KskuVO3m2OwFNeSYuDsXba4k8xioGO+sDM4DZNBjxuvr4Zd5s3avsLX2LldswOSqph1IJttC1r/vSf70bGTJV9FIwnLzqSsPZZh30SmvI++4uq7taK2RbNrcss6GH7XgE0V1WOwNNQqD+F9Wiqh+08prRRW01v7Yzxr3rJhnc5GphW2wFA4ePfJfbqWNK7S3pVs1bga17MefpQD34GgcTIfirE+wq/u+zsVQ3BRtaE7TJZ4NP93Yw6PTfxHhfvpE9rUBIEVwjkeGjLXc9mM4wMlwcLNYZy3SRqgfnfl7ogWndr+RJfJTvaEMyOJ/b/7XPavVwMNSWYOKwAtAnMKPuKneuhqBto3GjP3RrBMAWiRIXrGx9LWF+3um6l6Fq3LOANXK6OhYSlEU0hJ8rzTXjDQATEBY931I+wKJPc5rdFrurEd3SpkWGxE2Bvimnb8VshJVkg==; 20:6u3Z5kcnQnynkIP5XwSOD8keJ4P7h0TG9/UGDRmCTc8Nn4+qmR0pS3p/5co/NUBE5iiJZPLfOn3AiLo9r5MYmGjYA2h+qRgM9nw226ycdMkgXw4l+LnE1FZnt8EInCAdM5gumFoEJjmsiheVNDyE9SpRPL9ERTcGqrOzb6Gq7X8= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Dec 2016 14:32:07.2506 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2555 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.2.94 Subject: [Qemu-devel] [PATCH v2 10/18] block/pcache: cache invalidation on write requests 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, den@openvz.org, armbru@redhat.com, mreitz@redhat.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP In AIO write request completion we just drop all the intersecting nodes in the cache, it's a simple way to keep the cache up-to-date. Signed-off-by: Pavel Butsykin --- block/pcache.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/block/pcache.c b/block/pcache.c index f30e9e7bfe..4007241d37 100644 --- a/block/pcache.c +++ b/block/pcache.c @@ -314,11 +314,41 @@ skip_large_request: return bdrv_co_preadv(bs->file, offset, bytes, qiov, flags); } +static void pcache_invalidation(BlockDriverState *bs, uint64_t offset, + uint64_t bytes) +{ + BDRVPCacheState *s = bs->opaque; + uint64_t chunk_offset = offset, chunk_bytes = bytes; + uint64_t end_offs = offset + bytes; + + do { + PCacheNode *node = rbcache_search(s->cache, chunk_offset, chunk_bytes); + if (node == NULL) { + break; + } + assert(node->status == NODE_STATUS_COMPLETED || + node->status == NODE_STATUS_INFLIGHT); + + chunk_offset = node->common.offset + node->common.bytes; + chunk_bytes = end_offs - chunk_offset; + + if (node->status & NODE_STATUS_COMPLETED) { + rbcache_remove(s->cache, &node->common); + } + } while (end_offs > chunk_offset); +} + static coroutine_fn int pcache_co_pwritev(BlockDriverState *bs, uint64_t offset, uint64_t bytes, QEMUIOVector *qiov, int flags) { - return bdrv_co_pwritev(bs->file, offset, bytes, qiov, flags); + int ret = bdrv_co_pwritev(bs->file, offset, bytes, qiov, flags); + if (ret < 0) { + return ret; + } + pcache_invalidation(bs, offset, bytes); + + return ret; } static void pcache_state_init(QemuOpts *opts, BDRVPCacheState *s)