|
From: | Eric Blake |
Subject: | Re: [PATCH 0/4] block: Do not call BlockDriver.bdrv_make_empty() directly |
Date: | Tue, 28 Apr 2020 08:49:58 -0500 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 |
On 4/28/20 8:26 AM, Max Reitz wrote:
Branch: https://github.com/XanClic/qemu.git fix-bdrv_make_empty-v1 Branch: https://git.xanclic.moe/XanClic/qemu.git fix-bdrv_make_empty-v1 Hi, Right now, there is no centralized bdrv_make_empty() function. Not only is it bad style to call BlockDriver methods directly, it is also wrong, unless the caller has a BdrvChild with BLK_PERM_WRITE taken.
I'm also in the middle of writing a patch series that adds a corresponding .bdrv_make_empty driver callback. I'll rebase that work on top of this, as part of my efforts at fixing more code to rely on bdrv_make_empty rather than directly querying bdrv_has_zero_init[_truncate].
This series fixes that. Note that as far as I’m aware this series shouldn’t visibly fix anything at this point; but “block: Introduce real BdrvChildRole” (https://lists.nongnu.org/archive/html/qemu-block/2020-02/msg00737.html) makes the iotest break when run with -o data_file=$SOMETHING, without this series applied beforehand. (That is because without that series, external data files are treated much like metadata children, so the format driver always takes the WRITE permission if the file is writable; but after that series, it only does so when it itself has a parent requestion the WRITE permission.)
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org
[Prev in Thread] | Current Thread | [Next in Thread] |