qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, qemu-devel@nongnu.org,
	Alberto Garcia <berto@igalia.com>
Subject: Re: [Qemu-devel] [PATCH v8 03/26] block: Add BDS.backing_overridden
Date: Tue, 26 Jun 2018 19:34:20 +0200	[thread overview]
Message-ID: <e2b18fb9-af9e-c3b7-7def-0c13b3690d00@redhat.com> (raw)
In-Reply-To: <26a949be-bc67-7fef-3e66-59e9d7268cad@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2680 bytes --]

So, while tackling this once more, this is the current state, in short.

I wanted to add a new field BDS.backing_file_canonical which basically
gets set to bs->backing->bs->filename whenever we know that bs->backing
was opened through bs->backing_file.  That is,
bs->backing_file_canonical would be bs->backing_file, but after going
through the whole hoop of bdrv_open() and bdrv_refresh_filename().

With such a field, we could compare bs->backing->bs->filename against
bs->backing_file_canonical, and thus see whether the backing BDS matches
the image header filename.  I hope this would do the right thing
whenever qemu tries to figure out backing filenames on its own; it will
break, though, when the user just uses some filename and that doesn't
happen to coincide with qemu's generated filenames.

(For instance, if you create a new overlay manually, give it some
backing filename, and that backing filename isn't 1:1 what qemu would
reconstruct; and then you open that file with backing=null, and do a
blockdev-snapshot; then qemu will give you a json:{} filename for the
overlay because due to backing=null, it didn't open the overlay's
backing_file and thus doesn't know how it would look reconstructed.  But
I think that's something we could live with.)

((The only real way to fix this I can imagine is to clone the whole
bdrv_parse_filename()/bdrv_open()/bdrv_refresh_filename()
infrastructure, but just for filenames instead of real BDSs.  Yeah, no,
I won't do that.))

OK, so that was an idea, but now it turns out that bs->backing_file
actually isn't that image header's idea of the backing file.  It appears
to mostly be a clone of bs->backing->bs->filename, but not really.
Honestly, I have no idea what it is, but as a matter of fact, it is
modified by bdrv_backing_attach(), so it will probably usually match
bs->backing->bs->filename (unless there is no bs->backing, in which case
it just retains its old value?).  So it pretty much is completely
useless for any comparison here.

So I suppose I'll rename my BDS.backing_file_canonical attempt to
BDS.auto_backing_file, and this will be what the image header contains
(unless we have opened a BDS from it, in which case it will be that
BDS's filename, so it is canonicalized).

Well, or I could just go with backing_overridden, because honestly that
didn't seem so bad.

Max


PS: Or, we could argue that nobody needs filenames anyway and that
they're just for show and debugging nowadays, so nobody actually needs
backing chain information in them.  May sound a bit stupid, but then
again nobody has ever complained that that's in fact the current state.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2018-06-26 17:34 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05 15:18 [Qemu-devel] [PATCH v8 00/26] block: Fix some filename generation issues Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 01/26] block/mirror: Small absolute-paths simplification Max Reitz
2018-02-22 12:27   ` Kevin Wolf
2018-02-22 14:43     ` Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 02/26] block: Use children list in bdrv_refresh_filename Max Reitz
2018-02-22 12:30   ` Kevin Wolf
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 03/26] block: Add BDS.backing_overridden Max Reitz
2018-02-22 13:39   ` Kevin Wolf
2018-02-22 14:55     ` Max Reitz
2018-02-22 15:12       ` Kevin Wolf
2018-02-22 15:17         ` Max Reitz
2018-02-22 16:21           ` Kevin Wolf
2018-02-22 17:47             ` Max Reitz
2018-06-26 17:34               ` Max Reitz [this message]
2018-06-26 18:19                 ` Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 04/26] iotests: Drop explicit base blockdev in 191 Max Reitz
2018-02-06 13:56   ` Alberto Garcia
2018-02-22 14:34   ` Kevin Wolf
2018-02-22 15:06     ` Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 05/26] block: Respect backing bs in bdrv_refresh_filename Max Reitz
2018-02-06 14:00   ` Alberto Garcia
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 06/26] block: Make path_combine() return the path Max Reitz
2018-02-22 14:57   ` Kevin Wolf
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 07/26] block: bdrv_get_full_backing_filename_from_...'s ret. val Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 08/26] block: bdrv_get_full_backing_filename's " Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 09/26] block: Add bdrv_make_absolute_filename() Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 10/26] block: Fix bdrv_find_backing_image() Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 11/26] block: Add bdrv_dirname() Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 12/26] blkverify: Make bdrv_dirname() return NULL Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 13/26] quorum: " Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 14/26] block/nbd: " Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 15/26] block/nfs: Implement bdrv_dirname() Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 16/26] block: Use bdrv_dirname() for relative filenames Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 17/26] iotests: Add quorum case to test 110 Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 18/26] block: Add sgfnt_runtime_opts to BlockDriver Max Reitz
2018-02-06 15:23   ` Alberto Garcia
2018-02-22 15:19     ` Max Reitz
2018-02-22 15:30       ` Alberto Garcia
2018-02-06 19:43   ` Eric Blake
2018-02-20 14:51     ` Max Reitz
2018-02-20 15:15       ` Eric Blake
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 19/26] block: Add BlockDriver.bdrv_gather_child_options Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 20/26] block: Generically refresh runtime options Max Reitz
2018-02-06 14:03   ` Alberto Garcia
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 21/26] block: Purify .bdrv_refresh_filename() Max Reitz
2018-02-06 14:50   ` Alberto Garcia
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 22/26] block: Do not copy exact_filename from format file Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 23/26] block: Fix FIXME from "Add BDS.backing_overridden" Max Reitz
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 24/26] block/curl: Harmonize option defaults Max Reitz
2018-02-06 14:05   ` Alberto Garcia
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 25/26] block/curl: Implement bdrv_refresh_filename() Max Reitz
2018-02-06 14:07   ` Alberto Garcia
2018-02-05 15:18 ` [Qemu-devel] [PATCH v8 26/26] block/null: Generate filename even with latency-ns Max Reitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=e2b18fb9-af9e-c3b7-7def-0c13b3690d00@redhat.com \
    --to=mreitz@redhat.com \
    --cc=berto@igalia.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).