]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
storage: Check FS pool source during virStorageBackendFileSystemIsMounted
authorJohn Ferlan <jferlan@redhat.com>
Mon, 7 Dec 2015 13:35:57 +0000 (08:35 -0500)
committerJohn Ferlan <jferlan@redhat.com>
Tue, 15 Dec 2015 19:33:04 +0000 (14:33 -0500)
https://bugzilla.redhat.com/show_bug.cgi?id=1025230

When determining whether a FS pool is mounted, rather than assuming that
the FS pool is mounted just because the target.path is in the mount list,
let's make sure that the FS pool source matches what is mounted

src/storage/storage_backend_fs.c

index 3a6f130cc0357bb63a90350858c231f95c98d672..692c9ff17989541efced0596cd1bfa5403bcf288 100644 (file)
@@ -419,6 +419,7 @@ static int
 virStorageBackendFileSystemIsMounted(virStoragePoolObjPtr pool)
 {
     int ret = -1;
+    char *src = NULL;
     FILE *mtab;
     struct mntent ent;
     char buf[1024];
@@ -431,16 +432,23 @@ virStorageBackendFileSystemIsMounted(virStoragePoolObjPtr pool)
     }
 
     while ((getmntent_r(mtab, &ent, buf, sizeof(buf))) != NULL) {
-        if (STREQ(ent.mnt_dir, pool->def->target.path)) {
+        if (!(src = virStorageBackendFileSystemGetPoolSource(pool)))
+            goto cleanup;
+
+        if (STREQ(ent.mnt_dir, pool->def->target.path) &&
+            STREQ(ent.mnt_fsname, src)) {
             ret = 1;
             goto cleanup;
         }
+
+        VIR_FREE(src);
     }
 
     ret = 0;
 
  cleanup:
     VIR_FORCE_FCLOSE(mtab);
+    VIR_FREE(src);
     return ret;
 }