The way that our file locking works is that we open() the file we
want to lock and then use fcntl(fd, F_SETLKW, ...) to lock it.
The problem is, we are doing all of these as root which doesn't
work if the file lives on root squashed NFS, because if it does
then the open() fails. The way to resolve this is to make this a
non fatal error and leave callers deal with this (i.e. disable
remembering) - implemented in the previous commit.
https://bugzilla.redhat.com/show_bug.cgi?id=1804672
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/security/security_manager.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/security/security_manager.c b/src/security/security_manager.c
index 1e998a6579..9f4bd7f8df 100644
--- a/src/security/security_manager.c
+++ b/src/security/security_manager.c
@@ -1345,6 +1345,11 @@ virSecurityManagerMetadataLock(virSecurityManagerPtr mgr
G_GNUC_UNUSED,
}
#endif /* !WIN32 */
+ if (virFileIsSharedFS(p)) {
+ /* Probably a root squashed NFS. */
+ continue;
+ }
+
virReportSystemError(errno,
_("unable to open %s"),
p);
--
2.24.1