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 41FEF811BB for ; Thu, 5 Nov 2026 14:59:24 +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 6A5Ew8wV005857; Thu, 5 Nov 2026 17:58:09 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A5Ew8wV005857 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=default; t=1793890691; bh=Vpy6UWiuTppNM+STyakAvvcp2w3Sdin2YL3WCINblfM=; h=From:To:Date:In-Reply-To:References:Cc:Subject:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe; b=E8RLJ75MUDQej/8IKiRYZ51WOlyXvWS4N0tOVeFxFe7GgnonDlMH/uUQMgnVfvk76 cfNnBvvdeMuEXATgo0zGQeefWz9pI7NKrAySnJQhsgu8TUxlcMyXT4xeP+epQaSQRw frEvx1myZBuYp2UO12Ui14GsWYGNc7UFda5kkw5hu3RP+aVX/KBrfVejCNklysPl0X W9ICRP6ufaswZjAMl1RHZhMrKxTntHdZgZZUPN9WBNL8Zm8dHUMKptUSkOwyzuw9K0 Eq4mJaR3qq4JPoTyKDIG8GggzMq1eVtXAFo6VAlyd6PwltZbZ6Yr8KyzuNeB0qFTg0 uTuYHYNsyBzRA== Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by mail.openvz.org (8.14.4/8.14.4) with ESMTP id 6A5EvtPK005827 (version=TLSv1/SSLv3 cipher=AES128-GCM-SHA256 bits=128 verify=FAIL) for ; Thu, 5 Nov 2026 17:57:55 +0300 DKIM-Filter: OpenDKIM Filter v2.11.0 mail.openvz.org 6A5EvtPK005827 Authentication-Results: mail.openvz.org; dkim=pass (2048-bit key) header.d=openvz.org header.i=@openvz.org header.b="As6FsS5E" Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-4915ba023d4so629783f8f.0 for ; Thu, 05 Nov 2026 06:57:55 -0800 (PST) X-Gm-Message-State: APuU4Z9qgCu1KdN2qlL2HyVeMawTa7B8z+m8cOyRHdexmZCZHhx0HgbE D8u70fHW2dBgyxJhxcUZXw6uHHQi6HqSs8TJYKPmAvkx2UvP/GqG1szUAiHaDVYR+At4yr2/NnB wQs2U2yFkV0x+pchIyRFLA/TJzAVOn+dtcKJcbJbowmz/iuHpUaqA0A== X-Gm-Gg: AYBFou3QwQIZqFyWNgExUznq45OE9Fqzt1OF+sFoKBZ+/+lr+5eHstP7jcX4213+FFF GkLO83t3BudH5VPIZPXBfk/Hv1a/VFfHfp0I7k0wqXt70hedrArZ/iJxi6h5I84P22epzJgE/IG +FmWf2MyRcMkLQkTl8eOuQj7s3esQsOpXwJPtndn25jJO5WlPzyhv9VaCu33Xb6C+Gkz0oosRbB K3xr49cgsNSTd2ZPoddygLB//CN4HptQp22p+OKUmHZRxLLuPxG9DmZNZ1gKsxUs+mqbc3Ygz1B +r5U63vNXQ== X-Received: by 2002:a05:6000:2583:b0:48e:c0:9441 with SMTP id ffacd0b85a97d-48e6e2f67e7mr36887146f8f.29.1793890674751; Thu, 05 Nov 2026 06:57:54 -0800 (PST) X-Received: by 2002:a05:6000:2583:b0:48e:c0:9441 with SMTP id ffacd0b85a97d-48e6e2f67e7mr36887118f8f.29.1793890674354; Thu, 05 Nov 2026 06:57:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1793890674; cv=none; d=google.com; s=arc-20260327; b=N/mE4cI0HA7qyF7Gm1/XbcBm6m4Ar1E/4UhHPVri37zYo60RTA+3f2jZvWVqxvipWM 1JdpSZ52YOv2fRu3ezyyJwbVe2ErVxfyh5JeBuX/eGuYVvA4hen2sKESIL3G5TOx1SlU QRacpa8Nwg2jjv4YsWWbE80kZd1DEaUa5Vb7B3+ZNCjRUOdjeE/jyz5EF6gxEORhKQ/6 ko4I7YbCXI6KJA6Qa4kroY7Co5Ll4nf9fb64zy3uEjtHWzEemhcL4zsSAfh9x4SXZ9Lr Lat24pydDRBRmiWjx7Gaqe80DIClSdrIXWGrdcXT/G4O5cxLXuQc8cn/6Ssi3cgWNont AS1w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=PCCR1tGLSeJVOi2UGHhgnHuNkUoD8+Wbx93MUC7yeAE=; fh=ozrYJQ1t3QIP6s65KBq5xgJxiFM2qf+5wwn3ABTusyU=; b=pK+93/F3hMUjfYuYk21IAF3o7WD1NmwQIOttJuS8SRFFoZHzkVWss71qEwwFajx8De 1skbU+dH2Qk1SyIvFQbSfmA0+eUM6YRIpXS8DNgzog9SQJpvY7no2GwtHzsBjem1ov0C GmpZoNF9Iv+NbiqSNuaGxATJslhcv56C5CIq9aVoYiPRvD+OM5LY1p93U6hnAfwIaDRS ixK1qfXKdQPMSsFIZjqgcGeKY2Si8rDwnj4c9SZM0wPrYIoT9z+vYzXJ2FQS1kBSmgOw RE/XToEtxpkeA3P6RkuwM51LFNqkCs1bFcR8nlZBJsQDbBFFFO9OGXgyB7TCPi0s3pR+ NQrw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@openvz.org header.s=google header.b=As6FsS5E; spf=softfail (google.com: domain of transitioning den@openvz.org does not designate 2a06:5b06:b600:300:3848:9c8a:8cf7:6236 as permitted sender) smtp.mailfrom=den@openvz.org; dara=neutral header.i=@openvz.org Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id ffacd0b85a97d-48fec129f2asor899749f8f.6.2026.11.05.06.57.54 for (Google Transport Security); Thu, 05 Nov 2026 06:57:54 -0800 (PST) Received-SPF: softfail (google.com: domain of transitioning den@openvz.org does not designate 2a06:5b06:b600:300:3848:9c8a:8cf7:6236 as permitted sender) client-ip=2a06:5b06:b600:300:3848:9c8a:8cf7:6236; Authentication-Results: mx.google.com; dkim=pass header.i=@openvz.org header.s=google header.b=As6FsS5E; spf=softfail (google.com: domain of transitioning den@openvz.org does not designate 2a06:5b06:b600:300:3848:9c8a:8cf7:6236 as permitted sender) smtp.mailfrom=den@openvz.org; dara=neutral header.i=@openvz.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1793890674; x=1794495474; darn=openvz.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=PCCR1tGLSeJVOi2UGHhgnHuNkUoD8+Wbx93MUC7yeAE=; b=As6FsS5EYfoKBUcabrcfnys7Zd1I2eFuj34ZyoZaBU1xtjIeYSrTQPw5sPhFuomZP6 j2nH7dPoHlm21Z5Q7o0Rf2Ik6rjy4hBWpLpef4dFm25WREWMtv+Mzfr6Fa9qAgRA2P+N BiBD/VKffC0q8jxGY31b/Deb2bfVsHfaIaLDItez9u51V1BYUxBfE4WE80QrVacM8nzY hvKPL/zg0ViEXB6w8GYfhK1F/do0U5/RfDh4wPk7DMjTLDYx9CjVW/FLdoR01RMORKVa 2pwdxxi4QMREq/qw23TrRqjXhFpRSfSLxOnQhmo/XisiXauq+BNU74J/HcUBpSOH2T2w rRaw== X-Received: by 2002:a05:6000:4311:b0:48c:4f94:222f with SMTP id ffacd0b85a97d-48e6e2eb446mr39681697f8f.17.1793890673845; Thu, 05 Nov 2026 06:57:53 -0800 (PST) Received: from athena.sw.ru ([2a06:5b06:b600:300:3848:9c8a:8cf7:6236]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48fed92a753sm11719747f8f.45.2026.11.05.06.57.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Nov 2026 06:57:53 -0800 (PST) From: "Denis V. Lunev" To: khorenko@virtuozzo.com Date: Thu, 5 Nov 2026 15:57:48 +0100 Message-ID: <20261105145749.2643035-3-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20261105145749.2643035-1-den@openvz.org> References: <20261105145749.2643035-1-den@openvz.org> MIME-Version: 1.0 X-OZ-Fwd: true Cc: devel@openvz.org Subject: [Devel] [PATCH hci-8.1 v2 2/3] dm-ploop: refuse flip_upper_deltas onto a lower delta smaller than the device 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 From: Denis V. Lunev A flip_upper_deltas after a grow of the device, with the lower delta left at its old size, makes a top delta whose header and BAT cover fewer entries than the device. After resume the BAT writeback puts the grown header into page 0 of that file and the BAT pages past its old size onto its data clusters, and the image no longer opens. Today ploop_check_delta_before_flip() oopses on such a flip before it gets that far, as its walk runs past the end of the BAT of the lower delta. Fixing the walk alone would let the flip through. Read the header of the lower delta on every flip, not only under PLOOP_DEBUG, and refuse with -EBADSLT when it has fewer BAT entries than the device, as ploop_add_delta() refuses a lower delta bigger than the upper one. Compare entries, not BAT pages: fewer entries in the same number of pages still gives a stack that ploop_add_delta() refuses on the next load. The reverse merge of the ploop library grows the lower delta to the size of the device before it flips, so it never gets the refusal. Fixes: 6ddad5a4d226 ("dm-ploop: Add ploop target driver") https://virtuozzo.atlassian.net/browse/VSTOR-153445 Feature: dm-ploop: ploop target driver Signed-off-by: Denis V. Lunev --- drivers/md/dm-ploop-cmd.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c index d6abbdc3c7e3..5549ba448594 100644 --- a/drivers/md/dm-ploop-cmd.c +++ b/drivers/md/dm-ploop-cmd.c @@ -1118,20 +1118,27 @@ static int ploop_set_noresume(struct ploop *ploop, char *mode) static int ploop_check_delta_before_flip(struct ploop *ploop, struct file *file) { - int ret = 0; -#ifdef PLOOP_DEBUG - u32 i, end, *d_bat_entries, clu, nr_be; struct rb_root md_root = RB_ROOT; + u32 nr_be; + int ret; +#ifdef PLOOP_DEBUG + u32 i, end, *d_bat_entries, clu; struct md_page *md, *d_md; struct rb_node *node; bool stop = false; +#endif ret = ploop_read_delta_metadata(ploop, file, &md_root, &nr_be); if (ret) { PL_ERR("Error reading metadata"); - goto out; + return ret; } + ret = -EBADSLT; + if (nr_be < ploop->nr_bat_entries) + goto free; + ret = 0; +#ifdef PLOOP_DEBUG /* Points to hdr since md_page[0] also contains hdr. */ d_md = ploop_md_first_entry(&md_root); @@ -1164,10 +1171,9 @@ static int ploop_check_delta_before_flip(struct ploop *ploop, struct file *file) break; d_md = ploop_md_next_entry(d_md); } - - ploop_free_md_pages_tree(&md_root); -out: #endif +free: + ploop_free_md_pages_tree(&md_root); return ret; } -- 2.53.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel