[pve-devel] [PATCH storage v3 03/10] plugin: dir: handle ova files for import
Dominik Csapak
d.csapak at proxmox.com
Thu May 23 14:32:11 CEST 2024
On 5/23/24 14:25, Fabian Grünbichler wrote:
> On May 23, 2024 12:40 pm, Dominik Csapak wrote:
>> On 5/22/24 12:08, Fabian Grünbichler wrote:
>>> On April 29, 2024 1:21 pm, Dominik Csapak wrote:
[snip]
>>>> + $target_volname = "$vmid/" . $target_diskname;
>>>
>>> this encodes a fact about volname semantics that might not be a given
>>> for external, dir-based plugins (not sure if we want to worry about that
>>> though, or how to avoid it ;)).
>>
>> i mean we could call 'alloc' with a very small size instead
>> and simply "overwrite" it? then we'd also get around things like
>> mkpath and imagedir etc.
>
> that might actually be nice(r) than the current approach since it avoids
> the volname format issue entirely. the only downside is that we then
> briefly have a "wrong" disk visible, but since the VM has to be locked
> at that point there shouldn't be too much harm in that?
>
we also have a 'wrong' disk after extraction before the import step though
so yes I do think that approach should work fine
>>>> + $target_path = $target_plugin->filesystem_path($target_scfg, $target_volname);
>>>
>>> this should be equivalent to PVE::Storage::path for DirPlugin based
>>> storages?
>>>
>>>> +
>>>> + print "renaming $source_path to $target_path\n";
>>>> + my $imagedir = $target_plugin->get_subdir($target_scfg, 'images');
>>>
>>> we already did this above, but see comment there ;)
>>
>> true ;)
>>
>>>
>>>> + mkpath "$imagedir/$vmid";
>>>> +
>>>> + rename($source_path, $target_path) or die "unable to move - $!\n";
>>>> + };
>>>> + if (my $err = $@) {
>>>> + unlink $source_path;
>>>> + unlink $target_path if defined($target_path);
>>>
>>> isn't this pretty much impossible to happen? the last thing we do in the
>>> eval block is the rename - if that failed, $target_path can't exist yet.
>>> if it didn't fail, we can't end up here?
>>
>> that probably depends on the underlying filesystem no? not
>> every fs has posix rename semantics i guess?
>
> I think we can assume an intra-FS rename to either work and have an
> effect, or not work and not have an effect on anything we want to
> support as dir storage? :)
>
>> in that case we'd cleanup the file, and if it does not exists, it doesn't hurt
>> but
>
> sure, but error handling tends to get more complicated over time, so not
> having nops in there reduces the complexity somewhat IMHO.
fine with me :)
More information about the pve-devel
mailing list