block: Use error code EMEDIUMTYPE for wrong format in some block drivers
This improves error reports for bochs, cow, qcow, qcow2, qed and vmdk when a file with the wrong format is selected. Signed-off-by: Stefan Weil <sw@weilnetz.de> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									02582abd48
								
							
						
					
					
						commit
						15bac0d54f
					
				| 
						 | 
				
			
			@ -126,7 +126,7 @@ static int bochs_open(BlockDriverState *bs, int flags)
 | 
			
		|||
        strcmp(bochs.subtype, GROWING_TYPE) ||
 | 
			
		||||
	((le32_to_cpu(bochs.version) != HEADER_VERSION) &&
 | 
			
		||||
	(le32_to_cpu(bochs.version) != HEADER_V1))) {
 | 
			
		||||
        goto fail;
 | 
			
		||||
        return -EMEDIUMTYPE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (le32_to_cpu(bochs.version) == HEADER_V1) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,7 @@ static int cow_open(BlockDriverState *bs, int flags)
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    if (be32_to_cpu(cow_header.magic) != COW_MAGIC) {
 | 
			
		||||
        ret = -EINVAL;
 | 
			
		||||
        ret = -EMEDIUMTYPE;
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -112,7 +112,7 @@ static int qcow_open(BlockDriverState *bs, int flags)
 | 
			
		|||
    be64_to_cpus(&header.l1_table_offset);
 | 
			
		||||
 | 
			
		||||
    if (header.magic != QCOW_MAGIC) {
 | 
			
		||||
        ret = -EINVAL;
 | 
			
		||||
        ret = -EMEDIUMTYPE;
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
    if (header.version != QCOW_VERSION) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -311,7 +311,7 @@ static int qcow2_open(BlockDriverState *bs, int flags)
 | 
			
		|||
    be32_to_cpus(&header.nb_snapshots);
 | 
			
		||||
 | 
			
		||||
    if (header.magic != QCOW_MAGIC) {
 | 
			
		||||
        ret = -EINVAL;
 | 
			
		||||
        ret = -EMEDIUMTYPE;
 | 
			
		||||
        goto fail;
 | 
			
		||||
    }
 | 
			
		||||
    if (header.version < 2 || header.version > 3) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -390,7 +390,7 @@ static int bdrv_qed_open(BlockDriverState *bs, int flags)
 | 
			
		|||
    qed_header_le_to_cpu(&le_header, &s->header);
 | 
			
		||||
 | 
			
		||||
    if (s->header.magic != QED_MAGIC) {
 | 
			
		||||
        return -EINVAL;
 | 
			
		||||
        return -EMEDIUMTYPE;
 | 
			
		||||
    }
 | 
			
		||||
    if (s->header.features & ~QED_FEATURE_MASK) {
 | 
			
		||||
        /* image uses unsupported feature bits */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -616,7 +616,7 @@ static int vmdk_open_sparse(BlockDriverState *bs,
 | 
			
		|||
            return vmdk_open_vmdk4(bs, file, flags);
 | 
			
		||||
            break;
 | 
			
		||||
        default:
 | 
			
		||||
            return -EINVAL;
 | 
			
		||||
            return -EMEDIUMTYPE;
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -718,7 +718,7 @@ static int vmdk_open_desc_file(BlockDriverState *bs, int flags,
 | 
			
		|||
    }
 | 
			
		||||
    buf[2047] = '\0';
 | 
			
		||||
    if (vmdk_parse_description(buf, "createType", ct, sizeof(ct))) {
 | 
			
		||||
        return -EINVAL;
 | 
			
		||||
        return -EMEDIUMTYPE;
 | 
			
		||||
    }
 | 
			
		||||
    if (strcmp(ct, "monolithicFlat") &&
 | 
			
		||||
        strcmp(ct, "twoGbMaxExtentSparse") &&
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue