On Sat, Dec 11, 2010 at 12:50:20PM +0000, Paul Brook wrote: > > It's guest visible state, so it must not change due to migrations. For > > the current implementation all values for it work anyway - if it's > > smaller than the block size we'll zero out the remainder of the block. > > That sounds wrong. Surely we should leave partial blocks untouched.
While zeroing them is not required for qemu, the general semantics of the XFS ioctl require it. It punches a hole, which means it's makes the new area equivalent to a hole create by truncating a file to a larger size and then only writing at the larger offset. The semantics for a hole in all Unix filesystems is that we read back zeroes from them. If we write into a sparse file at a not block aligned offset the zeroing of the partial block also happens.