File fs-storage-driver.patch of Package libvirt

Index: libvirt-0.4.5/src/storage_backend_fs.c
===================================================================
--- libvirt-0.4.5.orig/src/storage_backend_fs.c
+++ libvirt-0.4.5/src/storage_backend_fs.c
@@ -583,7 +583,9 @@ virStorageBackendFileSystemIsMounted(vir
                                      virStoragePoolObjPtr pool) {
     FILE *mtab;
     struct mntent *ent;
-
+    char *mpoint;
+    size_t len;
+    
     if ((mtab = fopen(_PATH_MOUNTED, "r")) == NULL) {
         virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
                               _("cannot read %s: %s"),
@@ -591,14 +593,27 @@ virStorageBackendFileSystemIsMounted(vir
         return -1;
     }
 
+    if ((mpoint = strdup(pool->def->target.path)) == NULL) {
+        virStorageReportError(conn, VIR_ERR_NO_MEMORY,
+                                  "%s", strerror(errno));
+        return -1;
+    }
+    
+    len = strlen(mpoint);
+    if (mpoint[len-1] == '/')
+       mpoint[len-1] = NULL;
+    
+
     while ((ent = getmntent(mtab)) != NULL) {
-        if (STREQ(ent->mnt_dir, pool->def->target.path)) {
+        if (STREQ(ent->mnt_dir, mpoint)) {
             fclose(mtab);
+            free(mpoint);
             return 1;
         }
     }
 
     fclose(mtab);
+    free(mpoint);
     return 0;
 }
 
@@ -951,12 +966,16 @@ virStorageBackendFileSystemDelete(virCon
 {
     /* XXX delete all vols first ? */
 
+   /* target.path is never created AFAIKT, so dont delete it. */
+#if 0
+
     if (unlink(pool->def->target.path) < 0) {
         virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
                               _("cannot unlink path '%s': %s"),
                               pool->def->target.path, strerror(errno));
         return -1;
     }
+#endif
 
     return 0;
 }
openSUSE Build Service is sponsored by