block: Use bdrv_dirname() for relative filenames
commit8df686165bacb8b2e6c0cae0cd29fd36b0f243ef
authorMax Reitz <mreitz@redhat.com>
Fri, 1 Feb 2019 19:29:23 +0000 (1 20:29 +0100)
committerMax Reitz <mreitz@redhat.com>
Mon, 25 Feb 2019 14:11:27 +0000 (25 15:11 +0100)
treec6135b6033a16fff3c3c0eb968d6dd469168adcd
parent0dcbc54a950986c5fbba5b2619fc4a33f92cb348
block: Use bdrv_dirname() for relative filenames

bdrv_get_full_backing_filename_from_filename() breaks down when it comes
to JSON filenames. Using bdrv_dirname() as the basis is better because
since we have BDS, we can descend through the BDS tree to the protocol
layer, which gives us a greater probability of finding a non-JSON name;
also, bdrv_dirname() is more correct as it allows block drivers to
override the generation of that directory name in a protocol-specific
way.

We still need to keep bdrv_get_full_backing_filename_from_filename(),
though, because it has valid callers which need it during image creation
when no BDS is available yet.

This makes a test case in qemu-iotest 110, which was supposed to fail,
work. That is actually good, but we need to change the reference output
(and the comment in 110) accordingly.

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Message-id: 20190201192935.18394-20-mreitz@redhat.com
Signed-off-by: Max Reitz <mreitz@redhat.com>
block.c
tests/qemu-iotests/110
tests/qemu-iotests/110.out