A gnulib change (commit id '
beae0bdc') causes ENOTCONN to be returned
from recvfd which causes us to fall into the throwaway waitpid() call
and return ENOTCONN to the caller, this then gets displayed during
a 'virsh save' when using a root squashed NFS environment that's trying
to save the file as something other than root:root.
This patch will add the additional check for ENOTCONN to force the code
into the waitpid loop looking for the actual status from the _exit()'d
child fork.
Signed-off-by: John Ferlan <jferlan@redhat.com>
} while (fd < 0 && errno == EINTR);
VIR_FORCE_CLOSE(pair[0]); /* NB: this preserves errno */
- if (fd < 0 && errno != EACCES) {
+ /* gnulib will return ENOTCONN in certain instances */
+ if (fd < 0 && !(errno == EACCES || errno == ENOTCONN)) {
ret = -errno;
while (waitpid(pid, NULL, 0) == -1 && errno == EINTR);
return ret;