On 04/06/2011 02:59 AM, Daniel P. Berrange wrote:
On Tue, Apr 05, 2011 at 10:55:40AM -0600, Eric Blake wrote:
> On 04/05/2011 10:12 AM, Michal Privoznik wrote:
>> This is needed if we want to transfer a temporary file. If the
>> transfer is done with iohelper, we might run into a race condition,
>> where we unlink() file before iohelper is executed.
>>
>> * src/fdstream.c, src/fdstream.h,
>> src/util/iohelper.c: Add new option
>> * src/lxc/lxc_driver.c, src/qemu/qemu_driver.c,
>> src/storage/storage_driver.c, src/uml/uml_driver.c,
>> src/xen/xen_driver.c: Expand existing function calls
>
> I'm not convinced about this commit. We should instead be fixing
> iohelper to receive its file by fd inheritance, so that it doesn't have
> to open() in the first place. Then you don't need iohelper to worry
> about unlink().
My intention was that iohelper could also do uid/gid changes
in the future to cope with opening files on root squashing
NFS. For that we'd want it to be doing the open, not libvirtd
Even if the parent process does virFileOpenAs? I think we've already
got all the uid/gid changes covered in the parent process, without
having to offload that into the child and coordinate a second open();
and even if we don't, fchmod/fchown are better than a second
open()/chmod()/chown().
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org