From: Chen Hanxiao Date: Mon, 23 Sep 2013 10:22:17 +0000 (+0100) Subject: LXC: Check the existence of dir before resolving symlinks X-Git-Tag: v1.1.3-rc1~85 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9a08e2cbc6933c068310c85354cff75e015f1de0;p=thirdparty%2Flibvirt.git LXC: Check the existence of dir before resolving symlinks If a dir does not exist, raise an immediate error in logs rather than letting virFileResolveAllLinks fail, since this gives better error reporting to the user. Signed-off-by: Chen Hanxiao --- diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index a979452a45..c60f5d8a5d 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -1696,6 +1696,7 @@ static int lxcContainerResolveSymlinks(virDomainDefPtr vmDef) { char *newroot; size_t i; + char ebuf[1024]; VIR_DEBUG("Resolving symlinks"); @@ -1703,6 +1704,13 @@ static int lxcContainerResolveSymlinks(virDomainDefPtr vmDef) virDomainFSDefPtr fs = vmDef->fss[i]; if (!fs->src) continue; + + if (access(fs->src, F_OK)) { + VIR_DEBUG("Failed to access '%s': %s", fs->src, + virStrerror(errno, ebuf, sizeof(ebuf))); + return -1; + } + VIR_DEBUG("Resolving '%s'", fs->src); if (virFileResolveAllLinks(fs->src, &newroot) < 0) { VIR_DEBUG("Failed to resolve symlink at %s", fs->src);