]> git.proxmox.com Git - mirror_qemu.git/commit
nbd/client: Report offsets in bdrv_block_status
authorEric Blake <eblake@redhat.com>
Sun, 31 Mar 2019 01:28:37 +0000 (20:28 -0500)
committerEric Blake <eblake@redhat.com>
Sun, 31 Mar 2019 01:52:29 +0000 (20:52 -0500)
commita62a85ef5ccd764d03d72d6c3cd558f9755b3457
tree91ded8c66681fc0f25fdda3f9511db835eabe179
parent7da537f70d929800ba9c657b8a47a7b827695ccc
nbd/client: Report offsets in bdrv_block_status

It is desirable for 'qemu-img map' to have the same output for a file
whether it is served over file or nbd protocols. However, ever since
we implemented block status for NBD (2.12), the NBD protocol forgot to
inform the block layer that as the final layer in the chain, the
offset is valid; without an offset, the human-readable form of
qemu-img map gives up with the unhelpful:

$ nbdkit -U - data data="1" size=512 --run 'qemu-img map $nbd'
Offset          Length          Mapped to       File
qemu-img: File contains external, encrypted or compressed clusters.

The --output=json form always works, because it is reporting the
lower-level bdrv_block_status results directly rather than trying to
filter out sparse ranges for human consumption - but now it also
shows the offset member.

With this patch, the human output changes to:

Offset          Length          Mapped to       File
0               0x200           0               nbd+unix://?socket=/tmp/nbdkitOxeoLa/socket

This change is observable to several iotests.

Fixes: 78a33ab5
Reported-by: Richard W.M. Jones <rjones@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20190329042750.14704-4-eblake@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
block/nbd-client.c
tests/qemu-iotests/209.out
tests/qemu-iotests/223.out
tests/qemu-iotests/241.out