From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:41735) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fYrjC-0001ro-47 for qemu-devel@nongnu.org; Fri, 29 Jun 2018 07:38:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fYriz-0005H5-G8 for qemu-devel@nongnu.org; Fri, 29 Jun 2018 07:38:14 -0400 From: Alberto Garcia Date: Fri, 29 Jun 2018 14:36:58 +0300 Message-Id: Subject: [Qemu-devel] [PATCH 0/5] Some bs->options fixes List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qemu-block@nongnu.org, Kevin Wolf , Max Reitz , Alberto Garcia Hi everyone, this is part of the blockdev-reopen work that I'm doing, but since I'll be away during most of July I thought that I could send already a couple of patches that I think are ready and don't need anything else from the rest of the series. There's two main fixes here: 1) bs->options are not kept up to date after an image is reopened and no longer reflect its state. 2) bs->options and bs->explicit_options also contain the options of a BDS's children, so there's data that is duplicated and will be inconsistent as soon as you change the children's options directly. The fix for (2) involves removing all children options from both QDicts. In the cases of node name references ("backing": "node-name") those remain in the QDict (they're technically parent options). I think we don't really need them and it should be possible to get rid of them, but it's a little more complicated (we need them during bdrv_reopen() to ensure that the user didn't try to change any of them). Regards, Berto Alberto Garcia (5): qdict: Make qdict_extract_subqdict() accept dst = NULL block: Remove children options from bs->{options,explicit_options} block: Simplify bdrv_reopen_abort() block: Update bs->options if bdrv_reopen() succeeds block: Simplify append_open_options() block.c | 42 +++++++++++++++++++++++++++++++----------- qobject/block-qdict.c | 11 ++++++++--- 2 files changed, 39 insertions(+), 14 deletions(-) -- 2.11.0