Message ID | 20190920152804.12875-15-mreitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: Fix check_to_replace_node() | expand |
20.09.2019 18:27, Max Reitz wrote: > Quorum is not a filter, for example because it cannot guarantee which of > its children will serve the next request. Thus, any of its children may > differ from the data visible to quorum's parents. > > We have other filters with multiple children, but they differ in this > aspect: > > - blkverify quits the whole qemu process if its children differ. As > such, we can always skip it when we want to skip it (as a filter node) > by going to any of its children. Both have the same data. > > - replication generally serves requests from bs->file, so this is its > only actually filtered child. > > - Block job filters currently only have one child, but they will > probably get more children in the future. Still, they will always > have only one actually filtered child. > > Having "filters" as a dedicated node category only makes sense if you > can skip them by going to a one fixed child that always shows the same > data as the filter node. Quorum cannot fulfill this, so it is not a > filter. > > Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > --- > block/quorum.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/block/quorum.c b/block/quorum.c > index 7a8f8b5475..7f56b4df7c 100644 > --- a/block/quorum.c > +++ b/block/quorum.c > @@ -1237,7 +1237,6 @@ static BlockDriver bdrv_quorum = { > > .bdrv_child_perm = quorum_child_perm, > > - .is_filter = true, > .bdrv_recurse_can_replace = quorum_recurse_can_replace, > > .strong_runtime_opts = quorum_strong_runtime_opts, >
diff --git a/block/quorum.c b/block/quorum.c index 7a8f8b5475..7f56b4df7c 100644 --- a/block/quorum.c +++ b/block/quorum.c @@ -1237,7 +1237,6 @@ static BlockDriver bdrv_quorum = { .bdrv_child_perm = quorum_child_perm, - .is_filter = true, .bdrv_recurse_can_replace = quorum_recurse_can_replace, .strong_runtime_opts = quorum_strong_runtime_opts,
Quorum is not a filter, for example because it cannot guarantee which of its children will serve the next request. Thus, any of its children may differ from the data visible to quorum's parents. We have other filters with multiple children, but they differ in this aspect: - blkverify quits the whole qemu process if its children differ. As such, we can always skip it when we want to skip it (as a filter node) by going to any of its children. Both have the same data. - replication generally serves requests from bs->file, so this is its only actually filtered child. - Block job filters currently only have one child, but they will probably get more children in the future. Still, they will always have only one actually filtered child. Having "filters" as a dedicated node category only makes sense if you can skip them by going to a one fixed child that always shows the same data as the filter node. Quorum cannot fulfill this, so it is not a filter. Signed-off-by: Max Reitz <mreitz@redhat.com> --- block/quorum.c | 1 - 1 file changed, 1 deletion(-)