[libvirt] [PATCHv4 4/7] storage: add file functions for local and block files

Peter Krempa pkrempa at redhat.com
Mon Feb 3 16:54:28 UTC 2014


Implement the "stat" and "unlink" function for "file" volumes and "stat"
for "block volumes using the regular system calls.
---
 src/storage/storage_backend.c    |  2 ++
 src/storage/storage_backend_fs.c | 38 ++++++++++++++++++++++++++++++++++++++
 src/storage/storage_backend_fs.h |  2 ++
 3 files changed, 42 insertions(+)

diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
index b59b5b7..da81da9 100644
--- a/src/storage/storage_backend.c
+++ b/src/storage/storage_backend.c
@@ -123,6 +123,8 @@ static virStorageBackendPtr backends[] = {


 static virStorageFileBackendPtr fileBackends[] = {
+    &virStorageFileBackendFile,
+    &virStorageFileBackendBlock,
     NULL
 };

diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
index fa11e2f..7e55196 100644
--- a/src/storage/storage_backend_fs.c
+++ b/src/storage/storage_backend_fs.c
@@ -1327,4 +1327,42 @@ virStorageBackend virStorageBackendNetFileSystem = {
     .deleteVol = virStorageBackendFileSystemVolDelete,
     .resizeVol = virStorageBackendFileSystemVolResize,
 };
+
+
+static int
+virStorageFileBackendFileUnlink(virStorageFilePtr file)
+{
+    if (unlink(file->path) < 0)
+        return errno;
+
+    return 0;
+}
+
+
+static int
+virStorageFileBackendFileStat(virStorageFilePtr file,
+                              struct stat *st)
+{
+    if (stat(file->path, st) < 0)
+        return errno;
+
+    return 0;
+}
+
+
+virStorageFileBackend virStorageFileBackendFile = {
+    .type = VIR_DOMAIN_DISK_TYPE_FILE,
+
+    .storageFileUnlink = virStorageFileBackendFileUnlink,
+    .storageFileStat = virStorageFileBackendFileStat,
+};
+
+
+virStorageFileBackend virStorageFileBackendBlock = {
+    .type = VIR_DOMAIN_DISK_TYPE_BLOCK,
+
+    .storageFileStat = virStorageFileBackendFileStat,
+};
+
+
 #endif /* WITH_STORAGE_FS */
diff --git a/src/storage/storage_backend_fs.h b/src/storage/storage_backend_fs.h
index a519b38..347ea9b 100644
--- a/src/storage/storage_backend_fs.h
+++ b/src/storage/storage_backend_fs.h
@@ -38,4 +38,6 @@ typedef enum {
 } virStoragePoolProbeResult;
 extern virStorageBackend virStorageBackendDirectory;

+extern virStorageFileBackend virStorageFileBackendFile;
+extern virStorageFileBackend virStorageFileBackendBlock;
 #endif /* __VIR_STORAGE_BACKEND_FS_H__ */
-- 
1.8.5.3




More information about the libvir-list mailing list