[Libguestfs] [PATCH nbdkit v2] ssh: Allow the remote file to be created
Laszlo Ersek
lersek at redhat.com
Sun Apr 17 11:08:04 UTC 2022
On 04/17/22 12:20, Richard W.M. Jones wrote:
> On Sun, Apr 17, 2022 at 12:08:36PM +0200, Laszlo Ersek wrote:
>> On 04/17/22 11:09, Richard W.M. Jones wrote:
>>> On Sun, Apr 17, 2022 at 09:32:03AM +0200, Laszlo Ersek wrote:
>>>> Two comments:
>>>>
>>>> (1) If the file already exists, then O_CREAT will have no effect;
>>>> however, we'll still resize the file. I think that's not ideal.
>>>>
>>>> I think the usual approach for this is:
>>>>
>>>> (a) attempt O_CREAT | O_EXCL; if it succeeds, perform the truncate as well
>>>>
>>>> (b) if O_CREAT | O_EXCL fails, then just attempt the open without
>>>> *either* flag. If that succeeds, do not perform the truncate.
>>>
>>> I wonder here if what we feel about:
>>>
>>> nbdkit ssh ... create=true create-size=100M
>>>
>>> that ends up working but the size isn't 100M.
>>>
>>> Should we fail if the remote exists already? Maybe this is something
>>> we should let the user choose.
>>>
>>> [Also I wonder what qemu blockdev-create does - need to investigate.]
>>
>> "create-mode" is ignored if the file exists; ignoring "create-size" in
>> that case would be consistent. "Use this image if it exists; if it does
>> not, create it with these permissons and this size".
>
> This is one way it could work, but from a usability point of view, how
> does the nbdkit user know if the remote file exists or not?
>
> With the current implementation we leave an zero-sized file lying
> around if setstat fails. We should fix that bug, but I doubt an
> implementation can be 100% reliable (eg: if sftp_setstat fails, is the
> connection dead? will sftp_unlink work?) Ignoring create-size if the
> file exists could result in a zero-sized file that's impossible to
> recover from except by manual intervention.
>
> I don't think there's a good answer here. Possibly we want to let the
> user decide how they want it to work ...
Right; you can always introduce more plugin params for controlling this!
Laszlo
More information about the Libguestfs
mailing list