Message ID | 20170113205237.30386-5-mreitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 01/13/2017 02:52 PM, Max Reitz wrote: > bdrv_refresh_filename() can do the same and it has some checks whether > the filename can actually be inherited or not, so we can let it do its > job in bdrv_open_inherit() after bdrv_open_common() has been called. > > The only thing we need to set in bdrv_open_common() is the > exact_filename of a BDS without an underlying file, for two reasons: > (1) It cannot be inherited from an underlying file BDS, so it has to be > set somewhere. > (2) The driver may need the filename in its bdrv_file_open() > implementation (format drivers do not need their own filename, > though they may need their file BDS's name). > > Signed-off-by: Max Reitz <mreitz@redhat.com> > --- > block.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > Reviewed-by: Eric Blake <eblake@redhat.com>
diff --git a/block.c b/block.c index 9943d8eff6..19f8a84d03 100644 --- a/block.c +++ b/block.c @@ -1116,12 +1116,11 @@ static int bdrv_open_common(BlockDriverState *bs, BdrvChild *file, bs->detect_zeroes = value; } - if (filename != NULL) { - pstrcpy(bs->filename, sizeof(bs->filename), filename); + if (!file && filename) { + pstrcpy(bs->exact_filename, sizeof(bs->exact_filename), filename); } else { - bs->filename[0] = '\0'; + assert(!drv->bdrv_needs_filename); } - pstrcpy(bs->exact_filename, sizeof(bs->exact_filename), bs->filename); bs->drv = drv; bs->opaque = g_malloc0(drv->instance_size);
bdrv_refresh_filename() can do the same and it has some checks whether the filename can actually be inherited or not, so we can let it do its job in bdrv_open_inherit() after bdrv_open_common() has been called. The only thing we need to set in bdrv_open_common() is the exact_filename of a BDS without an underlying file, for two reasons: (1) It cannot be inherited from an underlying file BDS, so it has to be set somewhere. (2) The driver may need the filename in its bdrv_file_open() implementation (format drivers do not need their own filename, though they may need their file BDS's name). Signed-off-by: Max Reitz <mreitz@redhat.com> --- block.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)