]> git.proxmox.com Git - mirror_qemu.git/blobdiff - hw/qdev-properties.c
blockdev: Clean up automatic drive deletion
[mirror_qemu.git] / hw / qdev-properties.c
index 5b7fd77d44f77ff95fdea90b0cecd14118d8631b..d7dc234e2530c8e0f5a371e021b18518020c58bd 100644 (file)
@@ -313,6 +313,15 @@ static int parse_drive(DeviceState *dev, Property *prop, const char *str)
     return 0;
 }
 
+static void free_drive(DeviceState *dev, Property *prop)
+{
+    DriveInfo **ptr = qdev_get_prop_ptr(dev, prop);
+
+    if (*ptr) {
+        blockdev_auto_del((*ptr)->bdrv);
+    }
+}
+
 static int print_drive(DeviceState *dev, Property *prop, char *dest, size_t len)
 {
     DriveInfo **ptr = qdev_get_prop_ptr(dev, prop);
@@ -325,6 +334,7 @@ PropertyInfo qdev_prop_drive = {
     .size  = sizeof(DriveInfo*),
     .parse = parse_drive,
     .print = print_drive,
+    .free  = free_drive,
 };
 
 /* --- character device --- */