block/ssh: Set bdrv_has_zero_init according to the file type.
authorRichard W.M. Jones <rjones@redhat.com>
Tue, 25 Jun 2013 17:15:18 +0000 (18:15 +0100)
committerKevin Wolf <kwolf@redhat.com>
Fri, 28 Jun 2013 07:20:27 +0000 (09:20 +0200)
commit0b3f21e6a99c025c829d342ee417f317fe2e03b2
treed3c0f60d84e2990f74af296af8b6f752a3c1ad74
parentf59fee8d509b446df24843c1145a99b740492725
block/ssh: Set bdrv_has_zero_init according to the file type.

If the remote is a regular file, set it to true (ie. reads of
uninitialized areas in a newly created file will return zeroes).
If we can't prove that, return false (a safe default).

Tested by adding a debugging print statement [not part of this commit]
and creating a remote file and a remote block device:

  $ ./qemu-img create ssh://localhost/tmp/new 100M
  Formatting 'ssh://localhost/tmp/new', fmt=raw size=104857600
  filename ssh://localhost/tmp/new: has_zero_init = 1
  $ sudo lvcreate -L 1G -n tmp /dev/fedora
    Logical volume "tmp" created
  $ ./qemu-img create ssh://localhost/dev/fedora/tmp 1G
  Formatting 'ssh://localhost/dev/fedora/tmp', fmt=raw size=1073741824
  filename ssh://localhost/dev/fedora/tmp: has_zero_init = 0

Cc: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/ssh.c