[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared bas
From: |
Kevin Wolf |
Subject: |
Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node |
Date: |
Wed, 20 Mar 2019 10:16:10 +0100 |
User-agent: |
Mutt/1.11.3 (2019-02-01) |
Am 19.03.2019 um 17:19 hat Alberto Garcia geschrieben:
> On Mon 18 Mar 2019 04:25:10 PM CET, Vladimir Sementsov-Ogievskiy
> <address@hidden> wrote:
> >> So what we have now is:
> >>
> >> A <- B <- C <- D <- E <- F <- G <- H <- I
> >>
> >> and we can launch four parallel block-stream jobs:
> >>
> >> From C (base) to A
> >> From E (base) to C
> >> From G (base) to E
> >> From I (base) to G
> >>
> >> These jobs share nodes (the base node of each one is the active node of
> >> the next), but that's ok. From the base node we only require that the
> >> guest-visible data does not change.
> >
> > But with filters you cant.
> >
> > assume that "From E (base) to C" is already running. It means, that
> > there is a filter inserted between B and C. Then you want to start
> > "From C (base) to A". But it's illegal, because this range includes
> > filter, which belong to "From E (base) to C".
>
> Oh, I see. Let's use a shorter chain for simplicity:
>
> A <- B <- C <- D <- E
Written from right to left, i.e. E being the base and A the top layer?
We usually write things the other write round, I hope this doesn't get
too confusing later.
> 1) If we stream first from E to C we add a filter F:
>
> A <- B <- F <- C <- D <- E
>
> Now we can't stream from C to A because F is on the way, and the F-C
> link is frozen.
Why is a frozen link a problem? The streaming operation isn't going to
change this link, it just copies data from the subchain (including F and
C) to A. This is not something that a frozen link should prevent.
Now if we assume that the C to A job completes first, we still wouldn't
change the link F -> C, it would still point to C. But what would happen
is indeed wrong:
F
|
A ---+-> C -> D -> E
I don't see why frozen backing file links should prevent this, but it's
still wrong.
You would get the correct result if your second job is from F to A. If
the second job finishes first, this works trivially. However, if the
first job finished first and wants to remove F and therefore change the
parent links from F to C, the frozen link B -> F of the second job
would be a problem.
So it seems frozen links allow the wrong case, but block the correct
one? :-(
> 2) If we stream first from C to A the filter goes on top of A:
>
> F <- A <- B <- C <- D <- E
>
> But now we can't stream from E to C, because that would insert a
> filter between B and C and that link is frozen.
>
> I think it's unfortunate that implemeting block-stream with a filter
> restricts this kind of scenarios, but I don't see a simple solution, and
> I don't think this use case justifies making the code more complicated.
Maybe at least this kind of freezing isn't the right tool for block
jobs, after all.
Kevin
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/18
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Vladimir Sementsov-Ogievskiy, 2019/03/18
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/19
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node,
Kevin Wolf <=
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Vladimir Sementsov-Ogievskiy, 2019/03/20
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/20
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Vladimir Sementsov-Ogievskiy, 2019/03/21
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/21
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Kevin Wolf, 2019/03/21
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/21
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/20
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Kevin Wolf, 2019/03/21
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Vladimir Sementsov-Ogievskiy, 2019/03/21
- Re: [Qemu-block] [PATCH 1/2] iotests: 030 TestParallelOps non-shared base node, Alberto Garcia, 2019/03/21