qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH v2 00/11] block: Deal with filters


From: Eric Blake
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH v2 00/11] block: Deal with filters
Date: Fri, 9 Nov 2018 16:47:57 -0600
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.3.0

On 8/9/18 5:31 PM, Max Reitz wrote:
Note 1: This series depends on v10 of my “block: Fix some filename
generation issues” series.

Based-on: <address@hidden>

Note 2: This is technically the first part of my active mirror followup.
But just very technically.  I noticed that that followup started to
consist of two parts, namely (A) fix filtery things in the block layer,
and (B) fix active mirror.  So I decided to split it.  This is part A.
Part B comes later.


When we introduced filters, we did it a bit casually.  Sure, we talked a
lot about them before, but that was mostly discussion about where
implicit filters should be added to the graph (note that we currently
only have two implicit filters, those being mirror and commit).  But in
the end, we really just designated some drivers filters (Quorum,
blkdebug, etc.) and added some specifically (throttle, COR), without
really looking through the block layer to see where issues might occur.

It turns out vast areas of the block layer just don't know about filters
and cannot really handle them.  Many cases will work in practice, in
others, well, too bad, you cannot use some feature because some part
deep inside the block layer looks at your filters and thinks they are
format nodes.

This series sets out to correct a bit of that.  I lost my head many
times and I'm sure this series is incomplete in many ways, but it really
doesn't do any good if it sits on my disk any longer, it needs to go out
now.

Is there any of this series that still needs to go in 3.1?

I'm trying to fix an NBD bug with incorrect alignment in response to NBD_CMD_BLOCK_STATUS. I wanted to use blkdebug to force a larger-than-512 minimum alignment exposure to the guest. But right now, nbd/server.c:nbd_export_bitmap() does a braindead:

    while (true) {
        bm = bdrv_find_dirty_bitmap(bs, bitmap);
        if (bm != NULL || bs->backing == NULL) {
            break;
        }

        bs = bs->backing->bs;
    }

which fails to see through a blkdebug filter to find a dirty bitmap in the underlying qcow2 BDS (because blkdebug uses bs->file, not bs->backing). It looks like your series will make my task a lot easier, but if it's not going in for 3.1, I still need to push my bug fix now, and defer the testsuite additions to later when we can more sanely see through filters.

--
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org



reply via email to

[Prev in Thread] Current Thread [Next in Thread]