cow.c: replace QEMUOptionParameter with QemuOpts
Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com> Signed-off-by: Chunyan Liu <cyliu@suse.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 Stefan Hajnoczi
						Stefan Hajnoczi
					
				
			
			
				
	
			
			
			
						parent
						
							facdbb0272
						
					
				
				
					commit
					25814e8987
				
			
							
								
								
									
										54
									
								
								block/cow.c
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								block/cow.c
									
									
									
									
									
								
							| @@ -324,31 +324,24 @@ static void cow_close(BlockDriverState *bs) | ||||
| { | ||||
| } | ||||
|  | ||||
| static int cow_create(const char *filename, QEMUOptionParameter *options, | ||||
|                       Error **errp) | ||||
| static int cow_create(const char *filename, QemuOpts *opts, Error **errp) | ||||
| { | ||||
|     struct cow_header_v2 cow_header; | ||||
|     struct stat st; | ||||
|     int64_t image_sectors = 0; | ||||
|     const char *image_filename = NULL; | ||||
|     char *image_filename = NULL; | ||||
|     Error *local_err = NULL; | ||||
|     int ret; | ||||
|     BlockDriverState *cow_bs; | ||||
|  | ||||
|     /* Read out options */ | ||||
|     while (options && options->name) { | ||||
|         if (!strcmp(options->name, BLOCK_OPT_SIZE)) { | ||||
|             image_sectors = options->value.n / 512; | ||||
|         } else if (!strcmp(options->name, BLOCK_OPT_BACKING_FILE)) { | ||||
|             image_filename = options->value.s; | ||||
|         } | ||||
|         options++; | ||||
|     } | ||||
|     image_sectors = qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0) / 512; | ||||
|     image_filename = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FILE); | ||||
|  | ||||
|     ret = bdrv_create_file(filename, options, NULL, &local_err); | ||||
|     ret = bdrv_create_file(filename, NULL, opts, &local_err); | ||||
|     if (ret < 0) { | ||||
|         error_propagate(errp, local_err); | ||||
|         return ret; | ||||
|         goto exit; | ||||
|     } | ||||
|  | ||||
|     cow_bs = NULL; | ||||
| @@ -356,7 +349,7 @@ static int cow_create(const char *filename, QEMUOptionParameter *options, | ||||
|                     BDRV_O_RDWR | BDRV_O_PROTOCOL, NULL, &local_err); | ||||
|     if (ret < 0) { | ||||
|         error_propagate(errp, local_err); | ||||
|         return ret; | ||||
|         goto exit; | ||||
|     } | ||||
|  | ||||
|     memset(&cow_header, 0, sizeof(cow_header)); | ||||
| @@ -389,22 +382,27 @@ static int cow_create(const char *filename, QEMUOptionParameter *options, | ||||
|     } | ||||
|  | ||||
| exit: | ||||
|     g_free(image_filename); | ||||
|     bdrv_unref(cow_bs); | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| static QEMUOptionParameter cow_create_options[] = { | ||||
|     { | ||||
|         .name = BLOCK_OPT_SIZE, | ||||
|         .type = OPT_SIZE, | ||||
|         .help = "Virtual disk size" | ||||
|     }, | ||||
|     { | ||||
|         .name = BLOCK_OPT_BACKING_FILE, | ||||
|         .type = OPT_STRING, | ||||
|         .help = "File name of a base image" | ||||
|     }, | ||||
|     { NULL } | ||||
| static QemuOptsList cow_create_opts = { | ||||
|     .name = "cow-create-opts", | ||||
|     .head = QTAILQ_HEAD_INITIALIZER(cow_create_opts.head), | ||||
|     .desc = { | ||||
|         { | ||||
|             .name = BLOCK_OPT_SIZE, | ||||
|             .type = QEMU_OPT_SIZE, | ||||
|             .help = "Virtual disk size" | ||||
|         }, | ||||
|         { | ||||
|             .name = BLOCK_OPT_BACKING_FILE, | ||||
|             .type = QEMU_OPT_STRING, | ||||
|             .help = "File name of a base image" | ||||
|         }, | ||||
|         { /* end of list */ } | ||||
|     } | ||||
| }; | ||||
|  | ||||
| static BlockDriver bdrv_cow = { | ||||
| @@ -414,14 +412,14 @@ static BlockDriver bdrv_cow = { | ||||
|     .bdrv_probe     = cow_probe, | ||||
|     .bdrv_open      = cow_open, | ||||
|     .bdrv_close     = cow_close, | ||||
|     .bdrv_create    = cow_create, | ||||
|     .bdrv_create2   = cow_create, | ||||
|     .bdrv_has_zero_init     = bdrv_has_zero_init_1, | ||||
|  | ||||
|     .bdrv_read              = cow_co_read, | ||||
|     .bdrv_write             = cow_co_write, | ||||
|     .bdrv_co_get_block_status   = cow_co_get_block_status, | ||||
|  | ||||
|     .create_options = cow_create_options, | ||||
|     .create_opts    = &cow_create_opts, | ||||
| }; | ||||
|  | ||||
| static void bdrv_cow_init(void) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user