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
