]> xenbits.xensource.com Git - libvirt.git/commitdiff
storage: Implement virStorageFileCreate for local and gluster files
authorPeter Krempa <pkrempa@redhat.com>
Mon, 30 Jun 2014 13:05:07 +0000 (15:05 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Thu, 24 Jul 2014 07:59:00 +0000 (09:59 +0200)
Add backends for this frontend function so that we can use it in the
snapshot creation code.

src/storage/storage_backend_fs.c
src/storage/storage_backend_gluster.c

index 2af5ab52682bcde81a88be275b28d00193a37107..378c553f0c50088974d8e5acdebc03ba80b8e7e3 100644 (file)
@@ -1386,6 +1386,22 @@ virStorageFileBackendFileInit(virStorageSourcePtr src)
 }
 
 
+static int
+virStorageFileBackendFileCreate(virStorageSourcePtr src)
+{
+    int fd = -1;
+
+    if ((fd = virFileOpenAs(src->path, O_WRONLY | O_TRUNC | O_CREAT, 0,
+                            src->drv->uid, src->drv->gid, 0)) < 0) {
+        errno = -fd;
+        return -1;
+    }
+
+    VIR_FORCE_CLOSE(fd);
+    return 0;
+}
+
+
 static int
 virStorageFileBackendFileUnlink(virStorageSourcePtr src)
 {
@@ -1470,6 +1486,7 @@ virStorageFileBackend virStorageFileBackendFile = {
     .backendInit = virStorageFileBackendFileInit,
     .backendDeinit = virStorageFileBackendFileDeinit,
 
+    .storageFileCreate = virStorageFileBackendFileCreate,
     .storageFileUnlink = virStorageFileBackendFileUnlink,
     .storageFileStat = virStorageFileBackendFileStat,
     .storageFileReadHeader = virStorageFileBackendFileReadHeader,
index 052f58d208366e88c1feef47f1fad255a6945a53..38d02acfa28811282a68aefac8c6c594ae21652c 100644 (file)
@@ -633,6 +633,20 @@ virStorageFileBackendGlusterInit(virStorageSourcePtr src)
 }
 
 
+static int
+virStorageFileBackendGlusterCreate(virStorageSourcePtr src)
+{
+    virStorageFileBackendGlusterPrivPtr priv = src->drv->priv;
+    glfs_fd_t *fd = NULL;
+
+    if (!(fd = glfs_open(priv->vol, src->path, O_CREAT | O_TRUNC | O_WRONLY)))
+        return -1;
+
+    ignore_value(glfs_close(fd));
+    return 0;
+}
+
+
 static int
 virStorageFileBackendGlusterUnlink(virStorageSourcePtr src)
 {
@@ -780,6 +794,7 @@ virStorageFileBackend virStorageFileBackendGluster = {
     .backendInit = virStorageFileBackendGlusterInit,
     .backendDeinit = virStorageFileBackendGlusterDeinit,
 
+    .storageFileCreate = virStorageFileBackendGlusterCreate,
     .storageFileUnlink = virStorageFileBackendGlusterUnlink,
     .storageFileStat = virStorageFileBackendGlusterStat,
     .storageFileReadHeader = virStorageFileBackendGlusterReadHeader,