qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: Chris Wright <chrisw@redhat.com>,
	qemu-devel@nongnu.org, kvm@vger.kernel.org
Subject: [Qemu-devel] Re: KVM call agenda for Apr 27
Date: Tue, 27 Apr 2010 16:08:55 +0300	[thread overview]
Message-ID: <4BD6E1E7.2080802@redhat.com> (raw)
In-Reply-To: <4BD6E0AE.8020307@codemonkey.ws>

On 04/27/2010 04:03 PM, Anthony Liguori wrote:
> On 04/27/2010 03:14 AM, Avi Kivity wrote:
>> On 04/27/2010 01:36 AM, Anthony Liguori wrote:
>>>
>>> A few comments:
>>>
>>> 1) The problem was not block watermark itself but generating a 
>>> notification on the watermark threshold.  It's a heuristic and 
>>> should be implemented based on polling block stats. 
>>
>> Polling for an event that never happens is bad engineering.  What 
>> frequency do you poll?  you're forcing the user to make a lose-lose 
>> tradeoff.
>>
>>> Otherwise, we'll be adding tons of events to qemu that we'll 
>>> struggle to maintain.
>>
>> That's not a valid reason to reject a user requirement.  We may argue 
>> the requirement is bogus, or that the suggested implementation is 
>> wrong and point in a different direction, but saying that we may have 
>> to add more code in the future due to other requirements is ... well 
>> I can't find a word for it.
>
> Polling is the best solution because it offers the most flexibility.  
> Baking the heuristic into qemu just removes flexibility for all 
> consumers.

Can you explain?  The ability to poll is not removed.  Nor is any 
heuristics performed by qemu; it just sends a notification when a write 
exceeds a user-defined threshold.  The distance from the threshold to 
the top-of-file is not known to qemu.

>
>>>
>>> 2) A block plugin doesn't solve the problem if it's just at the 
>>> BlockDriverState level because it can't interact with qcow2.
>>
>> Why not?  We have a layered model.  guest -> qcow2 -> plugin (sends 
>> event) -> raw-posix.  Just need to insert the plugin at the 
>> appropriate layer.
>
> All of the qcow2 information is static to the qcow2 driver and I don't 
> think changing that for plugins is a good idea.

There is no information that the plugin needs to access:

   if (write_offset > watermark && watermark_enabled) {
       send_notification();
       watermark_enabled = false;
   }
   bdrv_write(backing_blockstate, ..., write_offset, ...);

Note write_offset if not the guest's offset, but the offset into the 
backing file.  It will trigger on guest writes and qcow2 metadata writes 
alike.

>
>>>
>>> 3) For general block plugins, it's probably better to tackle 
>>> userspace block devices.  We have CUSE and FUSE already, a BUSE is a 
>>> logical conclusion.
>>
>> We also have an nbd client.
>>
>> Here's another option:  an nbd-like protocol that remotes all 
>> BlockDriver operations except read and write over a unix domain 
>> socket.  The open operation returns an fd (SCM_RIGHTS strikes again) 
>> that is used for read and write.  This can be used to implement 
>> snapshots over LVM, for example.
>
> How does it address the watermark problem?

It doesn't. Mea confusa.

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2010-04-27 13:09 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-04-26 17:26 [Qemu-devel] KVM call agenda for Apr 27 Chris Wright
2010-04-26 17:51 ` [Qemu-devel] " Anthony Liguori
2010-04-26 22:12   ` Chris Wright
2010-04-26 22:36     ` Anthony Liguori
2010-04-27  8:14       ` Avi Kivity
2010-04-27  8:48         ` Dor Laor
2010-04-27  8:56           ` Avi Kivity
2010-04-27  9:08             ` Dor Laor
2010-04-27  9:22               ` Avi Kivity
2010-04-27  9:32                 ` Dor Laor
2010-04-27  9:41                   ` Kevin Wolf
2010-04-27 13:15                     ` Anthony Liguori
2010-04-27  9:16             ` Kevin Wolf
2010-04-27  9:28               ` Avi Kivity
2010-04-27 13:03         ` Anthony Liguori
2010-04-27 13:08           ` Avi Kivity [this message]
2010-04-27 13:11           ` Daniel P. Berrange
2010-04-27 13:15             ` Gleb Natapov
2010-04-27 13:38               ` Daniel P. Berrange
2010-04-27 14:10                 ` Gleb Natapov
2010-04-27  8:53       ` Kevin Wolf
2010-04-27 13:10         ` Anthony Liguori
2010-04-27 13:18           ` Kevin Wolf
2010-04-27 13:21             ` Anthony Liguori
2010-04-27 13:42               ` Kevin Wolf
2010-04-27 13:48                 ` Anthony Liguori
2010-04-27 13:58                   ` Kevin Wolf
2010-04-27 14:01                     ` Anthony Liguori
2010-04-27 11:11       ` Gleb Natapov
2010-04-27 13:00         ` Anthony Liguori
2010-04-27 13:05           ` Gleb Natapov
2010-04-27 13:19             ` Anthony Liguori
2010-04-27 13:29               ` Gleb Natapov
2010-04-27  1:15   ` Luiz Capitulino
2010-04-27  3:39     ` Aurelien Jarno

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=4BD6E1E7.2080802@redhat.com \
    --to=avi@redhat.com \
    --cc=anthony@codemonkey.ws \
    --cc=chrisw@redhat.com \
    --cc=kvm@vger.kernel.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).