On 6/1/20 12:16 PM, Richard W.M. Jones wrote:
And I already see that you have the counterpart v2v patch that hoists the reading of the password into v2v instead of worrying about vddk; the v2v hack of using a temporary file "works" in spite of our re-exec reading it twice, even if we want to eventually reach the point where a more complex patch in the vddk plugin would only read the password once before re-exec.
The other advantage with doing this in virt-v2v is that there is a place to clean up this temporary file. There was as far as I could tell no easy way for nbdkit to reexec itself with password=+/tmp/<generated file> and have that file get cleaned up. Not a problem since the file is not large, but nicer not to leave passwords around if we can help it.
Sure there is: user passes password=- .config reads the password interactively, into a variable re-exec code sees that we have a password string, so it calls: fd=open("/safe/temp/name", O_CREAT|O_EXCL|O_RDWR, 0600) unlink("/safe/temp/name") write(fd, password...) lseek(fd, 0, SEEK_SET) rewrite command-line to use password="-fd" re-exec with altered command-line .config sees password=-N, reads from the temporary file, which closes the fd That would also solve the fact that even with password=/path/to/file, our re-exec code is reading the password twice; or worse, with password=-4, we are not rewinding the file position of fd 4 (if it is seekable) and the re-exec is reading from the wrong position (worse if fd 4 is non-seekable, and we cannot rewind). -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org