Hi Daniel,
thanks for working on this !
>>I chose the name "colocation" in favor of affinity/anti-affinity,
>>since
>>it is a bit more concise that it is about co-locating services
>>between
>>each other in contrast to locating services on nodes, but no hard
>>feelings to change it (same for an
Am 31.03.25 um 16:38 schrieb Stefan Hanreich:
> Yes, the second approach sounds sensible imo, the OpenFabric / OSPF
> types are quite specific...
>
> Christoph also expressed interested in the network-types (for the
> installer) so moving the general ones to a crate in proxmox is fine by
> me and
The new_backup_provider() method can be used by storage plugins for
external backup providers. If the method returns a provider, Proxmox
VE will use callbacks to that provider for backups and restore instead
of using its usual backup/restore mechanisms.
The backup provider API is split into two pa
On March 26, 2025 3:20 pm, Max Carrara wrote:
> Add docstrings for the following methods:
> - check_connection
> - activate_storage
> - deactivate_storage
> - status
> - cluster_lock_storage
> - parse_volname
> - get_subdir
> - filesystem_path
> - path
> - find_free_diskname
>
> Signed-off-by: Max
Having the state file be in the iohandler context means that a
blk_drain_all() call in the main thread or vCPU thread that happens
while the snapshot is running will result in a deadlock.
For example, the main thread might be stuck in:
> 0 0x7300ac9552d6 in __ppoll (fds=0x64bd5a411a50, nfds=
This is not expected to ever fail and there might be assumptions about
having the expected context down the line.
Signed-off-by: Fiona Ebner
---
migration/savevm-async.c | 7 ---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/migration/savevm-async.c b/migration/savevm-async.c
The backup-access api keeps track of what bitmap names got used for
which devices and thus knows when a bitmap went missing. Propagate
this information to the QMP user with a new 'missing-recreated'
variant for the taken bitmap action.
Signed-off-by: Fiona Ebner
---
pve-backup.c | 6
bump, still applies
___
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
This is what the variable actually expresses. Otherwise, setting it
to false after starting the VM doesn't make sense.
Signed-off-by: Fiona Ebner
---
migration/savevm-async.c | 16
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/migration/savevm-async.c b/migration
On March 26, 2025 3:20 pm, Max Carrara wrote:
> Add documentation for the following methods:
> - list_images
> - create_base
> - clone_image
> - alloc_image
> - free_image
>
> Signed-off-by: Max Carrara
> Co-authored-by: Maximiliano Sandoval
> ---
> src/PVE/Storage/PluginBase.pm | 111 +
On March 26, 2025 3:20 pm, Max Carrara wrote:
> Add PVE::Storage::PluginBase, which defines stubs for all methods that
> storage plugins should implement in order to conform to our plugin
> API. This makes it much easier for (third-party) developers to see
> which methods should be implemented.
>
On March 26, 2025 3:20 pm, Max Carrara wrote:
> Add a short paragraph in DESCRIPTION serving as an introduction as
> well as the GENERAL PARAMETERS and CACHING EXPENSIVE OPERATIONS
> sections.
>
> These sections are added in order to avoid repeatedly describing the
> same parameters as well as to
On March 26, 2025 3:20 pm, Max Carrara wrote:
> This commit adds docstrings for the relevant PVE::SectionConfig
> methods in the context of the storage plugin API.
>
> Signed-off-by: Max Carrara
> ---
> src/PVE/Storage/PluginBase.pm | 194 +-
> 1 file changed, 192
Am 31.03.25 um 16:55 schrieb Fiona Ebner:
> Most importantly, start using a dedicated IO thread for the state
> file when doing a live snapshot.
>
> Having the state file be in the iohandler context means that a
> blk_drain_all() call in the main thread or vCPU thread that happens
> while the snap
On 31.03.2025 15:48, Christoph Heiss wrote:
On Fri Mar 28, 2025 at 6:13 PM CET, Gabriel Goller wrote:
This is the main openfabric configuration. It is used to parse from the
section-config file (`/etc/pve/sdn/fabrics/openfabric.cfg`) and is also
returned from the api.
Signed-off-by: Gabriel Gol
One of the callers of wait_for_close_co() already sets the state to
SAVE_STATE_DONE before, but that is not fully correct, because at that
moment, the operation is not fully done. In particular, if closing the
target later fails, the state would even be set to SAVE_STATE_ERROR
afterwards. DONE -> E
The 'restart' label is a complete misnomer since the last commit and
the single operation of setting the error in the snapshot state can be
inlined everywhere. Also adds it in two branches it was missing.
Lastly, improve the code style for checking whether migrate_init()
failed by explicitly compa
Determine if VM needs to be started after finishing right before
actually stopping the VM instead of at the beginning.
In qmp_savevm_start(), the only path stopping the VM returns right
aftwards, so there is no need for the vm_start() handling after
errors. The next commit will inline the remainin
On 3/31/25 15:51, Christoph Heiss wrote:
> The (new) dependency on librust-similar-asserts-dev is missing in
> debian/control, just noticed while trying to build the package :^)
>
> Didn't review further (yet).
Interesting, I just rechecked my sbuild log and seems like it worked
there because
Am 31.03.25 um 15:19 schrieb Fiona Ebner:
> Signed-off-by: Fiona Ebner
> ---
> src/PVE/Syscall.pm | 1 +
> 1 file changed, 1 insertion(+)
>
>
applied this one already, thanks!
___
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.prox
Am 31.03.25 um 11:15 schrieb Christoph Heiss:
> Fixes a build failure.
>
> Fixes: 52f670250 ("api subscription: output generic apt-auth stanza for ceph")
> Signed-off-by: Christoph Heiss
> ---
> PVE/API2/Subscription.pm | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
>
applied, thank
Signed-off-by: Maximiliano Sandoval
---
Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Cargo.toml b/Cargo.toml
index dc7f312..2d3f50d 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -9,7 +9,7 @@ resolver = "2"
[workspace.package]
authors = ["Proxmox Support Team "]
Suggested-by: Wolfgang Bumiller
Signed-off-by: Fiona Ebner
---
New in v6.
pve-backup.c | 28 ++--
1 file changed, 18 insertions(+), 10 deletions(-)
diff --git a/pve-backup.c b/pve-backup.c
index 2408f182bc..915649b5f9 100644
--- a/pve-backup.c
+++ b/pve-backup.c
@@ -81
Expand input panel with AMD SEV-SNP selection, and relevant optional
parameters similar to existing options for AMD SEV(-ES).
Further, upon selecting AMD SEV-SNP, issue a warning that EFI disks are
not included when using SEV-SNP.
Signed-off-by: Philipp Giersfeld
---
changes since v4:
https:/
Am 28.03.25 um 18:12 schrieb Gabriel Goller:
> This is a common crate that is gonna be reused between
> proxmox-ve-config, proxmox-frr and proxmox-perl-rs. It holds different
> networking primitives, such as Ipv4/Ipv6-Cidr, NET and e.g.
> HelloInterval (openfabric attribute) types. The decision for
Tested with (.img.raw/.raw), .qcow2, .vmdk and different combinations of
target storages/formats.
Everything worked fine except for one thing:
The upload dialog allows the user to manually change the file name. When
changing the file extension to ".img". Clicking "Upload" is allowed but
after the
Quite a few user-visible strings in the dialog currently are not using
gettext(), thus not making them translatable.
While at it, also remove some contractions from error/warning messages.
Not strictly necessary per our style guide, but it avoids escaping
single quotes and reads quite a bit nicer
This patch is for enabling AMD SEV-SNP support.
Where applicable, it extends support for existing SEV(-ES) variables
to SEV-SNP. This means that it retains no-debug and kernel-hashes
options, but the no-key-sharing option is removed.
The default policy value is identical to QEMU’s, and the theref
Convert policy calculation to use shift operators and OR operation
instead of binary numbers and addition.
Signed-off-by: Philipp Giersfeld
Reviewed-by: Fiona Ebner
---
no changes since last version
PVE/QemuServer/CPUConfig.pm | 10 +-
1 file changed, 5 insertions(+), 5 deletions(-)
AMD SEV-SNP boots with a single volatile firmware image OVMF.fd via the
-bios option.
This requires building the `OvmfPkg/OvmfPkgX64.dsc` target.
Also, SEV-ES and SEV-SNP do not support SMM [1,2].
Therefore, introduce a new target build-ovmf-cvm that builds OVMF
firmware suitable for AMD SEV.
[1
This patch series adds support for AMD SEV-SNP.
Where possible it mimics the existing support for AMD SEV(-ES).
Running SEV-SNP VMs requires a specific OVMF firmware image. Contrary to
other setups, SEV-SNP does not support loading the firmware via pflash.
Instead, the firmware image is loaded v
There is no top-level 'Changelog' file in the QEMU submodule
repository anymore since QEMU v5.2, to be precise commit e83029fa60
("CHANGELOG: remove disused file").
Signed-off-by: Fiona Ebner
---
debian/rules | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/debian/rules b/de
Suggested-by: Wolfgang Bumiller
Signed-off-by: Fiona Ebner
---
New in v6.
pve-backup.c | 62
1 file changed, 38 insertions(+), 24 deletions(-)
diff --git a/pve-backup.c b/pve-backup.c
index 915649b5f9..88a981f81c 100644
--- a/pve-backup.c
+
the following patchset updates ZFS to version 2.3.1, and synchronizes our
packaging with upstream debian[0], where it makes sense.
Apart from the usual patch-refreshing and updating of the submodule the
patches include:
* one ZFS-upstream fix from 2.3.2-staging[1] - fixing userspace<->kernel
bre
On Fri Mar 28, 2025 at 6:13 PM CET, Gabriel Goller wrote:
> This is the main openfabric configuration. It is used to parse from the
> section-config file (`/etc/pve/sdn/fabrics/openfabric.cfg`) and is also
> returned from the api.
>
> Signed-off-by: Gabriel Goller
> ---
> proxmox-ve-config/Cargo.
without this patch many common operations break when running with
a kernel module < 2.3.1.
Noticed while testing replication with our current 2.2.7 module and
userspace from 2.3.1
Signed-off-by: Stoiko Ivanov
---
...ount-matches-and-injections-for-each.patch | 500 ++
debian/patc
follows debian-upstream commit
e83f1857d5dbf4efd0c3f1351644c8ce88bc2654
Signed-off-by: Stoiko Ivanov
---
debian/control | 9 +
1 file changed, 9 insertions(+)
diff --git a/debian/control b/debian/control
index 5a3ac6867..50196019f 100644
--- a/debian/control
+++ b/debian/control
@@ -28,
Signed-off-by: Stoiko Ivanov
---
...META-and-DCH-consistency-in-autoconf.patch | 2 +-
.../0002-always-load-ZFS-module-on-boot.patch | 2 +-
...o-the-zed-binary-on-the-systemd-unit.patch | 2 +-
...ith-d-dev-disk-by-id-in-scan-service.patch | 2 +-
debian/patches/0005-Enable-zed-emails.pa
Signed-off-by: Shengqi Chen
(cherry picked from commit 4d3133d3e1d6073969972cefd9bd7254d342ab8f)
Signed-off-by: Stoiko Ivanov
---
debian/zfsutils-linux.install | 2 ++
1 file changed, 2 insertions(+)
diff --git a/debian/zfsutils-linux.install b/debian/zfsutils-linux.install
index 2fd7aefe7..0ed
Elide some lifetimes to avoid clippy warnings:
warning: the following explicit lifetimes could be elided: 'a
--> proxmox-ve-config/src/firewall/parse.rs:319:11
|
319 | impl<'de, 'a, E> serde::de::Deserializer<'de> for
SomeStrDeserializer<'a, E>
| ^^
On 3/28/25 13:03, Michael Köppl wrote:
On 3/25/25 19:27, Thomas Lamprecht wrote:
Am 25.03.25 um 16:01 schrieb Michael Köppl:
While the format_task_description function is used in other parts of the
UI, this still leaves these use cases intact. The guest name is an
optional addition in paranthes
The confirmation dialogs of the following actions are affected by this
change:
* Remove
* Clone
* Migrate
* Snapshot
* Snapshot restore
* Backup VM/CT from config view
* Restore VM/CT from config view
A combination of VM/CT id and name is added to each confirmation dialog.
The order of id and name
Adds a formatted guest identifier (e.g. "VMID (VM name)") to the
SafeDestroy window. The formatted identifier is only used if it is
explicitly set by the caller. Otherwise, the VMID is used, avoiding
changes in behavior for other components.
Signed-off-by: Michael Köppl
---
src/window/SafeDestro
Closes #3181 [0].
The goal of this series is to extend the information displayed in the
confirmation dialogs when cloning, migrating, removing VMs or CTs by
adding the guest name in addition to the VM ID. This also unifies the
displayed information since there are multiple actions that already
inc
In anticipation of future storage plugins that might not have
PBS-specific formats or adhere to the vzdump naming scheme for
backups.
Signed-off-by: Fiona Ebner
---
www/manager6/Utils.js | 10 ++
www/manager6/grid/BackupView.js| 4 ++--
www/manager6/storage/BackupView.j
The example uses a simple directory structure to save the backups,
grouped by guest ID. VM backups are saved as configuration files and
qcow2 images, with backing files when doing incremental backups.
Container backups are saved as configuration files and a tar file or
squashfs image (added to test
'tar' itself already protects against '..' in component names and
strips absolute member names when extracting (if not used with the
--absolute-names option) and in general seems sane for extracting.
Additionally, the extraction already happens in the user namespace
associated to the container. So
Archive names start with the guest type and ID and then the same
timestamp format as PBS.
Container archives have the following structure:
guest.config
firewall.config
filesystem/ # containing the whole filesystem structure
VM archives have the following structure
guest.config
firewall.config
vol
In preparation to add another option and to improve style for the
callers.
One of the test cases that specified $is_zero_initialized is for a
non-existent storage, so the option was not added there.
Signed-off-by: Fiona Ebner
---
New in v6.
PVE/QemuServer.pm | 19 +++---
The filesystem structure is made available as a directory in a
consistent manner (with details depending on the vzdump backup mode)
just like for regular backup via tar.
The backup_container() method of the backup provider is executed in
a user namespace with the container's ID mapping applied. Th
For external backup providers, the state of the VM's disk images at
the time the backup is started is preserved via a snapshot-access
block node. Old data is moved to the fleecing image when new guest
writes come in. The snapshot-access block node, as well as the
associated bitmap in case of increm
There can be one dirty bitmap for each backup target ID (which are
tracked in the backup_access_bitmaps hash table). The QMP user can
specify the ID of the bitmap it likes to use. This ID is then compared
to the current one for the given target. If they match, the bitmap is
re-used (should it still
A new 'missing-recreated' action was added on the QEMU side.
Signed-off-by: Fiona Ebner
---
PVE/VZDump/QemuServer.pm | 3 +++
1 file changed, 3 insertions(+)
diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm
index 0d4949a8..02e2c5af 100644
--- a/PVE/VZDump/QemuServer.pm
+++ b/PVE
The features returned by the 'query-proxmox-support' QMP command are
booleans, so just checking for definedness is not enough in principle.
In practice, a feature is currently always true if defined. Still, fix
the checks, should the need to disable support for a feature ever
arise in the future an
The state of the VM's disk images at the time the backup is started is
preserved via a snapshot-access block node. Old data is moved to the
fleecing image when new guest writes come in. The snapshot-access
block node, as well as the associated bitmap in case of incremental
backup, will be made avai
For the external backup API, it will be necessary to add a fleecing
image even for small disks like EFI and TPM, because there is no other
place the old data could be copied to when a new guest write comes in.
Signed-off-by: Fiona Ebner
---
PVE/VZDump/QemuServer.pm | 14 --
1 file ch
Signed-off-by: Fiona Ebner
---
Changes in v6:
* Adapt to renamed archive_get_guest_config() method.
src/PVE/Storage.pm | 11 +++
1 file changed, 11 insertions(+)
diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm
index 10a4abc..7174f0f 100755
--- a/src/PVE/Storage.pm
+++ b/src/PVE/St
Hard-coding a list of sensitive properties means that custom plugins
cannot define their own sensitive properties for the on_add/on_update
hooks.
Have plugins declare the list of their sensitive properties in the
plugin data. For backwards compatibility, return the previously
hard-coded list if no
The module includes a run_in_userns() helper to run a Perl subroutine
in a user namespace.
The first use case is running the container backup subroutine for
external providers inside a user namespace. That allows them to see
the filesystem to back-up from the containers perspective and also
improv
First, the provider is asked about what restore mechanism to use.
Currently, only 'qemu-img' is possible. Then the configuration files
are restored, the provider gives information about volumes contained
in the backup and finally the volumes are restored via
'qemu-img convert'.
The code for the re
The TPM state drive is newly attached each time, so it is fully
expected that a bitmap from last time would be missing.
Signed-off-by: Fiona Ebner
---
PVE/VZDump/QemuServer.pm | 2 ++
1 file changed, 2 insertions(+)
diff --git a/PVE/VZDump/QemuServer.pm b/PVE/VZDump/QemuServer.pm
index 02e2c5af
While restore_external_archive() already has a check, that happens
after an existing container is destroyed.
Signed-off-by: Fiona Ebner
---
src/PVE/API2/LXC.pm | 14 ++
1 file changed, 14 insertions(+)
diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
index 7cb5122..6cd771c 100
Changes for version 11:
* Allow declaring storage features via plugin data.
* Introduce new_backup_provider() plugin method.
* Allow declaring sensitive properties via plugin data.
See the api changelog file for details.
Signed-off-by: Fiona Ebner
---
ApiChangeLog | 32 ++
For punching holes via fallocate. This will be useful for the external
backup provider API to discard parts of the source. The 'file-handle'
mechanism there uses a fuse mount, which does not implement the
BLKDISCARD ioctl, but does implement fallocate.
Signed-off-by: Fiona Ebner
---
src/PVE/Stor
For providing snapshot-access to external backup providers, EFI and
TPM also need an associated fleecing image. The new caller will thus
need a different filter.
Signed-off-by: Fiona Ebner
---
pve-backup.c | 9 +
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/pve-backup.c
In preparation for allowing multiple backup providers and potentially
multiple targets for a given provider. Each backup target can then
have its own dirty bitmap and there can be additional checks that the
current backup state is actually associated to the expected target.
Signed-off-by: Fiona Eb
Signed-off-by: Fiona Ebner
---
src/PVE/Syscall.pm | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/PVE/Syscall.pm b/src/PVE/Syscall.pm
index 9ef3d5d..f3193a3 100644
--- a/src/PVE/Syscall.pm
+++ b/src/PVE/Syscall.pm
@@ -19,6 +19,7 @@ BEGIN {
mknod => &SYS_mknod,
faccessat =>
The only thing that might need to be cleaned up after
setup_snapshot_access() failed is dropping the cbw filter. Do so in
the single branch it matters inside setup_snapshot_access() itself.
This avoids the need that callers of setup_snapshot_access() use
cleanup_snapshot_access() when the call fail
Am 28.03.25 um 18:12 schrieb Max Carrara:
> - What would be the preferred way to allow specifying whether a
> (custom) plugin is shared or not via our API?
>
> E.g. some external plugins do the following, which (I suppose)
> wasn't originally part of the API, but is now, due it being used in
Fixes a build failure.
Fixes: 52f670250 ("api subscription: output generic apt-auth stanza for ceph")
Signed-off-by: Christoph Heiss
---
PVE/API2/Subscription.pm | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/PVE/API2/Subscription.pm b/PVE/API2/Subscription.pm
index 838d1bc0
Fixes #5880 [0].
Add a new option `global.reboot_mode` to the answer file, which allows
users to optionally power off the machine after a successful
installation, instead of rebooting.
The option is completely backwards-compatible, i.e. defaults to
"reboot", keeping the current behaviour.
This c
Fixes #5880 [0].
This can be useful for certain scenarios, such as being able to
provision a stack of servers using the auto-installer and afterwards
being able to work on the servers without time pressure, such as e.g.
removing the installation medium, before booting them into the OS for
the firs
This just takes the option from the answer file and reproduces it for
the post-hook.
Signed-off-by: Christoph Heiss
---
proxmox-auto-installer/src/answer.rs | 2 +-
proxmox-post-hook/src/main.rs| 7 +--
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/proxmox-auto-insta
This is already defined, so use it where possible.
Signed-off-by: Christoph Heiss
---
www/manager6/window/Migrate.js | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/www/manager6/window/Migrate.js b/www/manager6/window/Migrate.js
index c300f8d35..0e97cfe62 100644
--- a/www
On Mon Mar 31, 2025 at 12:03 PM CEST, Fabian Grünbichler wrote:
> this has been the default for Debian since Bullseye[0].
>
> besides password setting for the PAM/PVE/PMG realms, this is also used
> to hash cloud-init passwords for Linux VMs, where only a subset of
> prefixes is currently allowed.
On 3/24/25 04:37, Thomas Skinner wrote:
> Signed-off-by: Thomas Skinner
> ---
> pve-rs/src/openid/mod.rs | 7 ++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/pve-rs/src/openid/mod.rs b/pve-rs/src/openid/mod.rs
> index 1fa7572..095ef26 100644
> --- a/pve-rs/src/openid/mo
On 3/27/25 02:49, Thomas Skinner wrote:
> Changes since v4:
> - remove invalid section from docs
>
> access-control:
>
> Thomas Skinner (1):
> fix #4411: openid: add logic for openid groups support
>
> src/PVE/API2/OpenId.pm | 83
> src/PVE/AccessCon
forgot the link [0] in my previous reply:
https://pve.proxmox.com/wiki/Perl_Style_Guide
___
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
On 3/27/25 02:50, Thomas Skinner wrote:
> Signed-off-by: Thomas Skinner
> ---
> src/PVE/API2/OpenId.pm | 83
> src/PVE/AccessControl.pm | 2 +-
> src/PVE/Auth/OpenId.pm | 25
> src/PVE/Auth/Plugin.pm | 1 +
> 4 files changed, 110 inser
this has been the default for Debian since Bullseye[0].
besides password setting for the PAM/PVE/PMG realms, this is also used
to hash cloud-init passwords for Linux VMs, where only a subset of
prefixes is currently allowed.
'j9T' is the default cost factor for yescrypt.
0:
https://www.debian.o
since this manually constructs the input string for `crypt`, which looks
different depending on used prefix/hashing algorithm, ensure that it was
understood by crypt and that it returned a proper hashed password line.
Signed-off-by: Fabian Grünbichler
---
Notes:
alternatively, we could switc
this will hash the password of new users or rehash the password on
password changes using 'yescrypt', which is the default in Debian since
Bullseye[0].
0:
https://www.debian.org/releases/bullseye/amd64/release-notes/ch-information.en.html#pam-default-password
Reported-by: Trent W. Buck
Signed-o
Debian switched the default hash algorithm for /etc/shadow to yescrypt
for Bullseye. Our installer uses it for the root password set during
installation. But any PAM/PVE user created over the API, or any password
change triggered afterwards for such users, will fallback to
sha256crypt.
Since the h
WWNs (WWIDs) are useful information for debugging setups where
multipath is not (correctly) set up, as the WWN reveals which block
devices point to the same LUN. The report currently does not provide
WWNs in such scenarios. There is a symlink for the WWN under
/dev/disk/by-id/wwn-*, but if there ar
On Fri Mar 28, 2025 at 6:13 PM CET, Gabriel Goller wrote:
> Add initial documentation for the openfabric and ospf options.
>
> Signed-off-by: Gabriel Goller
> ---
> pvesdn.adoc | 155
> 1 file changed, 155 insertions(+)
>
> diff --git a/pvesdn.
85 matches
Mail list logo