On 10/11/2012 10:04 AM, Eric Blake wrote: > Another idea: a hybrid approach - the _first_ -add-fd 4 directly adds 4 > to the set, all other -add-fd 4 end up adding dup(4) instead (well, > fcntl(F_DUPFD_CLOEXEC), but you get the picture). That is, do the > duplicate scanning, and if there is no duplicate, use the fd directly; > if there IS a duplicate, then put a unique fd number as a copy into the > remaining sets. That way, you don't have to do a final close() sweep > across the -add-fd arguments passed on the command line, and you still > don't have to worry about duplicated fds across multiple sets causing > mayhem in qemu_close(). Hmm, you may also need to be careful of corner cases. If I do: qemu -add-fd fd=4,set=1 -add-fd fd=4,set=2 -add-fd fd=5,set=3 5<&- with fd 5 not inherited, then a dup(4) would give 5; you don't want to accidentally add a copy of fd 4 into set 3, but rather fail because fd 5 was not inherited. -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list