From: Kevin Wolf <kwolf@redhat.com>
To: Max Reitz <mreitz@redhat.com>
Cc: qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v5 0/8] Add metadata overlap checks
Date: Fri, 13 Sep 2013 11:57:53 +0200 [thread overview]
Message-ID: <20130913095753.GC2804@dhcp-200-207.str.redhat.com> (raw)
In-Reply-To: <5231DCA6.7090004@redhat.com>
Am 12.09.2013 um 17:24 hat Max Reitz geschrieben:
> On 2013-09-12 16:57, Eric Blake wrote:
> >Also, is there a way to tune the set of checks used at runtime, or are
> >we stuck with the compiled-in default? That is, can a user opt in to
> >more expensive tests for robustness, or opt out of default tests for
> >speed, via a runtime command, or is it something where they have to
> >recompile to choose a different QCOW2_OL_DEFAULT value?
> >
> Right now, it's obviously a compile-time constant. However, I think
> we could also define QCOW2_OL_DEFAULT to be a runtime variable,
> however, that variable would most probably be stored in the
> BDRVQcowState structure. We could take advantage of that structure's
> instance being named "s" almost universally, therefore we could
> define QCOW2_OL_DEFAULT to be s->default_overlap_check or something
> like that. It would obviously be kind of ugly, but it should work
> pretty well.
Not really acceptable, and not necessary either.
You could change all qcow2_pre_write_overlap_check() caller to not pass
QCOW2_OL_DEFAULT & foo, but pass either just foo or QCOW2_OL_ALL & ~foo,
and apply a s->overlap_checks mask inside qcow2_pre_write_overlap_check().
> On the other hand, we could replace QCOW2_OL_DEFAULT manually
> everywhere by s->default_overlap_check; or, we change the macro to
> take s as a parameter.
>
> Either way, I see three answers to your question:
>
> First, right now, we're basically stuck with a compile time constant.
>
> Second, if a user really wants to, he could always define the macro
> to represent some variable. This should work pretty well already,
> although this variable has to be defined first, of course.
>
> Third, it wouldn't be too much of a problem to write a follow-up
> patch manually replacing every QCOW2_OL_DEFAULT occurrence by a true
> variable (such as default_overlap_check from the current
> BDRVQcowState structure). I'd just undefine the macro and work down
> every compiler error. ;-)
>
> On the other hand, now, that I think about it, we could also invert
> the current program logic: qcow2_check_metadata_overlap would then
> no longer receive a bitmask of structures to check for overlaps, but
> rather a bitmask of structures to ignore, since it can figure out
> s->default_overlap_check by itself.
Yup, see above. It's not necessary to invert to logic, though it's an
option and perhaps the nicer one. The crucial part is moving the
evalution of s->overlap_check into qcow2_check_metadata_overlap. (Note
how I dropped the 'default' from s->default_overlap_check, it's not a
default any more, but the actual user choice.)
The more interesting part is that adding an option always needs thought
because once it is exposed, it's an API that is set in stone. And I'm
also not sure what the best command line and QMP representations of a
bitmask like this are.
Kevin
next prev parent reply other threads:[~2013-09-13 9:58 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-02 7:25 [Qemu-devel] [PATCH v5 0/8] Add metadata overlap checks Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 1/8] qcow2: Add corrupt bit Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 2/8] qcow2: Metadata overlap checks Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 3/8] qcow2: Employ metadata " Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 4/8] qcow2-refcount: Move OFLAG_COPIED checks Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 5/8] qcow2-refcount: Repair OFLAG_COPIED errors Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 6/8] qcow2-refcount: Repair shared refcount blocks Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 7/8] qcow2_check: Mark image consistent Max Reitz
2013-09-02 7:25 ` [Qemu-devel] [PATCH v5 8/8] qemu-iotests: Overlapping cluster allocations Max Reitz
2013-09-12 14:57 ` [Qemu-devel] [PATCH v5 0/8] Add metadata overlap checks Eric Blake
2013-09-12 15:24 ` Max Reitz
2013-09-13 9:57 ` Kevin Wolf [this message]
2013-09-13 10:23 ` Max Reitz
2013-09-13 12:29 ` Eric Blake
2013-09-13 12:37 ` Max Reitz
2013-09-13 14:29 ` Max Reitz
2013-09-13 14:34 ` Eric Blake
2013-09-19 15:07 ` Max Reitz
2013-09-19 17:26 ` Eric Blake
2013-09-20 8:23 ` Max Reitz
2013-09-20 10:32 ` Stefan Hajnoczi
2013-10-26 13:03 ` Max Reitz
2013-10-26 13:05 ` Max Reitz
2013-11-05 8:51 ` Stefan Hajnoczi
2013-11-14 18:37 ` Max Reitz
2013-11-15 8:13 ` Stefan Hajnoczi
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=20130913095753.GC2804@dhcp-200-207.str.redhat.com \
--to=kwolf@redhat.com \
--cc=mreitz@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
/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).