block: Make essential BlockDriver objects public
There are some block drivers which are essential to QEMU and may not be removed: These are raw, file and qcow2 (as the default non-raw format). Make their BlockDriver objects public so they can be directly referenced throughout the block layer without needing to call bdrv_find_format() and having to deal with an error at runtime, while the real problem occurred during linking (where raw, file or qcow2 were not linked into qemu). Cc: qemu-stable@nongnu.org Signed-off-by: Max Reitz <mreitz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									b89689f5b2
								
							
						
					
					
						commit
						5f535a941e
					
				| 
						 | 
				
			
			@ -2847,7 +2847,7 @@ static QemuOptsList qcow2_create_opts = {
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static BlockDriver bdrv_qcow2 = {
 | 
			
		||||
BlockDriver bdrv_qcow2 = {
 | 
			
		||||
    .format_name        = "qcow2",
 | 
			
		||||
    .instance_size      = sizeof(BDRVQcowState),
 | 
			
		||||
    .bdrv_probe         = qcow2_probe,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1684,7 +1684,7 @@ static QemuOptsList raw_create_opts = {
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static BlockDriver bdrv_file = {
 | 
			
		||||
BlockDriver bdrv_file = {
 | 
			
		||||
    .format_name = "file",
 | 
			
		||||
    .protocol_name = "file",
 | 
			
		||||
    .instance_size = sizeof(BDRVRawState),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -540,7 +540,7 @@ static QemuOptsList raw_create_opts = {
 | 
			
		|||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static BlockDriver bdrv_file = {
 | 
			
		||||
BlockDriver bdrv_file = {
 | 
			
		||||
    .format_name	= "file",
 | 
			
		||||
    .protocol_name	= "file",
 | 
			
		||||
    .instance_size	= sizeof(BDRVRawState),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -235,7 +235,7 @@ static int raw_probe(const uint8_t *buf, int buf_size, const char *filename)
 | 
			
		|||
    return 1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static BlockDriver bdrv_raw = {
 | 
			
		||||
BlockDriver bdrv_raw = {
 | 
			
		||||
    .format_name          = "raw",
 | 
			
		||||
    .bdrv_probe           = &raw_probe,
 | 
			
		||||
    .bdrv_reopen_prepare  = &raw_reopen_prepare,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -414,6 +414,14 @@ struct BlockDriverState {
 | 
			
		|||
    Error *backing_blocker;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* Essential block drivers which must always be statically linked into qemu, and
 | 
			
		||||
 * which therefore can be accessed without using bdrv_find_format() */
 | 
			
		||||
extern BlockDriver bdrv_file;
 | 
			
		||||
extern BlockDriver bdrv_raw;
 | 
			
		||||
extern BlockDriver bdrv_qcow2;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int get_tmp_filename(char *filename, int size);
 | 
			
		||||
BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,
 | 
			
		||||
                            const char *filename);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue