]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: Get rid of virFileFlock()
authorMartin Kletzander <mkletzan@redhat.com>
Wed, 29 Jul 2020 10:46:12 +0000 (12:46 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Mon, 3 Aug 2020 08:57:47 +0000 (10:57 +0200)
It was created to get rid of conditional compilation in the resctrl code and
make it usable anywhere else.  However this is not something that is going to be
used in other places because it is not portable and resctrl is just very
specific in this regard.  And there is no reason why there could not be a
preprocessor conditional in the resctrl code.  Also the interface of
virFileFlock() was very ambiguous which lead to some issues.

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/libvirt_private.syms
src/util/virfile.c
src/util/virfile.h
src/util/virresctrl.c

index bdc1563300a3cb9abb9172a6f50afcd9d533101d..b726b0c07163b63ad50a8926dd29987230c0b3e5 100644 (file)
@@ -2076,7 +2076,6 @@ virFileFindHugeTLBFS;
 virFileFindMountPoint;
 virFileFindResource;
 virFileFindResourceFull;
-virFileFlock;
 virFileFreeACLs;
 virFileGetACLs;
 virFileGetDefaultHugepage;
index c6f4a18a7a8827775a03eb793543192a0d1b28fd..32361075fbd86ee7dc37ebbf96858630c993d898 100644 (file)
@@ -463,30 +463,9 @@ int virFileUnlock(int fd, off_t start, off_t len)
 }
 
 
-/**
- * virFileFlock:
- * @fd: file descriptor to call flock on
- * @lock: true for lock, false for unlock
- * @shared: true if shared, false for exclusive, ignored if `@lock == false`
- *
- * This is just a simple wrapper around flock(2) that errors out on unsupported
- * platforms.
- *
- * The lock will be released when @fd is closed or this function is called with
- * `@lock == false`.
- *
- * Returns 0 on success, -1 otherwise (with errno set)
- */
-int virFileFlock(int fd, bool lock, bool shared)
-{
-    if (lock)
-        return flock(fd, shared ? LOCK_SH : LOCK_EX);
-
-    return flock(fd, LOCK_UN);
-}
-
 #else /* WIN32 */
 
+
 int virFileLock(int fd G_GNUC_UNUSED,
                 bool shared G_GNUC_UNUSED,
                 off_t start G_GNUC_UNUSED,
@@ -505,14 +484,6 @@ int virFileUnlock(int fd G_GNUC_UNUSED,
 }
 
 
-int virFileFlock(int fd G_GNUC_UNUSED,
-                 bool lock G_GNUC_UNUSED,
-                 bool shared G_GNUC_UNUSED)
-{
-    errno = ENOSYS;
-    return -1;
-}
-
 #endif /* WIN32 */
 
 
index cb0e586a7d1101f0cd4b5943e18ab159662ba9e1..2eec89598f6bfe2d1c8597cecc34cc54c1bd3e92 100644 (file)
@@ -118,8 +118,6 @@ int virFileLock(int fd, bool shared, off_t start, off_t len, bool waitForLock)
 int virFileUnlock(int fd, off_t start, off_t len)
     G_GNUC_NO_INLINE;
 
-int virFileFlock(int fd, bool lock, bool shared);
-
 typedef int (*virFileRewriteFunc)(int fd, const void *opaque);
 int virFileRewrite(const char *path,
                    mode_t mode,
index 9b78a6cb159b951442278cdeccd85e7f6639dd65..54db6f040cc7de756f2472259c6ec326e1e8cc46 100644 (file)
@@ -453,6 +453,8 @@ VIR_ONCE_GLOBAL_INIT(virResctrl);
 
 
 /* Common functions */
+#ifndef WIN32
+
 static int
 virResctrlLockWrite(void)
 {
@@ -463,7 +465,7 @@ virResctrlLockWrite(void)
         return -1;
     }
 
-    if (virFileFlock(fd, true, false) < 0) {
+    if (flock(fd, LOCK_EX) < 0) {
         virReportSystemError(errno, "%s", _("Cannot lock resctrl"));
         VIR_FORCE_CLOSE(fd);
         return -1;
@@ -485,7 +487,7 @@ virResctrlUnlock(int fd)
         virReportSystemError(errno, "%s", _("Cannot close resctrl"));
 
         /* Trying to save the already broken */
-        if (virFileFlock(fd, false, false) < 0)
+        if (flock(fd, LOCK_UN) < 0)
             virReportSystemError(errno, "%s", _("Cannot unlock resctrl"));
 
         return -1;
@@ -494,6 +496,29 @@ virResctrlUnlock(int fd)
     return 0;
 }
 
+#else /* WIN32 */
+
+static int
+virResctrlLockWrite(void)
+{
+    virReportSystemError(ENOSYS, "%s",
+                         _("resctrl locking is not supported "
+                           "on this platform"));
+    return -1;
+}
+
+
+static int
+virResctrlUnlock(int fd G_GNUC_UNUSED)
+{
+    virReportSystemError(ENOSYS, "%s",
+                         _("resctrl locking is not supported "
+                           "on this platform"));
+    return -1;
+}
+
+#endif /* WIN32 */
+
 
 /* virResctrlInfo-related definitions */
 static int