virtio-blk: cleanup: init and exit functions.
As all virtio-blk-* are switched to the new API, we can remove the separate init/exit for the old API. Signed-off-by: KONRAD Frederic <fred.konrad@greensocs.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 1363624648-16906-10-git-send-email-fred.konrad@greensocs.com Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
		
							parent
							
								
									3400c45504
								
							
						
					
					
						commit
						05ff686536
					
				| @ -630,102 +630,59 @@ void virtio_blk_set_conf(DeviceState *dev, VirtIOBlkConf *blk) | ||||
|     memcpy(&(s->blk), blk, sizeof(struct VirtIOBlkConf)); | ||||
| } | ||||
| 
 | ||||
| static VirtIODevice *virtio_blk_common_init(DeviceState *dev, | ||||
|                                           VirtIOBlkConf *blk, VirtIOBlock **ps) | ||||
| static int virtio_blk_device_init(VirtIODevice *vdev) | ||||
| { | ||||
|     VirtIOBlock *s = *ps; | ||||
|     DeviceState *qdev = DEVICE(vdev); | ||||
|     VirtIOBlock *s = VIRTIO_BLK(vdev); | ||||
|     VirtIOBlkConf *blk = &(s->blk); | ||||
|     static int virtio_blk_id; | ||||
| 
 | ||||
|     if (!blk->conf.bs) { | ||||
|         error_report("drive property not set"); | ||||
|         return NULL; | ||||
|         return -1; | ||||
|     } | ||||
|     if (!bdrv_is_inserted(blk->conf.bs)) { | ||||
|         error_report("Device needs media, but drive is empty"); | ||||
|         return NULL; | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     blkconf_serial(&blk->conf, &blk->serial); | ||||
|     if (blkconf_geometry(&blk->conf, NULL, 65535, 255, 255) < 0) { | ||||
|         return NULL; | ||||
|         return -1; | ||||
|     } | ||||
| 
 | ||||
|     /*
 | ||||
|      * We have two cases here: the old virtio-blk-pci device, and the | ||||
|      * refactored virtio-blk. | ||||
|      */ | ||||
|     if (s == NULL) { | ||||
|         /* virtio-blk-pci */ | ||||
|         s = (VirtIOBlock *)virtio_common_init("virtio-blk", VIRTIO_ID_BLOCK, | ||||
|                                               sizeof(struct virtio_blk_config), | ||||
|                                               sizeof(VirtIOBlock)); | ||||
|     } else { | ||||
|         /* virtio-blk */ | ||||
|         virtio_init(VIRTIO_DEVICE(s), "virtio-blk", VIRTIO_ID_BLOCK, | ||||
|                     sizeof(struct virtio_blk_config)); | ||||
|     } | ||||
|     virtio_init(vdev, "virtio-blk", VIRTIO_ID_BLOCK, | ||||
|                 sizeof(struct virtio_blk_config)); | ||||
| 
 | ||||
|     s->vdev.get_config = virtio_blk_update_config; | ||||
|     s->vdev.set_config = virtio_blk_set_config; | ||||
|     s->vdev.get_features = virtio_blk_get_features; | ||||
|     s->vdev.set_status = virtio_blk_set_status; | ||||
|     s->vdev.reset = virtio_blk_reset; | ||||
|     vdev->get_config = virtio_blk_update_config; | ||||
|     vdev->set_config = virtio_blk_set_config; | ||||
|     vdev->get_features = virtio_blk_get_features; | ||||
|     vdev->set_status = virtio_blk_set_status; | ||||
|     vdev->reset = virtio_blk_reset; | ||||
|     s->bs = blk->conf.bs; | ||||
|     s->conf = &blk->conf; | ||||
|     memcpy(&(s->blk), blk, sizeof(struct VirtIOBlkConf)); | ||||
|     s->rq = NULL; | ||||
|     s->sector_mask = (s->conf->logical_block_size / BDRV_SECTOR_SIZE) - 1; | ||||
| 
 | ||||
|     s->vq = virtio_add_queue(&s->vdev, 128, virtio_blk_handle_output); | ||||
|     s->vq = virtio_add_queue(vdev, 128, virtio_blk_handle_output); | ||||
| #ifdef CONFIG_VIRTIO_BLK_DATA_PLANE | ||||
|     if (!virtio_blk_data_plane_create(&s->vdev, blk, &s->dataplane)) { | ||||
|         virtio_cleanup(&s->vdev); | ||||
|         return NULL; | ||||
|     if (!virtio_blk_data_plane_create(vdev, blk, &s->dataplane)) { | ||||
|         virtio_cleanup(vdev); | ||||
|         return -1; | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|     s->change = qemu_add_vm_change_state_handler(virtio_blk_dma_restart_cb, s); | ||||
|     s->qdev = dev; | ||||
|     register_savevm(dev, "virtio-blk", virtio_blk_id++, 2, | ||||
|     s->qdev = qdev; | ||||
|     register_savevm(qdev, "virtio-blk", virtio_blk_id++, 2, | ||||
|                     virtio_blk_save, virtio_blk_load, s); | ||||
|     bdrv_set_dev_ops(s->bs, &virtio_block_ops, s); | ||||
|     bdrv_set_buffer_alignment(s->bs, s->conf->logical_block_size); | ||||
| 
 | ||||
|     bdrv_iostatus_enable(s->bs); | ||||
|     add_boot_device_path(s->conf->bootindex, dev, "/disk@0,0"); | ||||
| 
 | ||||
|     return &s->vdev; | ||||
| } | ||||
| 
 | ||||
| VirtIODevice *virtio_blk_init(DeviceState *dev, VirtIOBlkConf *blk) | ||||
| { | ||||
|     VirtIOBlock *s = NULL; | ||||
|     return virtio_blk_common_init(dev, blk, &s); | ||||
| } | ||||
| 
 | ||||
| void virtio_blk_exit(VirtIODevice *vdev) | ||||
| { | ||||
|     VirtIOBlock *s = to_virtio_blk(vdev); | ||||
| 
 | ||||
| #ifdef CONFIG_VIRTIO_BLK_DATA_PLANE | ||||
|     virtio_blk_data_plane_destroy(s->dataplane); | ||||
|     s->dataplane = NULL; | ||||
| #endif | ||||
|     qemu_del_vm_change_state_handler(s->change); | ||||
|     unregister_savevm(s->qdev, "virtio-blk", s); | ||||
|     blockdev_mark_auto_del(s->bs); | ||||
|     virtio_cleanup(vdev); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| static int virtio_blk_device_init(VirtIODevice *vdev) | ||||
| { | ||||
|     DeviceState *qdev = DEVICE(vdev); | ||||
|     VirtIOBlock *s = VIRTIO_BLK(vdev); | ||||
|     VirtIOBlkConf *blk = &(s->blk); | ||||
|     if (virtio_blk_common_init(qdev, blk, &s) == NULL) { | ||||
|         return -1; | ||||
|     } | ||||
|     add_boot_device_path(s->conf->bootindex, qdev, "/disk@0,0"); | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -240,7 +240,6 @@ void virtio_bind_device(VirtIODevice *vdev, const VirtIOBindings *binding, | ||||
| 
 | ||||
| /* Base devices.  */ | ||||
| typedef struct VirtIOBlkConf VirtIOBlkConf; | ||||
| VirtIODevice *virtio_blk_init(DeviceState *dev, VirtIOBlkConf *blk); | ||||
| struct virtio_net_conf; | ||||
| VirtIODevice *virtio_net_init(DeviceState *dev, NICConf *conf, | ||||
|                               struct virtio_net_conf *net, | ||||
| @ -258,7 +257,6 @@ VirtIODevice *virtio_9p_init(DeviceState *dev, V9fsConf *conf); | ||||
| 
 | ||||
| 
 | ||||
| void virtio_net_exit(VirtIODevice *vdev); | ||||
| void virtio_blk_exit(VirtIODevice *vdev); | ||||
| void virtio_serial_exit(VirtIODevice *vdev); | ||||
| void virtio_balloon_exit(VirtIODevice *vdev); | ||||
| void virtio_scsi_exit(VirtIODevice *vdev); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 KONRAD Frederic
						KONRAD Frederic