From ba7cc215fb89b39c33a25855578f2d49c43e3a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A1n=20Tomko?= Date: Thu, 20 Mar 2014 16:35:00 +0100 Subject: [PATCH] Ignore missing files on pool refresh If we cannot stat/open a file on pool refresh, returning -1 aborts the refresh and the pool is undefined. Only treat missing files as fatal unless VolOpenCheckMode is called with the VIR_STORAGE_VOL_OPEN_ERROR flag. If this flag is missing (when it's called from virStorageBackendProbeTarget in virStorageBackendFileSystemRefresh), only emit a warning and return -2 to let the caller skip over the file. https://bugzilla.redhat.com/show_bug.cgi?id=977706 (cherry picked from commit ee640f444bbdc976bdaed305f0d64d241d275376) --- src/storage/storage_backend.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c index fd6c69a131..e522a0686c 100644 --- a/src/storage/storage_backend.c +++ b/src/storage/storage_backend.c @@ -1130,6 +1130,10 @@ virStorageBackendVolOpenCheckMode(const char *path, struct stat *sb, char *base = last_component(path); if (lstat(path, sb) < 0) { + if (errno == ENOENT && !(flags & VIR_STORAGE_VOL_OPEN_ERROR)) { + VIR_WARN("ignoring missing file '%s'", path); + return -2; + } virReportSystemError(errno, _("cannot stat file '%s'"), path); @@ -1150,6 +1154,10 @@ virStorageBackendVolOpenCheckMode(const char *path, struct stat *sb, VIR_WARN("ignoring dangling symlink '%s'", path); return -2; } + if (errno == ENOENT && !(flags & VIR_STORAGE_VOL_OPEN_ERROR)) { + VIR_WARN("ignoring missing file '%s'", path); + return -2; + } virReportSystemError(errno, _("cannot open volume '%s'"),