From 9a08e2cbc6933c068310c85354cff75e015f1de0 Mon Sep 17 00:00:00 2001 From: Chen Hanxiao Date: Mon, 23 Sep 2013 11:22:17 +0100 Subject: [PATCH] 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 --- src/lxc/lxc_container.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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); -- 2.47.2