summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2015-06-18 19:42:59 +0200
committerLennart Poettering <lennart@poettering.net>2015-06-18 19:45:18 +0200
commit68a313c5921d32896136e0775ecb375b0be60206 (patch)
treef416a3a2bf9f80b6276e828d33b0c2c8d7d30065
parentff609b8ecd0e36bfff0ba120932307274d993dc8 (diff)
nspawn: suppress warning when /etc/resolv.conf is a valid symlink
In such a case let's suppress the warning (downgrade to LOG_DEBUG), under the assumption that the user has no config file to update in its place, but a symlink that points to something like resolved's automatically managed resolve.conf file. While we are at it, also stop complaining if we cannot write /etc/resolv.conf due to a read-only disk, given that there's little we could do about it.
-rw-r--r--src/nspawn/nspawn.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index d1154de08a..4cf2d14ae2 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -1538,7 +1538,16 @@ static int setup_resolv_conf(const char *dest) {
r = copy_file("/etc/resolv.conf", where, O_TRUNC|O_NOFOLLOW, 0644, 0);
if (r < 0) {
- log_warning_errno(r, "Failed to copy /etc/resolv.conf to %s: %m", where);
+ /* If the file already exists as symlink, let's
+ * suppress the warning, under the assumption that
+ * resolved or something similar runs inside and the
+ * symlink points there.
+ *
+ * If the disk image is read-only, there's also no
+ * point in complaining.
+ */
+ log_full_errno(IN_SET(r, -ELOOP, -EROFS) ? LOG_DEBUG : LOG_WARNING, r,
+ "Failed to copy /etc/resolv.conf to %s: %m", where);
return 0;
}