[Libguestfs] [PATCH] file: Better support for read-only files
Eric Blake
eblake at redhat.com
Tue Mar 2 19:20:38 UTC 2021
On 3/2/21 1:12 PM, Richard W.M. Jones wrote:
>>>
>>> h->fd = openat (dfd, file, flags);
>>> + if (h->fd == -1 && !readonly) {
>>> + int saved_errno = errno;
>>> + flags = (flags & ~O_ACCMODE) | O_RDONLY;
>>> + h->fd = openat (dfd, file, flags);
>>> + if (h->fd == -1)
>>> + errno = saved_errno;
>>> + else
>>> + h->can_write = false;
>>> + }
>>> if (h->fd == -1) {
>>> nbdkit_error ("open: %s: %m", file);
>>
>> This will always report the error that failed open when using O_RDWR.
>> But if open(O_RDWR) fail with EPERM, and open(O_RDONLY) fails
>> with another error, the other error will be hidden.
>>
>> Maybe it is better to log the first error so we don't need to save errno
>> when trying to open in read only mode?
>
> Maybe we could put it in a nbdkit_debug message?
Sure, I can do that as a followup.
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org
More information about the Libguestfs
mailing list