[pve-devel] [PATCH container] fix regression breaking container restore from PBS
Fabian Grünbichler
f.gruenbichler at proxmox.com
Mon Nov 17 14:54:18 CET 2025
On November 17, 2025 1:22 pm, Filip Schauer wrote:
> On 17/11/2025 12:31, Filip Schauer wrote:
>> This fixes a regression caused by an abs_filesystem_path call introduced
>> with OCI image support. When trying to restore a container from a
>> Proxmox Backup Server, this tried to resolve a path on a PBS datastore
>> as a local file system path. This is fixed by only calling
>> abs_filesystem_path on path-based storages.
>>
>> Fixes: 2aed26d320ae ("add support for OCI images as container
>> templates")
>>
>> Signed-off-by: Filip Schauer <f.schauer at proxmox.com>
>> ---
>> src/PVE/API2/LXC.pm | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/PVE/API2/LXC.pm b/src/PVE/API2/LXC.pm
>> index cffa17a..f74f19d 100644
>> --- a/src/PVE/API2/LXC.pm
>> +++ b/src/PVE/API2/LXC.pm
>> @@ -544,7 +544,7 @@ __PACKAGE__->register_method({
>> my $rootdir = PVE::LXC::mount_all($vmid, $storage_cfg, $conf, 1);
>> my $archivepath = '-';
>> $archivepath = PVE::Storage::abs_filesystem_path($storage_cfg, $archive)
>> - if ($archive ne '-');
>> + if ($archive ne '-' && $storage_cfg->{path});
>> $bwlimit = PVE::Storage::get_bandwidth_limit(
>> 'restore', [keys %used_storages], $bwlimit,
>> );
>
> Unfortunatelly I only just noticed that this seems to break OCI images
> for me.
$storage_cfg is not the section of the storage, but the full storage.cfg
..
but I think this whole section should be revamped..
we should have
PVE::LXC::archive_is_oci_format($storage_cfg, $archive)
and then we can just inline that and have a combined
PVE::LXC::restore_oci_archive($storage_cfg, $archive, $conf)
that combines the two current helpers (extract_oci_config and
merge_oci_conf_into_pct_conf) which are both only called once..
and we end up with
if ($restore && $archive ne '-') {
print "restoring '$archive' now..\n";
} elsif (PVE::LXC::archive_is_oci_format($storage_cfg, $archive) {
print "Detected OCI archive\n";
PVE::LXC::restore_oci_archive($storage_cfg, $archive, $conf);
} else {
# Not an OCI image, so restore it as an LXC image instead
PVE::LXC::Create::restore_archive(
More information about the pve-devel
mailing list