Hi,

I used the qemu-img.exe to convert a disk to vmdk format and the output file 
size could be 300 MB. However the left space of the disk the output file 
located on was about 200 MB. After a while, the left space had been zero but 
the program didn't stop or report any error. It was just going on as normal.


I read the source code and found the error report was controlled by 
"BlockdevOnError on_read_error, on_write_error" in "struct BlockDriverState", 
which had the default value "BLOCKDEV_ON_ERROR_REPORT" for "on_read_error" and 
"BLOCKDEV_ON_ERROR_ENOSPC" for "on_writer_error". The qemu-img.exe had no 
option to change the default behavior of the error report.


So I think if there were some ways to change the default value of the error 
report, it might be better. Further more, I suggest we could just add some 
codes to the "img_convert" function:


      1827:    out_blk = img_open("target", out_filename, out_fmt, flags, true, 
quiet);
      1828:    if (!out_blk) {
      1829:        ret = -1;
      1830:        goto out;
      1831:    }
      1832:    out_bs = blk_bs(out_blk);

++ 1833:
++ 1834:    bdrv_set_on_error(out_bs, BLOCKDEV_ON_ERROR_REPORT, 
BLOCKDEV_ON_ERROR_REPORT);


Thanks,
Guangmu Zhu

Reply via email to