From patchwork Fri Dec 23 14:29:00 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vladimir Sementsov-Ogievskiy X-Patchwork-Id: 708479 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 ozlabs.org (Postfix) with ESMTPS id 3tlYnF27P5z9t1L for ; Sat, 24 Dec 2016 03:31:45 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="F7eipuYZ"; dkim-atps=neutral Received: from localhost ([::1]:39857 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cKSkx-0000bt-47 for incoming@patchwork.ozlabs.org; Fri, 23 Dec 2016 11:31:43 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53864) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cKSjb-00085Z-6s for qemu-devel@nongnu.org; Fri, 23 Dec 2016 11:30:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cKSja-0005nF-D3 for qemu-devel@nongnu.org; Fri, 23 Dec 2016 11:30:19 -0500 Received: from mail-he1eur01on0093.outbound.protection.outlook.com ([104.47.0.93]:23326 helo=EUR01-HE1-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 1cKSjV-0005hd-V5; Fri, 23 Dec 2016 11:30:14 -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=M4hKwfNMpueHIe034wOb6M4nOfcgDJ9ltX48DO5ODog=; b=F7eipuYZ5rOiC8KrfzFAbaBl/7Hk4QdX2Hcb64x4xYXAU+SpbfHfyxnacWOXeAScpk1iHxM2jz0USnwWjKbBvW4mF/hTYTXEHIkdF/ZpIKXmTQp2tq4JYbIXhbmzl1/wkS2I9UUsf2zheNRw1vSqtuF6jb+b0nlOhYKY5S/VWAY= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=vsementsov@virtuozzo.com; Received: from vova-amd.qa.sw.ru (31.173.86.249) by HE1PR0801MB2058.eurprd08.prod.outlook.com (10.168.95.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Fri, 23 Dec 2016 14:29:55 +0000 From: Vladimir Sementsov-Ogievskiy To: , Date: Fri, 23 Dec 2016 17:29:00 +0300 Message-ID: <1482503344-6424-18-git-send-email-vsementsov@virtuozzo.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1482503344-6424-1-git-send-email-vsementsov@virtuozzo.com> References: <1482503344-6424-1-git-send-email-vsementsov@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [31.173.86.249] X-ClientProxiedBy: AM5PR0101CA0022.eurprd01.prod.exchangelabs.com (10.169.240.32) To HE1PR0801MB2058.eurprd08.prod.outlook.com (10.168.95.23) X-MS-Office365-Filtering-Correlation-Id: 3c688ca3-4fef-4012-6f32-08d42b402b8c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:HE1PR0801MB2058; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2058; 3:CeZQbgfnGQPCJ8BD/fQ/KRptcFp3bp/iEjKTGMtGFUfLlkY0CgTkjylGNDdBBh1Rb4W3gXcDggirReB5NptMSc7LSocCzHIhQD9u7xZ2OWswtuMI0lZUjZl/HusRtdqw/b77cAQqiyi6FOc4GuN09ID2S0VDP32o/4/JRqdEL6QFhcRL/wyqVKvkn7bmllnRsaQIvbOcIJG56sQgXPWsaQnUrJLk32JihKhxAktqPHkp+voJOox9pwQaKSKqkhA0RwUJmTe8NJsqer+0ZQ8H1g==; 25:xAIpDHr+Efxw/AqT53POMUK8zgrxY/jM5aNgsIGhYq+tvdIsS8U8M2XzMM/dysNYzgbg4gWWIZaMwYveFjy5XS89UYZp5NHmvpumVxScF8M7C/yD5qHbZOeXhYGsA92xUEQci4ppjEl/WWULK8ukWI/0JVmta0K9WctCe7GGHO8CKwLx5hBk3UgrbUu+Hw6GSxXD0mI8A/p7PzMQLJIThjLn+OMU+9lnPrB3SinOz+wnksmscRudiM6n+xIIvUJzoIlqVyjNbL7PfN6ORjIXmGpZ/yXJTGlP0gUTHr6HEoEF9wRr/2wv5+DyLzM4naa+qusBAM5o6tDJrPpsA77ZGNk1HUtsJbt5C82YWgQvh8OfpNuS4P6OPNh/cPbE5kvCmuF4nX/kuulkUq7mNglK2Wd0YUOgFCnCAQdkL8iZn5EVJ5WEwj42STSfc6fmjC9De41xdfz5IfOVwRUliIiBLA== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2058; 31:tk5OlrcvW2/O4HDu+/lOj7MMB6QkDsWCZ0UfmDR9xwUtz5KZAfJ1KnrSH740D48HTKdeag8/fC01yj+bDUPN+RD+TCs1cTwO8BcHWHKu544yi9Qp7I4qTQzrsDJJ9Yz5mo88vf62M68EbYVyPdeVxajHPR3ojDOYuaT8VEwgWC1fQku6gg6a4ybsB2h774qanskiUAf7k66C6PQCn4P88/NiaVgFsGYdtANEL3x33L9IPsrMFQT+AYobruku50IN; 20:bnGxJIZgDFzCSSLXH08AaGrg3tL7EXlaYjSerihM+wKU8D9SiGr0eG8bRFWn+UI/USH6GLS9RsS05fQw+XEgIFK4RG7fEcLfF5cs09+w5ypBs25xIfdLhq4RtBXS+i7xeqh7oSCN1kZKCQYPh9uxNKONIlQnsAHrf8Dm0U8XZdCs/RZEyXPrAMzA7UIZ0c3wZjj9Rj5F12r5+8KjMImE/nglbe3UVZG0bqNW03qkswCjrhkTRnDuBcd+sHOlWhp6 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)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(6072148); SRVR:HE1PR0801MB2058; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB2058; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2058; 4:Prb98ggOoY+Jo6eIpYDosIFclqzkA+6ENeGNe8WJN46UOzFMr0J7iAvfmBFvjgZjMxxLD91Lmc/AHaEk98wfnWOXaj2tCLwqdF2Q37Uy/U+EqBiltmm+FAf84bxxGIyZkwUPZDW3ybStt/huzP//3Pc1dZjPMxoVC59OXOjKuMpPtgRAOm2nwKBhpecw/JFe1CVUcKATASgtFpY4N9ut4a/NtGoY20H2Cze62mnoCZafNfGOchgmLkkU3D0kzRaRiU7cwRMIBD7npYTrixezTQBq71W51nCwvPCsuUxPU7AwD5heKZ1Kd8jEV3uUlvQ5U/t5nsJc7TUjLtPatIhFxKzhANXIdvK4V1DSOqtFLoAq9kmXWnWJ2Dm6NCXz6x51/sNiCwRA35DtZ7kAuyAKyFE8nqf2Ab2Une0W9D0fqPfSuZpgSCRXZCtrbSaFdbEdMEpzsp2MGnNZ03+qx7PVv2mBkf+n7R8Ra3k1TxvcrGBrtHtXQ477qWPDiIucX9EM1q/stIN63XcF1UTYPOzmYxQms/TlYPlo3SFmS9FZkiKtkXZogFxsInTDQjvvHNUT X-Forefront-PRVS: 016572D96D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(189002)(199003)(105586002)(50466002)(38730400001)(106356001)(2906002)(50986999)(25786008)(6486002)(6512006)(6506006)(53416004)(3846002)(33646002)(5001770100001)(6116002)(97736004)(42186005)(5660300001)(47776003)(101416001)(189998001)(36756003)(66066001)(48376002)(7736002)(305945005)(4326007)(6666003)(86362001)(8676002)(81156014)(92566002)(5003940100001)(76176999)(2950100002)(50226002)(68736007)(81166006)(7099028); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0801MB2058; H:vova-amd.qa.sw.ru; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A: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; HE1PR0801MB2058; 23:2gMjrP09eAf0rfNDZ1Rh+WFRpoCTUcYndJmVoql?= =?us-ascii?Q?iwpcQc24LfSLHn3IqnwdAlBAB44HL60VEgFjHKPDZbtR0qkWE1NFJpRlf+kB?= =?us-ascii?Q?SIiInvD5VMYIXQHVPZbNW9tJr1xc3CRdllL5Z3WixrVwjOLoL6hF7sz5PFVR?= =?us-ascii?Q?cDfYJf+A/FMKVL+2Wjxcd5rebQAp9j9yOXs1G3ESZPxJUB9CNseyXBY8J4sw?= =?us-ascii?Q?AEVMylMfWddRxxIW61AyD/WGRNEMG8dZ4iW8ZQHwKo/u3g1ZEZqhT0B+NOxz?= =?us-ascii?Q?nPdapI6NzAfUH3rtt5SXi71x5whKDqjhymPIsPmreYgo9iVQzLvrzXsVvXcm?= =?us-ascii?Q?f3fhWWzp7uuc+GgZ6ktGGQl7S5X30IEJHGdeZqr2WT/9S6NUYYtQ3kHvMOO0?= =?us-ascii?Q?oCpCRbH8V4JUYJ9juBIvJfVzp4FnG6CIBMy+fQeh7aEeA3o3uB7ix0XBCJ6p?= =?us-ascii?Q?GeDVkt3c4mW7K1nGX8v0zmXKioXNKUN714FxuKSr1YqEef4WB0ZL7TJVKf1R?= =?us-ascii?Q?ZzV4GNnEDg0kBuG79QFT/Ir7NbSOb7FIPi7yWe3Zmk8xq+wjUxb1lSs7+XxD?= =?us-ascii?Q?xP4NGM72OsTB2IO+2UQN9IIILfTQWxmE1xfztUHwk/ZgJrAAn7NGuJC3J62L?= =?us-ascii?Q?KJu8NMmGIK8tqQabELhIxCxb4tb0nwll2tD+MO8c1mR2osOtzM+7VgLQRLTE?= =?us-ascii?Q?dwwiBeuCljyufzsvj3qWgXoem/ylAqeg+kTku46efl8uxQ7WnoO4zcT01aa6?= =?us-ascii?Q?ml5jTahN2yHm5/9cNf/jWyEab9uj+yYJcz1nAYnS7nYMRmLuiVCrxwtUsgDj?= =?us-ascii?Q?PONdSg8RaXDiiNGYVtVG+XifIcJH4rQJZ5ZOP8P/TYk8+xojVEIPOm59S/pe?= =?us-ascii?Q?GtcxporLdiU+qMgsih+mdhE4Roofb9tj0RlX/33AXPg1S3U7ZVUeWITsANYN?= =?us-ascii?Q?dZiFkk+8JBMDevOm4LTCAbuEFA8HPqFO/+UtjyLYqZtBKgRoZQGp7tIH4L6H?= =?us-ascii?Q?xH58bSVXeC/UU4nJ7y6fPdDjF7j7L+85SfjQn4fyo9EV1cXZeSP7gOXBmS+D?= =?us-ascii?Q?2jE3A+r26kNm+gIKc1SS03L3OCf5lrpQ7W5aCMzGalzAchBSttA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2058; 6:j+uXXd9PUIS1b1niSt3aR+wGAGp9yiu/gd0tRdg4fuGLkHwLrb47BN3UXwGCUXBcLvvlzeozwLxFhFruC8C5ox6zlUsmhju0knHr6KXTTgy9hGSbGR27sIob1OYA/dhUWW6IHuCIKm9GhB200KwTPfB4k+ZMWyMpMlXrER9aS31YdwTAP/P5hBXdDoPs7viyNvqHzeOqs3sDgEL0zilvhkJlEIVxHmGSFxa4C/XUqcXlNvZgH7TpW3TrDH0X7UjxO/UZKfQQtElhj6GAql9l/7YfjSLMFamARDl/4wG+cD1QazfyGB8Rb3Z3zyEfGJepjIcN2HfI4f+RXaQgg3CqEagtUJLCPRRZ3dxT+IJhLWDL3CjmT6BM9F8WJRER4ebv5EwxXN62OxjlOuEotGYiZ7ISGEpDM7cKtOhGWGIeQR8=; 5:A3p02va2v8zlReYRN9rSmremujyi4DvWwG7F+dWclAhAyYPrU8XgDm6l2gm0ebPahr+PXmrNbMrBTA0JgZLsn/nqJ+8A8P8f1Beepg2IhUPzsaM8SbPZmWfHScOqG/ntm0EfAC+HuZWr6Npl8AM8Fw==; 24:6IQjnQXPkmERsPZfNMdppXhE/7QDxorIN0ymxtnf1X7zECrZvwjFi1fl+8/sFKcQnuiG70XkBTEcZjNQ8Sj2A9gwu1sjgKZR65H8HTdvowE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0801MB2058; 7:rGMFlCc2V4fTu+BAsjdZLryy7FJhlwW7v/Hi9jQJBLepONUUejyalxVu11AYYkxIgoi8QMo1zHY0vzNYhrnUqVVOEMiV/7c+3izQco+qb17qdOglhp8qMk70f9usR7Ecm0DycO9/Od2cO2XYnMjA8F1ooPFEVy/F3M0ldOXRWCFNWPMVw0YX29Qcgzp9UuWKgj4xuevzLK4zS1NMabV81nTlW2NrYsaH3J7V5sssu2nx+qkd14LhwmcqJF6DgUdouf6bxOS0SXLkgkMbEXrprXuY+h5naix07cp9fJKIwxBeBZ6z+e4+/wWVWTogoRz9Loz+05NlyqWgCeYarrCjuGghaTi2tetQLnmfsKDxgPuza59KrpAjisiZ55pzfWaNYUgN9aLgTbGnbXjZ7mItfd3Uyb3RwI+O5QpvdTRHe+dPnMTk2Bx04mjHGTg+fhX+kzjk/NkeZ7IuQAZuJ5cr2g==; 20:s4OIigOKllHxf2Ldd9aIxc0rj84H1IrtrqUAoshRNn44xllONnsiUf/6YYP4CNoAlVmIgHq9W241bVVipKbmGYxtYgZqnMDdXlD1RLqtUUVhgexAb3tRg69fDOGZDKMzQ7RZMN8te83icLM6OnsXm5BFNQjrO0Hl8erNIoL66FQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2016 14:29:55.7833 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB2058 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.0.93 Subject: [Qemu-devel] [PATCH 17/21] backup: make all reads not serializing 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, vsementsov@virtuozzo.com, famz@redhat.com, jcody@redhat.com, mreitz@redhat.com, stefanha@redhat.com, pbonzini@redhat.com, den@openvz.org, jsnow@redhat.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" To simplify things make all reads not serializing, not only from notifiers. This is needed because after the following patch, there would not be strong division between reads from notifiers or not - they all would be called from one place. Signed-off-by: Vladimir Sementsov-Ogievskiy Reviewed-by: Stefan Hajnoczi --- block/backup.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/block/backup.c b/block/backup.c index 442e6da..c2f7665 100644 --- a/block/backup.c +++ b/block/backup.c @@ -134,14 +134,13 @@ static bool coroutine_fn yield_and_check(BackupBlockJob *job) static int coroutine_fn backup_do_read(BackupBlockJob *job, int64_t offset, unsigned int bytes, - QEMUIOVector *qiov, - bool is_write_notifier) + QEMUIOVector *qiov) { int ret; - BdrvRequestFlags flags = is_write_notifier ? BDRV_REQ_NO_SERIALISING : 0; retry: - ret = blk_co_preadv(job->common.blk, offset, bytes, qiov, flags); + ret = blk_co_preadv(job->common.blk, offset, bytes, qiov, + BDRV_REQ_NO_SERIALISING); if (ret < 0) { trace_backup_do_read_fail(job, offset, bytes, ret); @@ -190,7 +189,6 @@ retry: static int coroutine_fn backup_copy_cluster(BackupBlockJob *job, int64_t cluster, - bool is_write_notifier, void *bounce_buffer) { int n; @@ -210,8 +208,7 @@ static int coroutine_fn backup_copy_cluster(BackupBlockJob *job, iov.iov_len = n * BDRV_SECTOR_SIZE; qemu_iovec_init_external(&bounce_qiov, &iov, 1); - ret = backup_do_read(job, offset, bounce_qiov.size, &bounce_qiov, - is_write_notifier); + ret = backup_do_read(job, offset, bounce_qiov.size, &bounce_qiov); if (ret < 0) { return ret; } @@ -231,8 +228,7 @@ static int coroutine_fn backup_copy_cluster(BackupBlockJob *job, } static int coroutine_fn backup_do_cow(BackupBlockJob *job, - int64_t sector_num, int nb_sectors, - bool is_write_notifier) + int64_t sector_num, int nb_sectors) { BlockBackend *blk = job->common.blk; CowRequest cow_request; @@ -262,7 +258,7 @@ static int coroutine_fn backup_do_cow(BackupBlockJob *job, bounce_buffer = blk_blockalign(blk, job->cluster_size); } - ret = backup_copy_cluster(job, start, is_write_notifier, bounce_buffer); + ret = backup_copy_cluster(job, start, bounce_buffer); if (ret < 0) { hbitmap_set(job->copy_bitmap, start, 1); goto out; @@ -296,7 +292,7 @@ static int coroutine_fn backup_before_write_notify( assert((req->offset & (BDRV_SECTOR_SIZE - 1)) == 0); assert((req->bytes & (BDRV_SECTOR_SIZE - 1)) == 0); - return backup_do_cow(job, sector_num, nb_sectors, true); + return backup_do_cow(job, sector_num, nb_sectors); } static void backup_set_speed(BlockJob *job, int64_t speed, Error **errp) @@ -544,7 +540,7 @@ static int coroutine_fn backup_loop(BackupBlockJob *job) } ret = backup_do_cow(job, cluster * sectors_per_cluster, - sectors_per_cluster, false); + sectors_per_cluster); if (ret < 0) { return ret; }