Am 03.05.2016 um 14:50 hat Alberto Garcia geschrieben:
> On Fri 29 Apr 2016 05:18:26 PM CEST, Kevin Wolf wrote:
> > This patch errors out if we can't find the active layer. Sounds safe
> > and appropriate for an initial version. The real solution isn't to
> > improve the magic to find the root node, but to remove the need to
> > find it (by getting the new op blockers).
> 
> Well, I agree with the fact that what we really want is not to block the
> active layer at all, but I don't see how any new op blockers are going
> to solve that.
> 
> The situation is that we can't allow two block jobs in the same chain at
> the moment, and I only see three solutions:
> 
> a) each job blocks the whole chain (what this series does).
> 
> b) each job checks that no other job is running on the same chain.
>    Maybe cleaner? But it would require modifying all other jobs.
> 
> c) we fix bdrv_reopen() so we can actually run both jobs at the same
>    time. I'm wondering if pausing all block jobs between
>    bdrv_reopen_prepare() and bdrv_reopen_commit() would do the
>    trick. Opinions?

I would have to read up the details of the problem again, but I think
with bdrv_drained_begin/end() we actually have the right tool now to fix
it properly. We may need to pull up the drain (bdrv_drain_all() today)
from bdrv_reopen_multiple() to its caller and just assert it in the
function itself, but there shouldn't be much more to it than that.

Kevin

Reply via email to