qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH for-2.6 v2 1/3] mirror: Don't extend the last su


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH for-2.6 v2 1/3] mirror: Don't extend the last sub-chunk
Date: Wed, 20 Apr 2016 16:03:52 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 20.04.2016 um 04:48 hat Fam Zheng geschrieben:
> The last sub-chunk is rounded up to the copy granularity in the target
> image, resulting in a larger size than the source.
> 
> Add a function to clip the copied sectors to the end.
> 
> This undoes the "wrong" changes to tests/qemu-iotests/109.out in
> e5b43573e28. The remaining two offset changes are okay.
> 
> Reported-by: Kevin Wolf <address@hidden>
> Signed-off-by: Fam Zheng <address@hidden>

I think you're missing at least one place where we need DIV_ROUND_UP
now. Specifically I'm talking about the calculation of nb_chunks in
mirror_iteration_done(), which causes the partial last cluster to stay
marked as in-flight forever.

I would also have used DIV_ROUND_UP in mirror_iteration(), but there we
have a sector_num < end check which saves us from an endless loop.

In order to reproduce the bug, this hangs for me without DIV_ROUND_UP:

$ ls -l /tmp/test.raw
-rw-r--r--. 1 kwolf kwolf 1049600 20. Apr 15:57 /tmp/test.raw
$ (echo -e "drive_mirror none0 /tmp/copy.raw raw\n"; sleep 1; echo -e 'qemu-io 
none0 "write 1M 512"\nblock_job_complete none0\nquit') | 
x86_64-softmmu/qemu-system-x86_64 -drive if=none,file=/tmp/test.raw -monitor 
stdio

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]