At 03/11/2011 03:54 AM, Laine Stump Write:
On 03/10/2011 03:59 AM, Wen Congyang wrote:
> At 03/10/2011 01:24 PM, Laine Stump Write:
>> On 03/09/2011 08:45 PM, Eric Blake wrote:
>>> Needs more testing - especially on root-squash NFS
>> Starting up a domain with backing store on root-squash NFS works fine.
>>
>> When I try to save the domain to a directory on a root-squash NFS,
>> though, the save hangs forever with a zombified child process with a
>> WCHAN of "exit", and the parent process is sitting on recvmsg():
> I save the domain to a directory on a root-squash NFS, and it works
> fine.
>
> Restoring the domain works fine too.
Okay, I've figured out what happened - the permission on a parent of my
target directory on the NFS server had been changed during unrelated
testing from (root,root) 755 to 700, so even though the target directory
had the proper user (qemu,qemu), qemu was denied access to the directory
due to its parent's permissions/ownership. When I set the parent
directory back to 755, save and restore both work.
Yes. I can reproduce this problem when setting the parent directory to 700.
However, the current code still has a problem - if you try to save
to/from a directory that the qemu user doesn't have permission for (and
presumably if there's any other error in the child that causes it to
skip the sendmsg), rather than returning an error virFileOpenAs just
hangs on recvmsg waiting for the fd info to come over the pipe, while
the child process sits around as a zombie because nobody has reaped its
exit status.