aboutsummaryrefslogtreecommitdiff
path: root/block
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2020-04-28 15:29:02 -0500
committerKevin Wolf <kwolf@redhat.com>2020-05-08 13:26:35 +0200
commitbe9c9404db7e6992946fa55c75ca61dfb20926eb (patch)
treed1c974e4a6679cb120caf44aa086c36bb8abf53a /block
parentfec00559e71c94749deac176f6c4bebf81fbe7b8 (diff)
ssh: Support BDRV_REQ_ZERO_WRITE for truncate
Our .bdrv_has_zero_init_truncate can detect when the remote side always zero fills; we can reuse that same knowledge to implement BDRV_REQ_ZERO_WRITE by ignoring it when the server gives it to us for free. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20200428202905.770727-7-eblake@redhat.com> Reviewed-by: Richard W.M. Jones <rjones@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block')
-rw-r--r--block/ssh.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/block/ssh.c b/block/ssh.c
index 9eb33df859..f9e08a4900 100644
--- a/block/ssh.c
+++ b/block/ssh.c
@@ -883,6 +883,10 @@ static int ssh_file_open(BlockDriverState *bs, QDict *options, int bdrv_flags,
/* Go non-blocking. */
ssh_set_blocking(s->session, 0);
+ if (s->attrs->type == SSH_FILEXFER_TYPE_REGULAR) {
+ bs->supported_truncate_flags = BDRV_REQ_ZERO_WRITE;
+ }
+
qapi_free_BlockdevOptionsSsh(opts);
return 0;