Il 18/07/2013 16:09, Peter Lieven ha scritto: > On 18.07.2013 15:52, Paolo Bonzini wrote: >> Il 18/07/2013 15:29, Peter Lieven ha scritto: >>>>> If the driver would have a better method of writing zeroes than >>>>> discard it simply should not set bdi->write_zeroes_w_discard = 1. >>>> If the driver had a better method of writing zeroes than discard, it >>>> simply should ignore the BDRV_MAY_UNMAP (or BDRV_MAY_DISCARD) flag in >>>> its bdrv_write_zeros implementation. >>> ok, but this would require an individual patch in every driver, wouldn't >>> it. i am ok with that. >> Yes (making the drivers return the flag in the BDI would also require >> per-driver patches). > we still might need a hint for qemu-img convert that the driver does > support > writing zeroes by unmap because using write_zeroes in the main loop > might result in unaligned requests that the target is not able to unmap. > and to avoid writing several blocks twice by first writing all zeroes > to the target and then writing all data blocks again I would need to > keep the loop > at the beginning of qemu-img convert to write zeroes with correct > alignment and granularity if the driver supports write_zeroes_w_discard.
(Mis)alignment and granularity can be handled later. We can ignore them for now. Later, if we decide the best way to support them is a flag, we'll add it. Let's not put the cart before the horse. BTW, I expect alignment!=0 to be really, really rare. Paolo