From: Lennart Poettering Date: Wed, 24 Mar 2021 13:17:20 +0000 (+0100) Subject: mount-util: handle remount failures gracefully if flags already match X-Git-Tag: v249-rc1~502^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b23c6a6411fd58ac281642bcae915a7ea55db5c7;p=thirdparty%2Fsystemd.git 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. --- 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; }