From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 9BA561FF144 for ; Sun, 19 Jul 2026 16:18:36 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id BEE952144F; Sun, 19 Jul 2026 16:18:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784470679; x=1785075479; darn=lists.proxmox.com; h=references:in-reply-to:subject:to:from:date:message-id:from:to:cc :subject:date:message-id:reply-to:content-type; bh=z4ykl9MNNj2clrENHEh9VecOU/6B5ojuY+kDkXkGVdk=; b=ghnDR2Vmw0QjhqZCtnQpCcS44CBs3rGRdXbqhMjy2/DYRdThpbDrXTNgmymJB33Jhy UnBoKUWvSqTm45sZaJQtfw5ydUjO4dPPgxu1JV48QxDCjxASXWZxTCqmM/utB8eLKn4n +3jII2p5tbcO3g2gIOkKoB527ze0nO1o6s1jxmLCzFVAQ0RM/HtQjDnzsWpSf8T0P1XM yXJA2R7BMTQGa9yu9qx4Qoso9RorBUgoMEJPyVqqRupYkq0D7zoT6MoHqVX4A7U39rr1 y5zRFThpL22KLrmWsM7Z8CcfpuWk5up6rj+F6RiJQ8BboQViP5lqgBtORagQowUCLQaH ZZHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784470679; x=1785075479; h=references:in-reply-to:subject:to:from:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=z4ykl9MNNj2clrENHEh9VecOU/6B5ojuY+kDkXkGVdk=; b=K/zp732yjExInjKisTn3l33WPlUCp9BYrgk6BwVVioN3vgyLw+6AFVUkSsOUHXURbw IYeszdr9xWVdax2jo4ebayYDFITxoBlI6Rk5h6Oftnz+r3T7zsIai+fSD1+5MtDxD44Z wn9aKAmfCSE13LaOLOzRq1/HLUUU7ns++ueuFqJfV5mCYJv4bcmsr1DbAIYxOtzklIf+ vDkwAvxJSrdp4m3x+g8Cp4Tva9EHGOnT8jEo2HMix4AzZuF4laSrdvbEIWMMlbzgSFwN +rrq5wXNlmknI3Zm5AX6dptrmWA1OrehY3lkLhZOmjI41reS/dP92MrS01O1B6RNRn7b kXAw== X-Gm-Message-State: AOJu0YxV/bRHBLbeLh9OvblBaefovKlHRziByt/FjMmUrvMTnHwEl2mQ aSKOIDj/6txtlXRUSNgcCRvL+WTqHDPBl8P2j2yyKpL32Ry/Vpk4r3SvrF2M2GfmA5E= X-Gm-Gg: AfdE7ck6hSmCphAJnYPrreS5OcY763zwYAmU+yZ6OQhv82gfYafLA5i6DYUbbuF1NzT S1dNvJRygsJSePTtE7v4BRXOJ/ykFhcNxydCDcRSgehVMQylBjUFGuXhrdTD+IBFtHWSCemt3J2 ipFSnQ8w+z4EtRrxfv9enOvn19nGCUT+wkLEn6qKgVTyVBs/BVY+HgWSSr5anUbWZjWxpEOgD+P kVpkCrxAuANGlaP7ddVzfG9H1J5ZylD3yCoObRDhmJWNleHSLS6fgMtk5Z/xLGlgOHxB/IK4unh HSAKoiP0oWWYgrA2ISFyrw6YHiRpCUzUsNtCo9dBq6OWJlcks455I9xg7tXtrUhxqjwgyBx7a5A L1OjAsvL9+tKCKuSfLUu+5HfaRL2B3L/EhpkYtwUHfvQI3WZdvPafF86MrXCSYkM2c3rkIAwA X-Received: by 2002:a17:90b:2883:b0:37f:fb1d:63fa with SMTP id 98e67ed59e1d1-38e4b431219mr12404469a91.15.1784470678511; Sun, 19 Jul 2026 07:17:58 -0700 (PDT) Message-ID: <6a5cdc96.13be6df8.22eac4.57d6@mx.google.com> Date: Sun, 19 Jul 2026 07:17:58 -0700 (PDT) From: Ciro Iriarte To: pve-devel@lists.proxmox.com Subject: Re: [RFC storage, qemu-server] optional multi-volume / consistency-group snapshot hook In-Reply-To: <6a5cd5ca.8e75e0cb.f69c7.89e4@mx.google.com> References: <6a5cd5ca.8e75e0cb.f69c7.89e4@mx.google.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.100 Adjusted score from AWL reputation of From: address DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy FREEMAIL_FROM 0.001 Sender email is commonly abused enduser mail provider RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: SZ2MDZJVTMPWAPGBZXHKEDH5LWUILXJV X-Message-ID-Hash: SZ2MDZJVTMPWAPGBZXHKEDH5LWUILXJV X-MailFrom: cyruspy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: I under-sold this in the mail this morning. I said the `cg` tag maps onto the two backends I can test, Ceph and a VSP array. ZFS is a third. I had assumed ZFS atomicity meant `zfs snapshot -r` over a subtree, which would only give you a group if the volumes happened to share a parent. That is wrong. `zfs snapshot` takes a list, and they land in one transaction group wherever the datasets sit: # zfs snapshot rpool/cgA@cg1 rpool/cgB@cg1 # zfs get -Hp -o value createtxg rpool/cgA@cg1 rpool/cgB@cg1 7830984 7830984 Same createtxg, so the same instant, for an arbitrary set rather than a subtree. Checked it end to end on zvols, since that is what a VM disk is on zfspool. Two 64M zvols with distinct random content, snapshotted in one command, both then overwritten, then cloned from the snapshots: pre-snapshot A=1f5d99cb... B=ca4d6039... post-write A=b9165b06... B=98949c0d... clone of @cg1 A=1f5d99cb... B=ca4d6039... Both clones came back with the pre-snapshot content. So the group snapshot caught both volumes before the writes, and cloning from its members works -- the same grouping serves snapshots and clones. That answers the scope question I asked in the first mail. This is not a two-backend feature for Ceph and vendor arrays: zfspool can do it with a command it already runs, and zfspool is far more common in the field than either. So the tag would be doing real work for in-tree storage, not just for out-of-tree plugins like mine. The ones that cannot, so nobody has to check: LVM thick and thin have no multi-LV atomic snapshot primitive in dm, so `lvcreate -s` per LV gives different instants unless the caller freezes around them. btrfs snapshots are per-subvolume and PVE uses one subvolume per disk, so no arbitrary grouping there either. Thanks, Ciro