From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.openvz.org (mail.openvz.org [69.168.225.77]) by lore.virtuozzo.com (Postfix) with ESMTPS id C58D581317 for ; Wed, 4 Nov 2026 21:36:37 +0000 (UTC) Received: from mail.openvz.org (localhost [127.0.0.1]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A4LZPep027041; Thu, 5 Nov 2026 00:35:25 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A4LZPep027041 Authentication-Results: mail.openvz.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=virtuozzo.com header.i=@virtuozzo.com header.b="bKSo1NUI" Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A4LZFZt027003 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Thu, 5 Nov 2026 00:35:15 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A4LZFZt027003 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-48e29c25101so657228f8f.3 for ; Wed, 04 Nov 2026 13:35:15 -0800 (PST) X-Forwarded-Encrypted: i=2; AKwUvBx7csfKfn9INXAQZ/Cu/5sUkWJwymL4+q7DaeM49qohfHjHXSGAupiZP4X//oRw2YT/rIgKRA==@openvz.org X-Gm-Message-State: APuU4Z/SyX1uq0dlw0KtIYLrZPR1XlrOoaEfVXUndWpcGCdqy1KPhzKt /hPmDXtEDGcO3Qf921uEFnmvCfRtA22ldvnyN5cWvRjFLD7M0szwYILmlvECQoOjJMhcfNUmWyR 99jjrLK5pWgu6ZIGL3uZ7iL4XmmJzTH696AduhGx2Jqf0F9iSUh00tw== X-Gm-Gg: AYBFou26gy1MIyXKCyl/3vZRz2/h6Gk4BMYmu0xIqBPYw1X5xsK39Cay4bdBVUUaqyF QO0mXvb7Arkt/78+fgjn+ErLAN3UAXj7D1iWGFvTS+mOi2NrP78rrxRS74MoaW2Hgz5tPA5m7Qp DJIUytx5nZRbx6FpsfIurHjveXGXTghc0+vFffY8yJZt96lR0Dmj8s4aTnPQiW3k8L9dcHfbusv YgAE8ZkjJeatvRSBepwnbyalmEFxJCONJXXzhPcFEKZG0v8Cj4z9yidkwgMpiuSSq64Loz+9ZC3 /xWgaKVjdPo9ri3al/5/sHS0Ez0zkGksJKim5/WPS7xuU209KjXW4xHszXiou8birUQgyjPgEtr J8dHPQRZyQHv5Wqtl X-Received: by 2002:a05:6000:2409:b0:48d:ca32:e90f with SMTP id ffacd0b85a97d-48e6e5044fbmr38846935f8f.55.1793828114819; Wed, 04 Nov 2026 13:35:14 -0800 (PST) X-Received: by 2002:a05:6000:2409:b0:48d:ca32:e90f with SMTP id ffacd0b85a97d-48e6e5044fbmr38846919f8f.55.1793828114327; Wed, 04 Nov 2026 13:35:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1793828114; cv=none; d=google.com; s=arc-20260327; b=PQY8D33w999fAufhZJCV4w/N/gmE2uGd3zv29eDq2K+vumLz3eVnD2zKYeB7/y2GP7 EcczofZJyk4FB1KJhG8fdmlOZQ9jSUIqsAhDb47bLUI8rCv7TXlykSvU16Mr2GI+S2Jx SX6UD7E714n1XdM+J1yvmTEmWeJIAvrFUp8clz4DlgZdnwNDJtnwKG0MncYWcisz/cYV UC1cNJZdc9q5s3Df+N7impbpBLegMTmqg6ALVhrq89/MonTwi8j4Oj//3oQirQpXfo1l Hqy+TSe1wmtl+dXHc9b0sfuCKIybsucspf12f2gXFd7k32FrQHSRAERZLtYs/9SSoiB9 enGg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=message-id:date:references:in-reply-to:cc:to:from:subject :content-transfer-encoding:mime-version:dkim-signature; bh=9WTQlw6uCR0dcNKBxwh5qwpAf7xoMEpyQRjjHCFJ0aA=; fh=wM93IzJ1q6YTmltzeth+TON77Ag69AF1TepZ24u7du4=; b=CZkiq7T1VRD53jGTS1e7DkrzYjt5KhtkJINzSMtvTZ8DEUhObrVpzLVT5a/JoYHuRo 182LOX5gOT4vaCiZ6Hlt4baRMX68LFZIIqKBtS1I6znn8xpOThPKtIkZyxvrPj2KQW/4 I2gUC1Xf+oRtIj2c0o4MLGQcUfv2hrm+H4gliWTIqX1hHn513ifnNaKroAckSijlq+FY Gx91Jdj9dBkX8mMyjl/9cztXMWtvpM8bNd/Q7WZpWjFk7C9BUSgM5gJW2M31oCxFtzpY fNGGSAingwgqLonqem2eWDa40RzGsTk04BC/wsG/8I7RMnPnh8Idgzpym/S6GmnDpbrs Czdg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=bKSo1NUI; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com Received: from relay.virtuozzo.com (relay.virtuozzo.com. [130.117.225.111]) by mx.google.com with ESMTPS id ffacd0b85a97d-48fed271a9asi6104810f8f.105.2026.11.04.13.35.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Nov 2026 13:35:14 -0800 (PST) Received-SPF: pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) client-ip=130.117.225.111; Authentication-Results: mx.google.com; dkim=pass header.i=@virtuozzo.com header.s=relay header.b=bKSo1NUI; spf=pass (google.com: domain of khorenko@virtuozzo.com designates 130.117.225.111 as permitted sender) smtp.mailfrom=khorenko@virtuozzo.com; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=virtuozzo.com DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=virtuozzo.com; s=relay; h=Message-Id:Date:From:Subject:Content-Type: MIME-Version; bh=9WTQlw6uCR0dcNKBxwh5qwpAf7xoMEpyQRjjHCFJ0aA=; b=bKSo1NUIfFmd rQtG5nkGlE6mTM4wRePqvDoiyw3tjGgJExuI/5GN/XJ+r0QsNBtYnUA4tY/+GRFgHpBXzRjLP2Esw 5MGmZw4qQZPDQIiBxgo7IRVpEufCRaxjVumxJNbfNu15AWlBraOOgPOB78+8WikMFddABGIeVQkaq ZJ+2LhOJaI5gGkcWDlOP9oHku3QDDPRtqKfF2C2jUqbs9WOyLnXVJjrzQDdrzE+tqCc15X3XGZMgP Dcfv5LpDJ2vjiXtwVPe2HDvpSTuDYJoCF241xd7IC11h8SLN8R8Xrxkoyk+H7cVldBMz6Ioxrw7Av rl2iUqA4ceduBqkeWwbvTw==; Received: from ch-demo-asa.virtuozzo.com ([130.117.225.8] helo=f0.sw.ru) by relay.virtuozzo.com with esmtp (Exim 4.96) (envelope-from ) id 1xOiZY-00248s-2N; Wed, 04 Nov 2026 22:35:12 +0100 MIME-Version: 1.0 From: Konstantin Khorenko To: Andrey Zhadchenko In-Reply-To: <20261029140346.465768-3-andrey.zhadchenko@virtuozzo.com> References: <20261029140346.465768-1-andrey.zhadchenko@virtuozzo.com> <20261029140346.465768-3-andrey.zhadchenko@virtuozzo.com> Date: Wed, 04 Nov 2026 22:35:09 +0100 Message-Id: <179382810903.2794215.10567595584481536659.b4-review@b4> X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1950; i=khorenko@virtuozzo.com; h=from:subject:message-id; bh=T0MoQj5x7S0E8FkYHe+yl8VVWggeOoYJUwK4N8l+BIM=; b=owEBbQKS/ZANAwAKAVGWCkf5YVwqAcsmYgBq66UP3TYtPHQpO2AI8bG3WsXf3ze9E4/+sKWs3 WYOGrCFujWJAjMEAAEKAB0WIQRWD23IPcXT0GO9CCxRlgpH+WFcKgUCauulDwAKCRBRlgpH+WFc KpBJEACkdqfDGZm4wnuHA5D7yJjD2XufJAeQgthv5KeN9/D0EZs3X7Hn7T9mX4XgtNCaMpPQiZE e34Eq2h019tVX48eulljMGPh3UyKw9Z9Ov8ZVq+nTwu19HC0BbZ0D0iqgZJl1fcDIVix7H31QbT ZfTqGRKVgtd6CkTgaeAsR//4MnJW1xyWiINEO4xq+BJu4qdPcqWoivryp+EB6mWu2ki5MD530dF qCeqzf6cXiGOAP/M6tPnZCijSRq4jaL5R/B3PB2vS484l1Erza2K3M4l/SvRLJVyzDk0IiORq2S lc09NObbbZUO4msg/eRO7sqf2tM5+j3jINYhoxpFL6/kpVm5aUb7V5eQZTUsEJtegKe/azQYdEM TzS0AdkdVnxVfz48zv5yC2Yl7TBs0aXbrSQll6arhrTEfuRzYnNHfOoNMVW0pNnO+FUT8GDhdD+ asE918GMYpIh2mP7RfxDnN60ycRl2zWayXwzOeZHckVDbC+nAoTlODDpVBaIRUwr+vA0aioBiv+ exwQGPmtIdpPL6gjDOQcc5QoJjKkSOpoTxCWASnz7tugTMyqHn0jLC35Wr5ogov1IABnUAKKTIV aeqeD5TUnqKnOz7TfV8sa1M1UQaRpNz02+lCFRAwxcpP/K1ytGtfV4FW1CId5T1XIT2CGxEzNfi Ps83lnp9sGhBiyg== X-Developer-Key: i=khorenko@virtuozzo.com; a=openpgp; fpr=560F6DC83DC5D3D063BD082C51960A47F9615C2A X-OZ-Fwd: true Cc: devel@openvz.org Subject: Re: [Devel] [PATCH hci-8.1 2/7] drivers/md/dm-qcow2: check MD_DIRTY and md->wbd under lock in perform_rw_mapped() X-BeenThere: devel@openvz.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: OpenVZ development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: devel-bounces@openvz.org Errors-To: devel-bounces@openvz.org I won't apply this version, please send v2 with the changes below. On Thu, 29 Oct 2026 17:03:41 +0300, Andrey Zhadchenko wrote: > - if (rw == WRITE && (md->status & MD_DIRTY) && > - test_bit(index_in_page, md->wbd->changed_indexes)) { > + if (rw == WRITE) { > spin_lock_irqsave(&qcow2->md_pages_lock, flags); > - md->wbd->nr_submitted++; > - qio->data = md->wbd; > + if ((md->status & MD_DIRTY) && > + test_bit(index_in_page, md->wbd->changed_indexes)) { > + md->wbd->nr_submitted++; > + qio->data = md->wbd; > + } > spin_unlock_irqrestore(&qcow2->md_pages_lock, flags); Item 1 of the cover letter reply: under this lock, when MD_WRITEBACK is set and the index is in changed_indexes, park the qio on md->wait_list, as parse_l2() does. Do not attach it to a wbd under writeback: after a failed writeback complete_wbd() frees the wbd. Why: the lock makes this check consistent, but parse_l2() decided under an earlier lock hold that the write need not wait. With the fast path of patch 5: main kwork fast worker allocates cluster X, L2 page DIRTY parse_l2(): write to X, page DIRTY, not delayed, unlock submit_metadata_writeback(): DIRTY -> WRITEBACK perform_rw_mapped(): no MD_DIRTY, qio->data = NULL, submit The write is acked as soon as its data is written. A FLUSH after it finds QLIST_COMPLETED_WB empty and does only vfs_fsync(), it does not wait for the L2 write in flight. A crash then loses a write that was acked and flushed. If the L2 write fails instead, the entry is reverted and X freed while the write already returned success. The base is safe only because parse, submit and the DIRTY -> WRITEBACK switch happen in one do_qcow2_work() pass. -- Konstantin Khorenko, Virtuozzo Linux Kernel Team _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel