From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <pve-devel-bounces@lists.proxmox.com> Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 7E2761FF185 for <inbox@lore.proxmox.com>; Mon, 9 Jun 2025 09:32:13 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E1F263751B; Mon, 9 Jun 2025 09:32:30 +0200 (CEST) To: pve-devel@lists.proxmox.com Date: Mon, 9 Jun 2025 10:32:10 +0300 In-Reply-To: <20250609073214.7880-1-denis.kanchev@storpool.com> References: <20250609073214.7880-1-denis.kanchev@storpool.com> MIME-Version: 1.0 Message-ID: <mailman.300.1749454349.395.pve-devel@lists.proxmox.com> List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com> List-Post: <mailto:pve-devel@lists.proxmox.com> From: Demayl via pve-devel <pve-devel@lists.proxmox.com> Precedence: list Cc: Demayl <denis.kanchev@storpool.com> X-Mailman-Version: 2.1.29 X-BeenThere: pve-devel@lists.proxmox.com List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe> List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe> List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/> Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help> Subject: [pve-devel] [PATCH atomic_snapshot 2/4] snapshot api: add type option when making snapshots Content-Type: multipart/mixed; boundary="===============2179557652822231916==" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com> --===============2179557652822231916== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: <denis.kanchev@storpool.com> X-Original-To: pve-devel@lists.proxmox.com Delivered-To: pve-devel@lists.proxmox.com Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 6ABE2CCD83 for <pve-devel@lists.proxmox.com>; Mon, 9 Jun 2025 09:32:27 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5168C3744B for <pve-devel@lists.proxmox.com>; Mon, 9 Jun 2025 09:32:27 +0200 (CEST) Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for <pve-devel@lists.proxmox.com>; Mon, 9 Jun 2025 09:32:26 +0200 (CEST) Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-450cb2ddd46so25020065e9.2 for <pve-devel@lists.proxmox.com>; Mon, 09 Jun 2025 00:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=storpool.com; s=google; t=1749454340; x=1750059140; darn=lists.proxmox.com; 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; bh=DHWxLE9ohA/CTc/k1IUgSYXLzTvJNmZtn7CpFQQeLd8=; b=IQPZND5I0o5YWE5pprJSCXLikG6Bggp7u7WTfQw1YNr40zVnczSUz24B/rjbxy2Fnm NznO9RJinRLiwrb01G5HrhgbrwMS1QiLwG+x0LtL4sx5xgfvdt7Ug65cCYZUYH0u1ewj bhtrgQcb2Q7Ru/YU9vkvGAOZh4LuRjE/mErh0wpPaa+TXi1bx8S9mfyt4OvyX5lqfYnr R0z7IhZQCW6UVNIJIxdrt+Kw1GoFzqQ8n7KDRiIwyoqvmjBfCcQWAgJZCcSuRnKFQDuh xjwmSvE9B3/P/Wrsh7ldCQEeuII1aymve8liD404ojT7E+cd9kkZNwZ/mpZ1jjxqIr10 YCzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749454340; x=1750059140; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=DHWxLE9ohA/CTc/k1IUgSYXLzTvJNmZtn7CpFQQeLd8=; b=j0obak/lIOz55cTVZOItipjrrAUQS41lwL3iIyUw32VgdPzVM9oJgxVuRg5teIjZqE /n8y7/2fyhQX5/yVwEqX3r4+F2U8jcqZ0QyFgCAeoBhvmIS+h0bGQy4aRvvBuLfoXyeL zQ0kZe1/6jiY7kyWvaE7XeVDr3CKj0vqjprfLNTw704hVdbw8DsKMf9wTelIKJvYtKh0 67u6YP85qpLL82Qcmx1WWpnDrLzWal9JxKveq8fQDQ1Oa+nMUkrk6hnAidGHF1C9Qh1q XDzyJAndmj/sXvsIGSxg7TVynsL0hx7Gj/4DKiOeqdvdLAYDTP+JdLeooj2YuPkJRZxz bIrg== X-Gm-Message-State: AOJu0YyPc3ui2ju26rk5yxyHVUoayH7H/kY6OThMFFwU0zPyumF30EFq KiMGjnIKK8iT8M5/lS0+EpxyQdSqtCzKNR623JqlT/tE/cjnla6aFuP27DNQpzG+2MgXT/nhdWA OJljJMRI= X-Gm-Gg: ASbGncvtUm5xkizgBQW1yK0ffJvWq1ks/6z/fwpSbj+tcXfnHG6+aDDCL67w7S+Cj5Q jqQ3bpx21/ql5SZxHjpvUhtgDoKFkej9b8prFYnAcwbBfGrsTC5QM9IjGU//bn5zaD2plsJQ7kH VarGB7/JjnkJzd+ll5LZe9SVLbjQFRgjishK54a+P8qf3q+NwCkN8oWCG/H7kfdOMnUhHHG3a4C oEcxeTFMrqxREJxhIEdqAQCkUlGFFV8jh5QDVf/ngdETVg4OA6Goxe3QSYWTLNCLq2N2BQZzqfo 2zjHvjKB5HOjkeVzx1/1Ryn9nMJV4LHXDKT/Eyb75wTbF8O5azQYXPhlfqR5zKKpiXIsPEwvGu2 t7GLs3Ewz+XswohIejDcl X-Google-Smtp-Source: AGHT+IHY4V+AOt5/pmB1/WtQMEYJq0FUC3f/O4kWyW9O2CDR9NIEN/m6Vr3Bunv31a7ALoGBkwpRAA== X-Received: by 2002:a05:600c:1e8c:b0:450:d386:1afb with SMTP id 5b1f17b1804b1-45201350cc7mr117704915e9.9.1749454340359; Mon, 09 Jun 2025 00:32:20 -0700 (PDT) Received: from dennis.. (79-100-232-190.ip.btc-net.bg. [79.100.232.190]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4521370961csm102916165e9.22.2025.06.09.00.32.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Jun 2025 00:32:19 -0700 (PDT) From: Demayl <denis.kanchev@storpool.com> To: pve-devel@lists.proxmox.com Subject: [PATCH atomic_snapshot 2/4] snapshot api: add type option when making snapshots Date: Mon, 9 Jun 2025 10:32:10 +0300 Message-ID: <20250609073214.7880-3-denis.kanchev@storpool.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250609073214.7880-1-denis.kanchev@storpool.com> References: <20250609073214.7880-1-denis.kanchev@storpool.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.000 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% 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 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 Allows picking between atomic and sequential snapshots Default sequential Signed-off-by: Demayl <denis.kanchev@storpool.com> --- PVE/API2/Qemu.pm | 7 ++++++- PVE/QemuConfig.pm | 13 +++++++++++++ PVE/QemuServer.pm | 10 ++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/PVE/API2/Qemu.pm b/PVE/API2/Qemu.pm index 626cce45..27d86438 100644 --- a/PVE/API2/Qemu.pm +++ b/PVE/API2/Qemu.pm @@ -5488,6 +5488,11 @@ __PACKAGE__->register_method({ type => 'string', description => "A textual description or comment.", }, + type => { + optional => 1, + type => 'string', + description => "Sequential or atomic snapshot of VM volumes (if supported by storage)", + }, }, }, returns => { @@ -5519,7 +5524,7 @@ __PACKAGE__->register_method({ my $realcmd = sub { PVE::Cluster::log_msg('info', $authuser, "snapshot VM $vmid: $snapname"); PVE::QemuConfig->snapshot_create($vmid, $snapname, $param->{vmstate}, - $param->{description}); + $param->{description}, $param->{type}); }; return $rpcenv->fork_worker('qmsnapshot', $vmid, $authuser, $realcmd); diff --git a/PVE/QemuConfig.pm b/PVE/QemuConfig.pm index 2609542c..7f6399c7 100644 --- a/PVE/QemuConfig.pm +++ b/PVE/QemuConfig.pm @@ -367,6 +367,19 @@ sub __snapshot_create_vol_snapshots_hook { } } +sub get_atomic_snapshot_volumes { + my ($class, $conf) = @_; + + my $volumes = $class->SUPER::get_atomic_snapshot_volumes($conf); + my $filtered = {}; + for my $vol_name (keys %{$volumes}) { + if (! PVE::QemuServer::drive_is_cdrom($volumes->{$vol_name})) { + $filtered->{$vol_name} = $volumes->{$vol_name}; + } + } + return $filtered; +} + sub __snapshot_create_vol_snapshot { my ($class, $vmid, $ds, $drive, $snapname) = @_; diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 577959a4..5c14ce49 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -2809,6 +2809,10 @@ our $vmstatus_return_properties = { type => 'boolean', optional => 1, }, + snapshots => { + description => "Snapshot info.", + type => 'object', + }, }; my $last_proc_pid_stat; @@ -2881,6 +2885,12 @@ sub vmstatus { $d->{tags} = $conf->{tags} if defined($conf->{tags}); $res->{$vmid} = $d; + + my ($can_atomic, $pref_atomic, undef) = PVE::QemuConfig->check_atomic_snapshots($conf); + $res->{$vmid}->{snapshots} = { + atomic_possible => $can_atomic, + atomic_preferred => $pref_atomic, + }; } my $netdev = PVE::ProcFSTools::read_proc_net_dev(); -- 2.43.0 --===============2179557652822231916== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel --===============2179557652822231916==--