Revert "qemu-img: Check post-truncation size"
This reverts commit 5279b30392.
We no longer need this check because exact=true forces the block driver
to give the image the exact size requested by the user.
Signed-off-by: Max Reitz <mreitz@redhat.com>
Message-id: 20190918095144.955-9-mreitz@redhat.com
Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>
Signed-off-by: Max Reitz <mreitz@redhat.com>
			
			
This commit is contained in:
		
							
								
								
									
										39
									
								
								qemu-img.c
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								qemu-img.c
									
									
									
									
									
								
							@@ -3656,7 +3656,7 @@ static int img_resize(int argc, char **argv)
 | 
			
		||||
    Error *err = NULL;
 | 
			
		||||
    int c, ret, relative;
 | 
			
		||||
    const char *filename, *fmt, *size;
 | 
			
		||||
    int64_t n, total_size, current_size, new_size;
 | 
			
		||||
    int64_t n, total_size, current_size;
 | 
			
		||||
    bool quiet = false;
 | 
			
		||||
    BlockBackend *blk = NULL;
 | 
			
		||||
    PreallocMode prealloc = PREALLOC_MODE_OFF;
 | 
			
		||||
@@ -3837,42 +3837,11 @@ static int img_resize(int argc, char **argv)
 | 
			
		||||
     * success when the image has not actually been resized.
 | 
			
		||||
     */
 | 
			
		||||
    ret = blk_truncate(blk, total_size, true, prealloc, &err);
 | 
			
		||||
    if (ret < 0) {
 | 
			
		||||
    if (!ret) {
 | 
			
		||||
        qprintf(quiet, "Image resized.\n");
 | 
			
		||||
    } else {
 | 
			
		||||
        error_report_err(err);
 | 
			
		||||
        goto out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    new_size = blk_getlength(blk);
 | 
			
		||||
    if (new_size < 0) {
 | 
			
		||||
        error_report("Failed to verify truncated image length: %s",
 | 
			
		||||
                     strerror(-new_size));
 | 
			
		||||
        ret = -1;
 | 
			
		||||
        goto out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /* Some block drivers implement a truncation method, but only so
 | 
			
		||||
     * the user can cause qemu to refresh the image's size from disk.
 | 
			
		||||
     * The idea is that the user resizes the image outside of qemu and
 | 
			
		||||
     * then invokes block_resize to inform qemu about it.
 | 
			
		||||
     * (This includes iscsi and file-posix for device files.)
 | 
			
		||||
     * Of course, that is not the behavior someone invoking
 | 
			
		||||
     * qemu-img resize would find useful, so we catch that behavior
 | 
			
		||||
     * here and tell the user. */
 | 
			
		||||
    if (new_size != total_size && new_size == current_size) {
 | 
			
		||||
        error_report("Image was not resized; resizing may not be supported "
 | 
			
		||||
                     "for this image");
 | 
			
		||||
        ret = -1;
 | 
			
		||||
        goto out;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (new_size != total_size) {
 | 
			
		||||
        warn_report("Image should have been resized to %" PRIi64
 | 
			
		||||
                    " bytes, but was resized to %" PRIi64 " bytes",
 | 
			
		||||
                    total_size, new_size);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    qprintf(quiet, "Image resized.\n");
 | 
			
		||||
 | 
			
		||||
out:
 | 
			
		||||
    blk_unref(blk);
 | 
			
		||||
    if (ret) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user