block_int.h claims that .bdrv_has_zero_init must return 0 if
.bdrv_has_zero_init_truncate does likewise; but this is violated if
only the former callback is provided if .bdrv_co_truncate also exists.
When adding the latter callback, it was mistakenly added to only one
of the three possible sheepdog instantiations.
Fixes: 1dcaf527
Signed-off-by: Eric Blake <eblake@redhat.com>
---
block/sheepdog.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/block/sheepdog.c b/block/sheepdog.c
index cfa84338a2d6..522c16a93676 100644
--- a/block/sheepdog.c
+++ b/block/sheepdog.c
@@ -3269,6 +3269,7 @@ static BlockDriver bdrv_sheepdog_tcp = {
.bdrv_co_create = sd_co_create,
.bdrv_co_create_opts = sd_co_create_opts,
.bdrv_has_zero_init = bdrv_has_zero_init_1,
+ .bdrv_has_zero_init_truncate = bdrv_has_zero_init_1,
.bdrv_getlength = sd_getlength,
.bdrv_get_allocated_file_size = sd_get_allocated_file_size,
.bdrv_co_truncate = sd_co_truncate,
@@ -3307,6 +3308,7 @@ static BlockDriver bdrv_sheepdog_unix = {
.bdrv_co_create = sd_co_create,
.bdrv_co_create_opts = sd_co_create_opts,
.bdrv_has_zero_init = bdrv_has_zero_init_1,
+ .bdrv_has_zero_init_truncate = bdrv_has_zero_init_1,
.bdrv_getlength = sd_getlength,
.bdrv_get_allocated_file_size = sd_get_allocated_file_size,
.bdrv_co_truncate = sd_co_truncate,
--
2.26.0.rc2
On 3/24/20 1:42 PM, Eric Blake wrote: > block_int.h claims that .bdrv_has_zero_init must return 0 if > .bdrv_has_zero_init_truncate does likewise; but this is violated if > only the former callback is provided if .bdrv_co_truncate also exists. > When adding the latter callback, it was mistakenly added to only one > of the three possible sheepdog instantiations. > > Fixes: 1dcaf527 > Signed-off-by: Eric Blake <eblake@redhat.com> > --- > block/sheepdog.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/block/sheepdog.c b/block/sheepdog.c > index cfa84338a2d6..522c16a93676 100644 > --- a/block/sheepdog.c > +++ b/block/sheepdog.c > @@ -3269,6 +3269,7 @@ static BlockDriver bdrv_sheepdog_tcp = { > .bdrv_co_create = sd_co_create, > .bdrv_co_create_opts = sd_co_create_opts, > .bdrv_has_zero_init = bdrv_has_zero_init_1, > + .bdrv_has_zero_init_truncate = bdrv_has_zero_init_1, > .bdrv_getlength = sd_getlength, > .bdrv_get_allocated_file_size = sd_get_allocated_file_size, > .bdrv_co_truncate = sd_co_truncate, > @@ -3307,6 +3308,7 @@ static BlockDriver bdrv_sheepdog_unix = { > .bdrv_co_create = sd_co_create, > .bdrv_co_create_opts = sd_co_create_opts, > .bdrv_has_zero_init = bdrv_has_zero_init_1, > + .bdrv_has_zero_init_truncate = bdrv_has_zero_init_1, > .bdrv_getlength = sd_getlength, > .bdrv_get_allocated_file_size = sd_get_allocated_file_size, > .bdrv_co_truncate = sd_co_truncate, > Reviewed-by: John Snow <jsnow@redhat.com>
On 3/24/20 6:42 PM, Eric Blake wrote: > block_int.h claims that .bdrv_has_zero_init must return 0 if > .bdrv_has_zero_init_truncate does likewise; but this is violated if > only the former callback is provided if .bdrv_co_truncate also exists. > When adding the latter callback, it was mistakenly added to only one > of the three possible sheepdog instantiations. > > Fixes: 1dcaf527 > Signed-off-by: Eric Blake <eblake@redhat.com> > --- > block/sheepdog.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/block/sheepdog.c b/block/sheepdog.c > index cfa84338a2d6..522c16a93676 100644 > --- a/block/sheepdog.c > +++ b/block/sheepdog.c > @@ -3269,6 +3269,7 @@ static BlockDriver bdrv_sheepdog_tcp = { > .bdrv_co_create = sd_co_create, > .bdrv_co_create_opts = sd_co_create_opts, > .bdrv_has_zero_init = bdrv_has_zero_init_1, > + .bdrv_has_zero_init_truncate = bdrv_has_zero_init_1, > .bdrv_getlength = sd_getlength, > .bdrv_get_allocated_file_size = sd_get_allocated_file_size, > .bdrv_co_truncate = sd_co_truncate, > @@ -3307,6 +3308,7 @@ static BlockDriver bdrv_sheepdog_unix = { > .bdrv_co_create = sd_co_create, > .bdrv_co_create_opts = sd_co_create_opts, > .bdrv_has_zero_init = bdrv_has_zero_init_1, > + .bdrv_has_zero_init_truncate = bdrv_has_zero_init_1, > .bdrv_getlength = sd_getlength, > .bdrv_get_allocated_file_size = sd_get_allocated_file_size, > .bdrv_co_truncate = sd_co_truncate, > Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
© 2016 - 2025 Red Hat, Inc.