From nobody Wed Nov 19 03:02:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1614254011; cv=pass; d=zohomail.com; s=zohoarc; b=d9e7m+7T2C5HbHJxNUKBX+2szO2DjufPhQDqqrTPh6vGuqTGL6mKGt45HHX18D+lrSd4dagtTzDlhESaK/bS+oBFRKKFqwtvnOG6PGyvVI7DbJcgHqac4b/mMKib5O/WulE2Ez9AnhgsE1m6VFRAk9Q5iB5oQbOhk7ORVVWoIzE= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614254011; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=tqyq/wzrWvPl3Y8oX+bTp4PhAiv+/b/Ay3++YaCl4A8=; b=OQYVCbz0JT/JlGH3snStUiU9HOKGq0CM/S72B5XOsGcuTCSG4GDIyV+d7nh96DQXY9SvcdrH79i/e+f3ZPWEKPhPgCH2nfEVMLVzYj4ft5l4I/Ty3o4pd2SOSDr1ayXvJQDSpD76Wysq48TGp2eRU5UjiDIymtS7tJcRqzsaGKE= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1614254011292261.4642555829613; Thu, 25 Feb 2021 03:53:31 -0800 (PST) Received: from localhost ([::1]:59980 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lFFCz-0001A2-R8 for importer@patchew.org; Thu, 25 Feb 2021 06:53:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42422) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFFC6-0008Ac-M3; Thu, 25 Feb 2021 06:52:34 -0500 Received: from mail-eopbgr30137.outbound.protection.outlook.com ([40.107.3.137]:1858 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFFC4-0006sd-SJ; Thu, 25 Feb 2021 06:52:34 -0500 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6008.eurprd08.prod.outlook.com (2603:10a6:20b:29d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.29; Thu, 25 Feb 2021 11:52:21 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f1f0:6610:11f5:5e4a]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f1f0:6610:11f5:5e4a%9]) with mapi id 15.20.3868.034; Thu, 25 Feb 2021 11:52:21 +0000 Received: from localhost.localdomain (185.215.60.253) by HE1PR09CA0074.eurprd09.prod.outlook.com (2603:10a6:7:3d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19 via Frontend Transport; Thu, 25 Feb 2021 11:52:20 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=P7Php+SN+SYvAfvhWmf6zkKjhixuh0OQvDqY5qqLD+NQlk0/TRP5qABVJzKkfh/uYC2TSGoh+fyW/pBJ6jJqZhAQZF5cwdt/yyGX4Sox7pxRdird7zcSXauxQjT1A3vO/lLwUfP5avJ91lRWxwCvywYbyKbcXW7Vz29lc/eFbzozCQPBU4GA8uPMvw0oevlautdK87I+c+mex/TOE6qVBhrbAaTKAeWs0F4lsBDKv8jZIaxdjirPdxYkuLKnbT68QimTdkWZBKgxLBr7Sx0LATpM05R4L5C6J49KTOHmoQxrH4dfzCkHVlfoNI5bOFnTpwKIw4ks5OfxaYiEDUUqnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tqyq/wzrWvPl3Y8oX+bTp4PhAiv+/b/Ay3++YaCl4A8=; b=Kq9q2xUxXmW9IAwGUYwyRYiq9yO/fm2rQ9I2CmCBKMVzi9hchYfNjRqCdxk2YWX2os3P++FYJBRgWkHkv5yp62ZRMN+BemsdYgnVKhpPIBHPS6nJ/+8oySYVv62CQUczQDj/bmVGRmCsskgyvni1aeNJFp4dqHZYJfeDwBumdtPth9SFsEcWO9FPN2dYkgHjz53lw82yR9C13UGVuxNd4lQoOg1nBLsqI4d/BbMaIftU/Px1z78R/iGY3goavLC+N6bonrW1jQ2hnc+/GXQvt8V4GKWVQgqpzwobFZKDtqW3M2PZmiHNuHk06JX/Sppgmcd5/weW/dncpTkaZu6v1Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tqyq/wzrWvPl3Y8oX+bTp4PhAiv+/b/Ay3++YaCl4A8=; b=Fr4DIw25y0ydLNYbLPYjIZmOt3xLj8utNrjzFCL4OVM3XW2FxXx0Kkw2XU/2EYBUjOAONyvXLouRTDvLN0lXkvhAev158heltWEGFLYxU4MlPeRbFxNGU4ZoG7IkheG64Tc/xLTl4E9BQEcd0w3mxG0yJpwOKTAtpBo/XDl6M9Q= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 1/3] qemu-io: add aio_discard Date: Thu, 25 Feb 2021 14:52:03 +0300 Message-Id: <20210225115205.249923-2-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210225115205.249923-1-vsementsov@virtuozzo.com> References: <20210225115205.249923-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.253] X-ClientProxiedBy: HE1PR09CA0074.eurprd09.prod.outlook.com (2603:10a6:7:3d::18) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 12590a19-a567-4157-07b7-08d8d983cee9 X-MS-TrafficTypeDiagnostic: AS8PR08MB6008: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +wasHa47gG839K/8o83zEkHNUXeNKefQgqNJ33nFumq3ITozK5znjpVoMBDubuABWIk5NN+xbLsC3evAJ5u3whMoVP2dSGPVXSWSr08UngSeW5kfisk8xMJlX6zSwhaMt1OqbBqATocbs/k3HHPg7aXVv0iSnwTFV/VsAV7W/eJIUsAieJrtE/KOEQ3rH7FG0mY5Eb7Z3nctU/1l7jhR2XFw8tfsMI1BDAA3xLbc0grZj1/3RnP4R/xs59XbVq61iGXAIiyympkpk/NMQ5nRTRUFmAWH+oF5qxOLirvr09i/f3/NFeHWxDBUIq7gSvyZQ07i6E11mdhXkuRytSOHOTbqkvWE4svbltd7i6/ccvvV0ZdyqEktyHePj2lc2CUlOqHFac8JdQbBoZE0FRo2Hlerz29zeb1+sfD9e7PDf2IAU2pg4gdV9yWqUK7IzOup45etrwUmtw8svKg+aCP5x3S0dYYaYryBOOLqgwXvZivGE474PdSXsddoohMbTpu9VeEMvJCA1js8KDHFzIbV8cplxFvanrbTVBmSZ1Tl92fbSAaAHd60g5HByiwRgWKWe7NE9kiQm0Qle36CPyZaEw== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(376002)(136003)(366004)(39840400004)(346002)(83380400001)(36756003)(186003)(8676002)(16526019)(6666004)(478600001)(1076003)(5660300002)(69590400012)(86362001)(4326008)(6486002)(52116002)(6506007)(66556008)(107886003)(26005)(6512007)(956004)(8936002)(316002)(2616005)(6916009)(2906002)(66946007)(66476007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?csgJm+uar3VCt89TNC+PjcU0pmCqn5QKVzqsI3BJeDRONBopTuKs02c0g3jg?= =?us-ascii?Q?VYN02SNSsk076/RZzk0dFVW3/nbpJWtQgJD0m7kXH7mAankULgi7UIe3q/R1?= =?us-ascii?Q?27KApDt2Dyy8NZNhakJ2tcZJbjFu2g4+sKqKoYhKn1sn32Hp1wgdD7WjR4nX?= =?us-ascii?Q?gTkNgcgm9z7luJwEBqjE2GioKHaTIj8FCEb8KzDmeWabTkEPWxnmePNy+GxZ?= =?us-ascii?Q?dHaySwyk+b9MiXp8opFYu7kvUAu2ayJRCxx/wH+eO1pbOs21DP0JzST2xB0Y?= =?us-ascii?Q?8K2rguS4zCqV9Pwojbv66wdiLN9jYaMpbDqchckzltwnh4KiwEFMWmv6GATm?= =?us-ascii?Q?fDL8ZjV345nTPwbyxQatCyHnxnN9L0G/+4QQkuozBlFpBusGy8nQqHjpoif2?= =?us-ascii?Q?AyTfHhEpvhzUueOTiBpwdidSI+g6l3eCGpyPGTlJiCAqWWj8z1YuL10DuX8M?= =?us-ascii?Q?QCr/CbpnddNbFkGtkyic3LrYf9EBk04ZIgCiVJr1GM0I0K8Ck3Oa0FqdVOZm?= =?us-ascii?Q?MT7yLTb2uClAlHUXE/b6YId47hEg1t+3zrmED5IS9agPMSaUrFrwl0eBZhzN?= =?us-ascii?Q?pCbcNwePHXcploZqu7/sIowxFTT2WqLa+b+RFzs/KitMauA05sCY2lp/qoA9?= =?us-ascii?Q?aIhycGYMfZl1/+i6Uz4Qt4nt6QBbR8NSZDxaMNLCmIvuswxCwGbw87I9bHo/?= =?us-ascii?Q?rcjxn0BDL1sJjVsSnVITH24DuPa6dOG6At/eDCUBj7gesVhUiQ8QUBY8tAiV?= =?us-ascii?Q?zXdh4+v1ByrZoN4CmMJC1DNTTTHRjRePbgddFbyP9yWGYrWZet2qwU1CEySJ?= =?us-ascii?Q?JVMvTxNYEGejkIpOR6GMukNpXqm6tNvkFNjdgP3F7tepYAGvATBoqhD69gMh?= =?us-ascii?Q?/SL5eDXwD+cSGfvO6hLrrvdxHJDHENvIAaU7n82LLkGB5pXpsjSwHc67GzzY?= =?us-ascii?Q?41nQ/X057SBesmekIxg0aMq39VYFnxiwqw2m5GyQQCznqi1NmkL5RYfer+tc?= =?us-ascii?Q?FXbkvk6pOeNKkJLrYjaOKnwFVvthLvgMAbt4cZsJf84i4i5NRUotbHElHhgr?= =?us-ascii?Q?aog2qDMzQaoqA/Y3BZt+Ib7Uto9xiVE2+A2qkluur11LbLcOwVuw6YKRmRsB?= =?us-ascii?Q?IVOAEu7Gr9wh32vcuMRLIG69b7/mGvwkFXWLFlHSTQoxEYygdfs968CdpjDp?= =?us-ascii?Q?bI5obIKNBLPa8hh81dGtI+6FD+I2a8L4OQnvlVBpgqFQJ5hAbSYY+uAM/taH?= =?us-ascii?Q?kFyqBOLSFyCWZxB5TORzUhwcyvbi5KBe/HMlzBF+7UczGPbcCjIUZH5WD9Rm?= =?us-ascii?Q?ANBiDYZIXCxEp+dZE1Ec/68R?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12590a19-a567-4157-07b7-08d8d983cee9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2021 11:52:20.9959 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: SVn70magChngKe9adjTFlf+bnxGJmlz6ksm3FHZP4BFbljbm+KfG8UcmnAAqTRtCPv88jbAFW5SfNL+2jBV/XDii5/wzd+6ueGbktO+InoA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6008 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.3.137; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Add aio_discard command like existing aio_write. It will be used in further test. Signed-off-by: Vladimir Sementsov-Ogievskiy --- qemu-io-cmds.c | 117 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/qemu-io-cmds.c b/qemu-io-cmds.c index 97611969cb..28b5c3c092 100644 --- a/qemu-io-cmds.c +++ b/qemu-io-cmds.c @@ -1332,6 +1332,7 @@ struct aio_ctx { BlockBackend *blk; QEMUIOVector qiov; int64_t offset; + int64_t discard_bytes; char *buf; bool qflag; bool vflag; @@ -1343,6 +1344,34 @@ struct aio_ctx { struct timespec t1; }; =20 +static void aio_discard_done(void *opaque, int ret) +{ + struct aio_ctx *ctx =3D opaque; + struct timespec t2; + + clock_gettime(CLOCK_MONOTONIC, &t2); + + + if (ret < 0) { + printf("aio_discard failed: %s\n", strerror(-ret)); + block_acct_failed(blk_get_stats(ctx->blk), &ctx->acct); + goto out; + } + + block_acct_done(blk_get_stats(ctx->blk), &ctx->acct); + + if (ctx->qflag) { + goto out; + } + + /* Finally, report back -- -C gives a parsable format */ + t2 =3D tsub(t2, ctx->t1); + print_report("discarded", &t2, ctx->offset, ctx->discard_bytes, + ctx->discard_bytes, 1, ctx->Cflag); +out: + g_free(ctx); +} + static void aio_write_done(void *opaque, int ret) { struct aio_ctx *ctx =3D opaque; @@ -1671,6 +1700,93 @@ static int aio_write_f(BlockBackend *blk, int argc, = char **argv) return 0; } =20 +static void aio_discard_help(void) +{ + printf( +"\n" +" asynchronously discards a range of bytes from the given offset\n" +"\n" +" Example:\n" +" 'aio_discard 0 64k' - discards 64K at start of a disk\n" +"\n" +" Note that due to its asynchronous nature, this command will be\n" +" considered successful once the request is submitted, independently\n" +" of potential I/O errors or pattern mismatches.\n" +" -C, -- report statistics in a machine parsable format\n" +" -i, -- treat request as invalid, for exercising stats\n" +" -q, -- quiet mode, do not show I/O statistics\n" +"\n"); +} + +static int aio_discard_f(BlockBackend *blk, int argc, char **argv); + +static const cmdinfo_t aio_discard_cmd =3D { + .name =3D "aio_discard", + .cfunc =3D aio_discard_f, + .perm =3D BLK_PERM_WRITE, + .argmin =3D 2, + .argmax =3D -1, + .args =3D "[-Ciq] off len", + .oneline =3D "asynchronously discards a number of bytes", + .help =3D aio_discard_help, +}; + +static int aio_discard_f(BlockBackend *blk, int argc, char **argv) +{ + int ret; + int c; + struct aio_ctx *ctx =3D g_new0(struct aio_ctx, 1); + + ctx->blk =3D blk; + while ((c =3D getopt(argc, argv, "Ciq")) !=3D -1) { + switch (c) { + case 'C': + ctx->Cflag =3D true; + break; + case 'q': + ctx->qflag =3D true; + break; + case 'i': + printf("injecting invalid discard request\n"); + block_acct_invalid(blk_get_stats(blk), BLOCK_ACCT_UNMAP); + g_free(ctx); + return 0; + default: + g_free(ctx); + qemuio_command_usage(&aio_write_cmd); + return -EINVAL; + } + } + + if (optind !=3D argc - 2) { + g_free(ctx); + qemuio_command_usage(&aio_write_cmd); + return -EINVAL; + } + + ctx->offset =3D cvtnum(argv[optind]); + if (ctx->offset < 0) { + ret =3D ctx->offset; + print_cvtnum_err(ret, argv[optind]); + g_free(ctx); + return ret; + } + optind++; + + ctx->discard_bytes =3D cvtnum(argv[optind]); + if (ctx->discard_bytes < 0) { + ret =3D ctx->discard_bytes; + print_cvtnum_err(ret, argv[optind]); + g_free(ctx); + return ret; + } + + blk_aio_pdiscard(blk, ctx->offset, ctx->discard_bytes, + aio_discard_done, ctx); + + return 0; +} + static int aio_flush_f(BlockBackend *blk, int argc, char **argv) { BlockAcctCookie cookie; @@ -2494,6 +2610,7 @@ static void __attribute((constructor)) init_qemuio_co= mmands(void) qemuio_add_command(&readv_cmd); qemuio_add_command(&write_cmd); qemuio_add_command(&writev_cmd); + qemuio_add_command(&aio_discard_cmd); qemuio_add_command(&aio_read_cmd); qemuio_add_command(&aio_write_cmd); qemuio_add_command(&aio_flush_cmd); --=20 2.29.2 From nobody Wed Nov 19 03:02:46 2025 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass(p=quarantine dis=none) header.from=virtuozzo.com ARC-Seal: i=2; a=rsa-sha256; t=1614254013; cv=pass; d=zohomail.com; s=zohoarc; b=nenUwMPLreXHyfNS4ixIEww+sY8rqcbT3ii9DGW5mkNBg2kanWVbaB2dCFJxOM/MJzJ+BCh9mqa6IWsONYI7aKBTA0Ic+E0BYiDqHDxuTcbD7WnKplX0Q+3y1j9tCSB0zbmkOEQkV403mgtOzw2mXiEmnTGMuBVBIxQyuynJFb0= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614254013; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=16r3DiadWOxkQ42LojADZo+zQt/YAQng9PMqIguR3yA=; b=I5a99CsB2DZtvqtlvetZQA6dchhAc+uvKr0jPurrOr/6Ff11QH5B2YWbkzcxgYpm2zhFpvtXtaXSf4lHRHy/pz7NbrXAY/urLBj80g7eMVaz6m5AsWwbZSebbBjgknAV/VXcYGmvMLHcLhB9d4w1fsbitH4ZOo/lp8BZLbmhHqU= ARC-Authentication-Results: i=2; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; arc=pass (i=1dmarc=pass fromdomain=virtuozzo.com); dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1614254013705759.1263825171757; Thu, 25 Feb 2021 03:53:33 -0800 (PST) Received: from localhost ([::1]:60190 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lFFD2-0001F8-EQ for importer@patchew.org; Thu, 25 Feb 2021 06:53:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42438) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFFC9-0008En-8e; Thu, 25 Feb 2021 06:52:37 -0500 Received: from mail-eopbgr30137.outbound.protection.outlook.com ([40.107.3.137]:1858 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFFC7-0006sd-9p; Thu, 25 Feb 2021 06:52:37 -0500 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6008.eurprd08.prod.outlook.com (2603:10a6:20b:29d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.29; Thu, 25 Feb 2021 11:52:22 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f1f0:6610:11f5:5e4a]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f1f0:6610:11f5:5e4a%9]) with mapi id 15.20.3868.034; Thu, 25 Feb 2021 11:52:22 +0000 Received: from localhost.localdomain (185.215.60.253) by HE1PR09CA0074.eurprd09.prod.outlook.com (2603:10a6:7:3d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19 via Frontend Transport; Thu, 25 Feb 2021 11:52:21 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OmGNZotrEi39MuhS2rRIJjYULhnloesK/Tt5rTiF1HRv244G9azcXREsuzahC3T/Fblzly1mEzChZ09TsFFDYa+ynen+w8sbW780fZ1M4PuOrZqgn/hkPIwFrG4JJVeyhinUwUjPDXfVfaWbIQxxPOfppdf2VGLQyAFDmcxBavUfmdJfpm7jIOilA+yFcJMBhIYKmoOJ9e40bhFkA9L6KXCeRDWwYhdYcI+roPiIAAUTXJjbJ/79FRcae6PZ9d1xFW8vfWz0TInObo3P7vtYCS0qI1DLDo4ncG+Yj0Lp8k/8+g6yiZ/3/BsMEF//JyOmbwWWnTqwuZjlc0grnyp1lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=16r3DiadWOxkQ42LojADZo+zQt/YAQng9PMqIguR3yA=; b=HtSGNpse/Y0KiRmJSovHOTkCLW7gmsXKjUqvdsCrAJu43RUFT47DfbSb2msqMrSsc6sMWuOIpHKxZ5DAu0wfKPyOiGObHrHClc5qB1r82UcSpOkzz0U9a/frveo4zfg8Un2bouLZQepxoyHZARiTAYZyQz6D7Nw938qnFK4LRe5srDGtWjG8edyv5FWqPI3GtFlEm1/kAzuR+vLaSa7jd2ebe6QdpEmEEvpqDfNaxwQpr2SaG7iy4fVBK2RFl8YDOusYHSbs9LhdaherFn4n5WG62vrVeD2rI4QMmA1PHkjaEc3mtB4+9e7fy18m1KT0uH8xQldixsgbcw98JQ3jjQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=16r3DiadWOxkQ42LojADZo+zQt/YAQng9PMqIguR3yA=; b=bAf6ePxb4EUvDxonmHArXASOcTY+jBZYMW8cY8Qv/mWwq44056KAk3kj99IrJGNZvk4U4WuPilaHZYV9D6iQCamRj0S+XWt8MtSpS7O6XIsmjRO2njqwCp+5kLTxp80adw99DaT42K1syC0rR1Y7uNhwGLKJWAwtjxnqBz9WpI8= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 2/3] iotests: add qcow2-discard-during-rewrite Date: Thu, 25 Feb 2021 14:52:04 +0300 Message-Id: <20210225115205.249923-3-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210225115205.249923-1-vsementsov@virtuozzo.com> References: <20210225115205.249923-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.253] X-ClientProxiedBy: HE1PR09CA0074.eurprd09.prod.outlook.com (2603:10a6:7:3d::18) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2571dd9a-522c-4601-7fba-08d8d983cf98 X-MS-TrafficTypeDiagnostic: AS8PR08MB6008: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4502; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PvW8HfMx8b7JrrrtI2woGlFU8GM7i8EAaHcRy2r25mI3Vte9IJnLySprVG1HyxZ2wMWLuQs358qtchnL96Nq7AV7GkK4YfHXEAxR8KZLwo8MA3xnDE45da0/dd/KIHIfJnDTe2t+aO3eJ4YYBA0Ahd7jesvP10DvQ2Oct9iLBSFPLK/a53ijNggmP3gJMdsteodCzC/ywkGZTLlOIW5wIy86X6qsOPiW5leOLZ/F4e2pz7LLAQUWIcZfe6vmm0QEugf460m0PdUZvo+qDp+ki7mhbJUcy/d6ogOM+4VI60shelboPxGQwWJjUtHAmg1jAm9EjlmIArUROFpF3SUiclTEQ5A8S8dexL9E46lxX6ZAkkHPZ8TadL9smRpH9bZ+ZJ98ayEce5Njfg0q5LiMx3jCFK9ZxXrCijDnysAwNTafN84SvNpSrVURUTZfM0fRxQX2YamE+JH2pL2RUi/RDZ5wGBF/RE/MSDK8ibkska6fBQk0xnzdVg6PHtg1WSHi+ceIrtcRRgoI1jUPnRp/JRe+avOaYQpGHlnuQ9wVyGhfuee+Jw4pVtj+elmr5lM3BZnCFnBHt52eReQ1MyDZnenU1j0CSHJHnxHl+PYQDJhC5hwiq3zwbEcELtzwD+5PKoU8/TJwDD5ACkOAnLe0TmWTJJU++08Mrcwfz+l4tpZc5KW/FgfEEnC3qT9ca54hQVP0dvlLKdJ4JfeBYFe2+Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(376002)(136003)(366004)(39840400004)(346002)(83380400001)(36756003)(186003)(8676002)(16526019)(6666004)(478600001)(1076003)(5660300002)(69590400012)(86362001)(4326008)(6486002)(52116002)(6506007)(66556008)(107886003)(26005)(6512007)(956004)(8936002)(316002)(2616005)(6916009)(2906002)(66946007)(66476007)(2004002)(21314003); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?zOSPCNVr8a29yXU203RW8qir42CO8i1M9Geo7A8uWQjViq2QGZAe9+ZbHlnj?= =?us-ascii?Q?FgL2aNYD2oChi9pUQ6++NsWYpgtpoCZ/DskRxlMzVmEnVnaUCLUbeLUJeYE7?= =?us-ascii?Q?54BtqbZ9iwN6MDouGmYabRurX1XCA8BKFQRZT8JpqT/i7w/5eNBDHMxnqRvX?= =?us-ascii?Q?U3HGO/Ep2Ks1D1gKL3ib/tEl2DSxjCciQLGnDZMCYhvkQKW6TQb0/2xl0kAH?= =?us-ascii?Q?IGKl6IU6Ph0Cj1UlSDKi/GqD6tSJNxsuCbC5GM//jDQT5BlnL+QivldBiAh/?= =?us-ascii?Q?aIatq5XPOna4QX+viavuTrmajQKfb9UxPqqW8a3U2j3UUq+xg4iZHR1QcacI?= =?us-ascii?Q?aplNbFgIPyUNdV+7twqIMfsRZ/IMVA4gnRWqlgYgIW8VX4UHNp9TYy+2xygI?= =?us-ascii?Q?1DMCteZNSBqQIJCOBWuzSlKR7KDdPlAa/1RWyjUyjWDxcQxsaC3WAjc6HyPK?= =?us-ascii?Q?QMxkFFHbbhGnQZ4jWOezRz/H2qEPJRcisBMOFFuDmtmvv5PQJn/Gl05P4uVV?= =?us-ascii?Q?ctY4uwnN7wsnYEFmGASqCyAJRe7JLvyd/o9s/gmDR9bQ6teRYGBijUxzqslI?= =?us-ascii?Q?FPwtmAjJWiSDzgEPmBnrFL8sm9OX953sx+libx7ws/Ufev2NFGnZvyl1Ie19?= =?us-ascii?Q?clllDKFVVBkySzamASiwi/9+ZO77jkqgZuOuy9xWsMDgHm+jQqpp0Faj5CTC?= =?us-ascii?Q?aLuMGBcruRLwk2NmJyFjRVgcr8qJAXnvd0AcW4WkNkNdBEiYUIXydLWRdHcd?= =?us-ascii?Q?9p5nZEyPCeDYR7odrJeBJHtIbqxT1Z5hv04KbeE/tbamkhh4mbJJUH5QDRfF?= =?us-ascii?Q?Nx3WSmYahOI/tpsC75BztXJFyh/dXPcN0TlAwVmc0PN0ctazt96lyINQfLc1?= =?us-ascii?Q?GBoBuHPyAJH8CIcrlNSB37Q44yF6jsP3yUI8IcLgtBrZ7nR6EP8qAa+nBBf7?= =?us-ascii?Q?ILF4b1oqLq9Q6HS7FM1wEXdvUgtpvtkt8Aa132yohCDVgkiuJ9bAxWLpRK5O?= =?us-ascii?Q?od9ZqLp44j6HNghmHi06DD4iM3eOe4gQuWjvuw2qLwGVMM8y2ArYhLl5cfD0?= =?us-ascii?Q?yMsN6p2yZA2Q+7BTMidDnDIwiMfjZ/+w7zORwe326STU0xgoDW2yII7FdEyx?= =?us-ascii?Q?ccWTEko76zyTpzdoSxSTZ7kPjrnu/fcP2IB9TW61Edo4HBxU2RqCpmic+vNl?= =?us-ascii?Q?+9wQ9dE54wFfyPuf/vZ/hoBJraNunCmbX4OFECvGCc2Ue4dH9+Dkrn8t7/F/?= =?us-ascii?Q?s28noHbBHN6draU3Bc8n+IKpWTPcEqGlt2GPJVxK7rd2go0qGqaTN9sTAIXU?= =?us-ascii?Q?Vy0IUT47P3acVCnExRhcojK5?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2571dd9a-522c-4601-7fba-08d8d983cf98 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2021 11:52:22.1398 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 994+Gm1oH3Wq+J/edJHz9cpAKD0+49NBQNH7+e203i9tZnIKCJNGejHgfp/nH1bdO6x3tDJp7tQ/YyATKlYBQUzw0eIpDmTFEPwUhUeGb/k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6008 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.3.137; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" Simple test: - start writing to allocated cluster A - discard this cluster - write to another unallocated cluster B (it's allocated in same place where A was allocated) - continue writing to A For now last action pollutes cluster B which is a bug fixed by the following commit. For now, add test to "disabled" group, so that it doesn't run automatically. Signed-off-by: Vladimir Sementsov-Ogievskiy --- .../tests/qcow2-discard-during-rewrite | 99 +++++++++++++++++++ .../tests/qcow2-discard-during-rewrite.out | 17 ++++ 2 files changed, 116 insertions(+) create mode 100755 tests/qemu-iotests/tests/qcow2-discard-during-rewrite create mode 100644 tests/qemu-iotests/tests/qcow2-discard-during-rewrite.o= ut diff --git a/tests/qemu-iotests/tests/qcow2-discard-during-rewrite b/tests/= qemu-iotests/tests/qcow2-discard-during-rewrite new file mode 100755 index 0000000000..dd9964ef3f --- /dev/null +++ b/tests/qemu-iotests/tests/qcow2-discard-during-rewrite @@ -0,0 +1,99 @@ +#!/usr/bin/env bash +# group: quick disabled +# +# Test discarding (and reusing) host cluster during writing data to it. +# +# Copyright (c) 2021 Virtuozzo International GmbH. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# + +# creator +owner=3Dvsementsov@virtuozzo.com + +seq=3D`basename $0` +echo "QA output created by $seq" + +status=3D1 # failure is the default! + +_cleanup() +{ + _cleanup_test_img +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./../common.rc +. ./../common.filter + +_supported_fmt qcow2 +_supported_proto file fuse +_supported_os Linux + +size=3D1M +_make_test_img $size + +( +cat < (p=quarantine dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1614254101379827.2546995664012; Thu, 25 Feb 2021 03:55:01 -0800 (PST) Received: from localhost ([::1]:36854 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lFFES-0003E7-40 for importer@patchew.org; Thu, 25 Feb 2021 06:55:00 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:42450) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFFCB-0008L3-MV; Thu, 25 Feb 2021 06:52:39 -0500 Received: from mail-eopbgr30137.outbound.protection.outlook.com ([40.107.3.137]:1858 helo=EUR03-AM5-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lFFC9-0006sd-V2; Thu, 25 Feb 2021 06:52:39 -0500 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) by AS8PR08MB6008.eurprd08.prod.outlook.com (2603:10a6:20b:29d::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.29; Thu, 25 Feb 2021 11:52:23 +0000 Received: from AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f1f0:6610:11f5:5e4a]) by AM7PR08MB5494.eurprd08.prod.outlook.com ([fe80::f1f0:6610:11f5:5e4a%9]) with mapi id 15.20.3868.034; Thu, 25 Feb 2021 11:52:23 +0000 Received: from localhost.localdomain (185.215.60.253) by HE1PR09CA0074.eurprd09.prod.outlook.com (2603:10a6:7:3d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19 via Frontend Transport; Thu, 25 Feb 2021 11:52:22 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ibQQHaV91rBLVIuHFAOu5Wx3yLcRqOjaZpvx7im3EQ9xaYD+2CUbUBx0Te7QXwLf2atykqrxrSUt69+b2ydMdad+QrSAsoM+FSO+YfvlxDsg/XrBcWQy9Qk5HMUDkuq/uxQy+EDZoqR9Tq7VtXIz10fM8vDbEuyFtfGGwxmq68M7OosYlpZuJu04tQ8BG62VnPDouo6M4rFEotVdxQH+5m5HoQokg76rw8U5hq9ucT9mnnRtJYnZxjCv6i1Raiw33itvsYX4W9h48OvRk9ZhClW1xxd4nfTUmKRsGNN5a+mXRCpO7/BGrZJHNZ/2fXEF99TKSFSOsV5Yck4gSgS7cw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1QyD1f8oFeyvEnEDrnC4e+YLRmAOAT7rhg2l+eR2AeE=; b=QFA4QR+C9Ezs2L+1CSscwlyqHW98On83rcBfkEyShDT8um8Nh8P0Qdba6ULAGQVAjQ5g36/C4IpZeZHC9ONd9PyVtbiEVYZOsIXxoQKGNPHsRP+/steLBjh/Uo1fDOXdXPR9yAwrs1wZT7c3BhbtK8+XK4gYxrKts0UC96XWsJAzLHb5gqU+3Qij5xY3VccKfZyVKLMEAb+VT5vt30RTmmtbZ4vGH/IhF3OuYs38AH47U5/8KkvNcU+7j53aD92J8VhwZGuFWUuogz+Gj/zhhGVxG+xLQiXif/h2zCP2yFr28dzySuUmmRHSlzJoMbOPKidGTcbtaK3BcUf2LrD5KA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=virtuozzo.com; dmarc=pass action=none header.from=virtuozzo.com; dkim=pass header.d=virtuozzo.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1QyD1f8oFeyvEnEDrnC4e+YLRmAOAT7rhg2l+eR2AeE=; b=qrEtcO/r23HdO4voqo5sqqtuiXALTxve7ZGi3B1dPrvN3BEqHp9c4yLm68ER9NpKm319NMQBGC/IcoJ//k2y4GMv1tJ6+irwIKgEZiQCvfYPeWki/sadN+E0PGtnLcVggmM6iZ401UYAP6tQpx3zUoMaJW7joCKLZOUkXTvqFx0= Authentication-Results: nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=none action=none header.from=virtuozzo.com; From: Vladimir Sementsov-Ogievskiy To: qemu-block@nongnu.org Cc: qemu-devel@nongnu.org, mreitz@redhat.com, kwolf@redhat.com, vsementsov@virtuozzo.com, den@openvz.org Subject: [PATCH v2 3/3] block/qcow2: introduce inflight writes counters: fix discard Date: Thu, 25 Feb 2021 14:52:05 +0300 Message-Id: <20210225115205.249923-4-vsementsov@virtuozzo.com> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210225115205.249923-1-vsementsov@virtuozzo.com> References: <20210225115205.249923-1-vsementsov@virtuozzo.com> Content-Transfer-Encoding: quoted-printable X-Originating-IP: [185.215.60.253] X-ClientProxiedBy: HE1PR09CA0074.eurprd09.prod.outlook.com (2603:10a6:7:3d::18) To AM7PR08MB5494.eurprd08.prod.outlook.com (2603:10a6:20b:dc::15) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9ac1a685-c920-4873-0ae9-08d8d983d042 X-MS-TrafficTypeDiagnostic: AS8PR08MB6008: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:972; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oJ87rvyE3tCML/8QtEdU2nSTjdt35J2mfZVe3gQS5hs4ZpyiNt3a5MNyn3VMrMWQE4EO3aLinqUXUpsM2kSa5JjANi7Y2u7a/XRzWsqQgJziD6qQexzHd9X3Q8ZAmphK/Lzj1RClFH7CCx05YVwtSexAZ0CIVUV31aHr1k7Te+EzBpL00mN9MZ3FHaznfCPVhxFb9Qhxv+3cRCHNnpqOtztPm17X3W0tsz7Rvb84mYW6roJ84nmmJo7NbJUNLAtvQJKd29XnGxWu4E1M3B+NppWjFiOud4AMNQ4BEItwnTiHgnJhdAkwz4Io7StgU2ZorAX4uyA8qmGMArjVwlo/olEbW40DenYe+TKEyB80ZICyIcVgbu9WaVKdelsMjMfwcP2jCyb463BlPayMWfYYlCSXYADlWhnf4g5HjjLCR4YCVM4QxHjBtyHiIZp+w2jKnicALd1y+p3Vdb8j7sU/6P2XMVkFYHV5AIhapu+pRCZ+NJQkSUtIQNU4lsCWZx0q5kGxe/SMOMVrq7GFT7ymGGkMB72ZbDmv3hfPgp0SdOkSS+om2aal4FB41GDms4UCcSeyxP2n25UQMtx/CoXx1g== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM7PR08MB5494.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(376002)(136003)(366004)(39840400004)(346002)(83380400001)(36756003)(186003)(8676002)(16526019)(6666004)(478600001)(1076003)(5660300002)(69590400012)(86362001)(4326008)(6486002)(52116002)(6506007)(19627235002)(66556008)(107886003)(26005)(6512007)(956004)(8936002)(316002)(2616005)(6916009)(2906002)(66946007)(66476007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?f/UhybjbY2mhQVMGrvdRrDdCDPlE2IcPdnGev+hagUduc4m9Nv1NleEr2aj1?= =?us-ascii?Q?93tdfqeYRKHQSQqenzhgIcvivV6n33MHafFfw+ciG9pbw4HqiRKaQvXerInX?= =?us-ascii?Q?mQwn4k4tH4cLWt3IVRzW8eEXpe+U/iuQU0hC5/rT8SUB/bNdIQc3a9af2X82?= =?us-ascii?Q?9Iz6a2cHY+IunmTyB73jexZxzGiCMpMJr4PD3Y6Sa1QncATtEzLZTbgwh8pY?= =?us-ascii?Q?l8DjAlbJvX/GMLtNyJ8X2Rf+7wzmYuoGNFQjiHwpsItkvI6az+qJ2bLC9uhH?= =?us-ascii?Q?ejX6I1NZLnQU05TvLSMJQxmHnvs97vBWNcfoOdfGr6z0p8oyb5thrrTz1EGf?= =?us-ascii?Q?x/fc0uMybME8ga0YM0V1+Jr5EA9dPiUZ0xi33imILHtqykVU5sobAcACF22o?= =?us-ascii?Q?HPFxt7BDx6ZX28W1cqxU6b9lY3fOuv40R5TV3sc5An9tj6/68VAfKY5S+RFS?= =?us-ascii?Q?oEgCYl/idKqox+kIK+vqvJkXtnfMfWaHc4IZNFrJ/mskEYFtbCbUN0rJzzSG?= =?us-ascii?Q?7F0HEOAFtH6TFDJkw97NfvvH3bvW2v5G2qgPQAdWgWjdeHOHZ8AfcwS7bZTu?= =?us-ascii?Q?a1MBO5LkKKAiPFHOJ6UcCr1XO9OI0qFp90hdGIfrNrl6cs0lapMNO7aoKRgT?= =?us-ascii?Q?+6fGHnEadrWcIeoI94NxOwQvQl4dX2fw72qWIw6DoIlELydlMVmgSvwT+zgN?= =?us-ascii?Q?DHj29y5M/E9xjcE4J23AjlDGHzoDSvkCjxC/enyyaTdmZMIB25Vr2HVcHous?= =?us-ascii?Q?+5zyi+W5h0RIMZf1GN/9d9/qypOy+sizX5t9Qhk33nkLtfgErE0gBVnW6Xsd?= =?us-ascii?Q?6wr/0lIQmVeujXWb2ejdVmg7ZBdONIT2vrx5SdFJX3GMt40/MGtuFTqgAsfm?= =?us-ascii?Q?jaYxwy7vsYQGbUPXoJQ+2mGa/uVEDD2vMajCk0T1ILD5I8QfY2lkis6g0RKC?= =?us-ascii?Q?O/G/D3tufgjJdCsTVTkVX+yVErkeF1b+zJ8nIsyghzu9HLnjMlRtOxy3oErF?= =?us-ascii?Q?Na5cUaUAAllQ2XOLkFQpNxzGygIvYim11DN95O90swT7prfwzu91vgHsQpCd?= =?us-ascii?Q?jE4TdeV7h7I5IsW4zdVuDorx2G9RBWMoVRnBhnagYqKQJWrwVvYsV66ZwI7H?= =?us-ascii?Q?li003Kb2D0RN0rE2lqq2DM/5DQeVwJaraObv4oQbicM+1nBXvkZuxZ2kqfgh?= =?us-ascii?Q?W1NiINHiR6ZPGTM2zLytbY6P4GGvpcCoIcFhtZ4QUPIiGx8XNivpO9r6AmHN?= =?us-ascii?Q?glfEDAKn3REBVK0C9Gsd2xi3KCzqCDzLbsuSH19FYQ/24Q0HNxUjoUo4RZ0Z?= =?us-ascii?Q?3ubIgsxRmbEkFtb2EAEA+QDT?= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9ac1a685-c920-4873-0ae9-08d8d983d042 X-MS-Exchange-CrossTenant-AuthSource: AM7PR08MB5494.eurprd08.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Feb 2021 11:52:23.2420 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Z1MIqXzpE7xnQBOTyj+8NzDHF+RZuFKdZ7HXY43EQwnAJde06/mdpGQHNRXYD6qjwiWaQeFow+5zc3h/CgnO6y/gTcUr+6466GefvRlpceo= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6008 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=40.107.3.137; envelope-from=vsementsov@virtuozzo.com; helo=EUR03-AM5-obe.outbound.protection.outlook.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, MSGID_FROM_MTA_HEADER=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: pass (identity @virtuozzo.com) Content-Type: text/plain; charset="utf-8" There is a bug in qcow2: host cluster can be discarded (refcount becomes 0) and reused during data write. In this case data write may pollute another cluster (recently allocated) or even metadata. To fix the issue introduce rw-lock: take read-lock on data writing and write-lock on discard. Enable qcow2-discard-during-rewrite as it is fixed. Signed-off-by: Vladimir Sementsov-Ogievskiy --- block/qcow2.h | 2 ++ block/qcow2-cluster.c | 4 ++++ block/qcow2.c | 18 +++++++++++++++++- .../tests/qcow2-discard-during-rewrite | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/block/qcow2.h b/block/qcow2.h index 0678073b74..7ebb6e2677 100644 --- a/block/qcow2.h +++ b/block/qcow2.h @@ -420,6 +420,8 @@ typedef struct BDRVQcow2State { * is to convert the image with the desired compression type set. */ Qcow2CompressionType compression_type; + + CoRwlock discard_rw_lock; } BDRVQcow2State; =20 typedef struct Qcow2COWRegion { diff --git a/block/qcow2-cluster.c b/block/qcow2-cluster.c index bd0597842f..e16775dd59 100644 --- a/block/qcow2-cluster.c +++ b/block/qcow2-cluster.c @@ -1938,6 +1938,8 @@ int qcow2_cluster_discard(BlockDriverState *bs, uint6= 4_t offset, int64_t cleared; int ret; =20 + qemu_co_rwlock_wrlock(&s->discard_rw_lock); + /* Caller must pass aligned values, except at image end */ assert(QEMU_IS_ALIGNED(offset, s->cluster_size)); assert(QEMU_IS_ALIGNED(end_offset, s->cluster_size) || @@ -1965,6 +1967,8 @@ fail: s->cache_discards =3D false; qcow2_process_discards(bs, ret); =20 + qemu_co_rwlock_unlock(&s->discard_rw_lock); + return ret; } =20 diff --git a/block/qcow2.c b/block/qcow2.c index d9f49a52e7..e1a5d89aa1 100644 --- a/block/qcow2.c +++ b/block/qcow2.c @@ -1897,6 +1897,7 @@ static int qcow2_open(BlockDriverState *bs, QDict *op= tions, int flags, =20 /* Initialise locks */ qemu_co_mutex_init(&s->lock); + qemu_co_rwlock_init(&s->discard_rw_lock); =20 if (qemu_in_coroutine()) { /* From bdrv_co_create. */ @@ -2536,12 +2537,14 @@ static coroutine_fn int qcow2_co_pwritev_task(Block= DriverState *bs, } } =20 + qemu_co_rwlock_unlock(&s->discard_rw_lock); qemu_co_mutex_lock(&s->lock); =20 ret =3D qcow2_handle_l2meta(bs, &l2meta, true); goto out_locked; =20 out_unlocked: + qemu_co_rwlock_unlock(&s->discard_rw_lock); qemu_co_mutex_lock(&s->lock); =20 out_locked: @@ -2605,6 +2608,8 @@ static coroutine_fn int qcow2_co_pwritev_part( goto out_locked; } =20 + qemu_co_rwlock_rdlock(&s->discard_rw_lock); + qemu_co_mutex_unlock(&s->lock); =20 if (!aio && cur_bytes !=3D bytes) { @@ -4097,10 +4102,15 @@ qcow2_co_copy_range_to(BlockDriverState *bs, goto fail; } =20 + qemu_co_rwlock_rdlock(&s->discard_rw_lock); qemu_co_mutex_unlock(&s->lock); + ret =3D bdrv_co_copy_range_to(src, src_offset, s->data_file, host_= offset, cur_bytes, read_flags, write_flags); + + qemu_co_rwlock_unlock(&s->discard_rw_lock); qemu_co_mutex_lock(&s->lock); + if (ret < 0) { goto fail; } @@ -4536,13 +4546,19 @@ qcow2_co_pwritev_compressed_task(BlockDriverState *= bs, } =20 ret =3D qcow2_pre_write_overlap_check(bs, 0, cluster_offset, out_len, = true); - qemu_co_mutex_unlock(&s->lock); if (ret < 0) { + qemu_co_mutex_unlock(&s->lock); goto fail; } =20 + qemu_co_rwlock_rdlock(&s->discard_rw_lock); + qemu_co_mutex_unlock(&s->lock); + BLKDBG_EVENT(s->data_file, BLKDBG_WRITE_COMPRESSED); ret =3D bdrv_co_pwrite(s->data_file, cluster_offset, out_len, out_buf,= 0); + + qemu_co_rwlock_unlock(&s->discard_rw_lock); + if (ret < 0) { goto fail; } diff --git a/tests/qemu-iotests/tests/qcow2-discard-during-rewrite b/tests/= qemu-iotests/tests/qcow2-discard-during-rewrite index dd9964ef3f..5df0048757 100755 --- a/tests/qemu-iotests/tests/qcow2-discard-during-rewrite +++ b/tests/qemu-iotests/tests/qcow2-discard-during-rewrite @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# group: quick disabled +# group: quick # # Test discarding (and reusing) host cluster during writing data to it. # --=20 2.29.2