From b23c6a6411fd58ac281642bcae915a7ea55db5c7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Mar 2021 14:17:20 +0100 Subject: [PATCH] mount-util: handle remount failures gracefully if flags already match In bind_remount_one_with_mountinfo() let's handle mount failures gracefully if the flags already match anyway. This isn't perfect, since it mixes up superblock and mount point flags, but it's close enough. --- src/shared/mount-util.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/shared/mount-util.c b/src/shared/mount-util.c index ab2f62c32fc..f226dc1aa68 100644 --- a/src/shared/mount-util.c +++ b/src/shared/mount-util.c @@ -387,8 +387,16 @@ int bind_remount_one_with_mountinfo( } r = mount_nofollow(NULL, path, NULL, ((flags & ~flags_mask)|MS_BIND|MS_REMOUNT|new_flags) & ~MS_RELATIME, NULL); - if (r < 0) - return r; + if (r < 0) { + if (((flags ^ new_flags) & flags_mask & ~MS_RELATIME) != 0) /* Ignore MS_RELATIME again, + * since kernel adds it in + * everywhere, because it's the + * default. */ + return r; + + /* Let's handle redundant remounts gracefully */ + log_debug_errno(r, "Failed to remount '%s' but flags already match what we want, ignoring: %m", path); + } return 0; } -- 2.47.3