• P
    raw-posix: add support for write_zeroes on XFS and block devices · 97a2ae34
    Paolo Bonzini 提交于
    The code is similar to the implementation of discard and write_zeroes
    with UNMAP.  However, failure must be propagated up to block.c.
    
    The stale page cache problem can be reproduced as follows:
    
        # modprobe scsi-debug lbpws=1 lbprz=1
        # ./qemu-io /dev/sdXX
        qemu-io> write -P 0xcc 0 2M
        qemu-io> write -z 0 1M
        qemu-io> read -P 0x00 0 512
        Pattern verification failed at offset 0, 512 bytes
        qemu-io> read -v 0 512
        00000000:  cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc cc  ................
        ...
    
        # ./qemu-io --cache=none /dev/sdXX
        qemu-io> write -P 0xcc 0 2M
        qemu-io> write -z 0 1M
        qemu-io> read -P 0x00 0 512
        qemu-io> read -v 0 512
        00000000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        ...
    
    And similarly with discard instead of "write -z".
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: NStefan Hajnoczi <stefanha@redhat.com>
    97a2ae34
raw-posix.c 56.2 KB