]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage_file: de-modularize the local file backend
authorPeter Krempa <pkrempa@redhat.com>
Thu, 9 Jan 2025 08:52:36 +0000 (09:52 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 20 Jan 2025 12:28:09 +0000 (13:28 +0100)
The 'storage_file' infrastructure serves as an abstraction on top of
file-looking storage technologies. Apart from local file it currently
implements also a backend for 'gluster'.

Historically it was all modularized and the local file module was
usually packaged with the 'core' part of the storage driver. Now with
split daemons one can install e.g. 'virqemud' without the storage driver
core which contains the 'fs' backend module. Since the qemu driver uses
the storage file backends to e.g. create storage for snapshots and
backups this allows users to create a deployment where some things will
not work properly.

As the 'fs' backend doesn't use any code that wouldn't be linked
directly anyways there's no point in actually shipping it as a module.

Let's compile it in so that all deployments can use it.

To achieve that, compile the source directly into the
'virt_storage_file_lib' static library and remove the loading code. Also
adjust the spec file.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
libvirt.spec.in
src/storage_file/meson.build
src/storage_file/storage_file_backend.c

index 2bc8dfd32347b807bafa542740abbf12f96fd446..b1e223cfbe0650110f5b0d6eebf6c8e09b4d133b 100644 (file)
@@ -2268,7 +2268,6 @@ exit 0
 %ghost %dir %{_rundir}/libvirt/storage/
 %{_libdir}/libvirt/connection-driver/libvirt_driver_storage.so
 %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_fs.so
-%{_libdir}/libvirt/storage-file/libvirt_storage_file_fs.so
 %{_mandir}/man8/virtstoraged.8*
 
 %files daemon-driver-storage-disk
index d40e98befa743e7a29823ff0039d0ffe5ef8be84..27c4e5a432b45b228cba9fe37208040e88cf5799 100644 (file)
@@ -3,9 +3,6 @@ storage_file_sources = [
   'storage_source_backingstore.c',
   'storage_file_backend.c',
   'storage_file_probe.c',
-]
-
-stoarge_file_fs_sources = [
   'storage_file_backend_fs.c',
 ]
 
@@ -30,19 +27,6 @@ virt_storage_file_lib = static_library(
 
 libvirt_libs += virt_storage_file_lib
 
-if conf.has('WITH_STORAGE')
-  virt_modules += {
-    'name': 'virt_storage_file_fs',
-    'sources': [
-      files(stoarge_file_fs_sources),
-    ],
-    'include': [
-      storage_inc_dir,
-    ],
-    'install_dir': storage_file_install_dir,
-  }
-endif
-
 if conf.has('WITH_STORAGE_GLUSTER')
   virt_modules += {
     'name': 'virt_storage_file_gluster',
index 03583803de5e3604f1ab41b23c7768ffad61286b..1eeec5fb4351dcd790141bc09ca42f09cc8a8be1 100644 (file)
@@ -26,6 +26,7 @@
 #include "virerror.h"
 #include "internal.h"
 #include "storage_file_backend.h"
+#include "storage_file_backend_fs.h"
 #include "virlog.h"
 #include "virmodule.h"
 #include "virfile.h"
@@ -40,7 +41,7 @@ VIR_LOG_INIT("storage.storage_source_backend");
 static virStorageFileBackend *virStorageFileBackends[VIR_STORAGE_BACKENDS_MAX];
 static size_t virStorageFileBackendsCount;
 
-#if WITH_STORAGE_DIR || WITH_STORAGE_FS || WITH_STORAGE_GLUSTER
+#if WITH_STORAGE_GLUSTER
 
 # define STORAGE_FILE_MODULE_DIR LIBDIR "/libvirt/storage-file"
 
@@ -64,14 +65,14 @@ virStorageFileLoadBackendModule(const char *name,
 
     return ret;
 }
-#endif /* WITH_STORAGE_DIR || WITH_STORAGE_FS || WITH_STORAGE_GLUSTER */
+#endif /* WITH_STORAGE_GLUSTER */
 
 static int virStorageFileBackendOnceInit(void)
 {
-#if WITH_STORAGE_DIR || WITH_STORAGE_FS
-    if (virStorageFileLoadBackendModule("fs", "virStorageFileFsRegister", false) < 0)
+    /* The backend for local files is compiled in */
+    if (virStorageFileFsRegister() < 0)
         return -1;
-#endif /* WITH_STORAGE_DIR || WITH_STORAGE_FS */
+
 #if WITH_STORAGE_GLUSTER
     if (virStorageFileLoadBackendModule("gluster", "virStorageFileGlusterRegister", false) < 0)
         return -1;