On 29.05.19 17:46, Vladimir Sementsov-Ogievskiy wrote: > Upcoming backup-top filter wants to operate like usual implicit filter > node with fall-through to backing child. But also needs additional > target child, let's support that. > > On the other hand, after backup completion (before job dismiss) filter > is still attached to job blk, but don't have any children. Support this > too. > > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > --- > block.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/block.c b/block.c > index 57216f4115..3f4de3ae32 100644 > --- a/block.c > +++ b/block.c > @@ -6200,9 +6200,20 @@ void bdrv_refresh_filename(BlockDriverState *bs) > } > > if (bs->implicit) { > - /* For implicit nodes, just copy everything from the single child */ > + /* > + * For implicit nodes, just copy everything from the single child or > + * from backing, if there are several children. > + * If there are no children for some reason (filter is still attached > + * to block-job blk, but already removed from backing chain of > device) > + * do nothing. > + */ > child = QLIST_FIRST(&bs->children); > - assert(QLIST_NEXT(child, next) == NULL); > + if (!child) { > + return; > + } else if (QLIST_NEXT(child, next)) { > + assert(bs->backing); > + child = bs->backing; > + } > > pstrcpy(bs->exact_filename, sizeof(bs->exact_filename), > child->bs->exact_filename);
Reviewed-by: Max Reitz <mre...@redhat.com> (To be changed to bdrv_filtered_rw_bs(), of course)
signature.asc
Description: OpenPGP digital signature