From: Fiona Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH storage 01/11] plugin: document volume_snapshot_info() method
Date: Tue, 16 Dec 2025 14:02:12 +0100 [thread overview]
Message-ID: <20251216130230.104772-2-f.ebner@proxmox.com> (raw)
In-Reply-To: <20251216130230.104772-1-f.ebner@proxmox.com>
The method was originally only used for ZFS replication and then it
got re-used for snapshot-as-volume-chain which returns quite different
information. Document this and the possible values in each case.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
src/PVE/Storage/Plugin.pm | 51 ++++++++++++++++++++++++++++++++++++---
1 file changed, 47 insertions(+), 4 deletions(-)
diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm
index 6f2e434..5122495 100644
--- a/src/PVE/Storage/Plugin.pm
+++ b/src/PVE/Storage/Plugin.pm
@@ -1812,10 +1812,53 @@ sub status {
return ($res->{total}, $res->{avail}, $res->{used}, 1);
}
-# Returns a hash with the snapshot names as keys and the following data:
-# id - Unique id to distinguish different snapshots even if the have the same name.
-# timestamp - Creation time of the snapshot (seconds since epoch).
-# Returns an empty hash if the volume does not exist.
+=head3 volume_snapshot_info
+
+ my $snapshots = $plugin->volume_snapshot_info($scfg, $storeid, $volname);
+ my $childsnap = $snapshots->{$snap}->{child};
+ my $childpath = $snapshots->{$childsnap}->{file};
+
+Query information about snapshots for C<$volname>. The result is a hash reference with snapshot
+names as keys and additional information as values. Different information is required for supporting
+the C<snapshot-as-volume-chain> storage configuration option and for supporting replication (note
+that replication is currently limited to native ZFS plugins).
+
+For C<snapshot-as-volume-chain> support, an entry with key C<current> exists for the current state.
+Required values are:
+
+=over
+
+=item C<file>: The image filename of the external snapshot volume.
+
+=item C<volname>: The volume name of the external snapshot volume.
+
+=item C<volid>: The volume ID of the external snapshot volume.
+
+=item C<child>: The name of the child snapshot in the volume chain. Not set if there is no child.
+
+=item C<parent>: The name of the parent snapshot in the volume chain. Not set if there is no parent.
+
+=item C<order>: Number that determines the position in the backing chain. C<0> for the current
+image, one more for each step further back in the volume chain.
+
+=item C<ext>: May be set if the snapshot is external when internal snapshots are also supported by
+the storage.
+
+=back
+
+For replication support, returns an empty hash if the volume does not exist. Required values are:
+
+=over
+
+=item C<id>: Unique identifier of the snapshot. Must be the same for the replicated instance. Must
+be different for different snapshots even if they share the same name.
+
+=item C<timestamp>: Creation time of the snapshot (seconds since epoch).
+
+=back
+
+=cut
+
sub volume_snapshot_info {
my ($class, $scfg, $storeid, $volname) = @_;
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2025-12-16 13:02 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-16 13:02 [pve-devel] [PATCH-SERIES storage/qemu-server 00/11] fix #7094: external snapshot delete: ensure commit target is large enough Fiona Ebner
2025-12-16 13:02 ` Fiona Ebner [this message]
2025-12-16 13:02 ` [pve-devel] [PATCH storage 02/11] plugin: volume snapshot info: also return virtual size Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 03/11] plugin: document volume_resize() method Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 04/11] plugin/storage: volume resize: add snapname parameter Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 05/11] lvm plugin: snapshot delete: clarify comment about using commit Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 06/11] bump API age and version Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 07/11] partially fix #7094: lvm: snapshot delete: ensure commit target is large enough Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 08/11] plugin: volume snapshot info: don't set 'order' for internal snapshots Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 09/11] plugin: volume snapshot info: correctly return internal snapshot information Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH storage 10/11] plugin: volume snapshot info: do not set 'ext' property Fiona Ebner
2025-12-16 13:02 ` [pve-devel] [PATCH qemu-server 11/11] partially fix #7094: external snapshot delete: ensure commit target is large enough Fiona Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251216130230.104772-2-f.ebner@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.