All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andres Lagar-Cavilla <andres@lagarcavilla.com>
To: Stefano Stabellini <stefano.stabellini@eu.citrix.com>,
	xen-devel@lists.xensource.com
Subject: libxenlight or libxenheavy?
Date: Mon, 30 Nov 2009 14:08:47 -0500	[thread overview]
Message-ID: <4B14183F.3070801@lagarcavilla.com> (raw)

Aside of the tongue in cheek title, I'd like to get a feel for where is 
libxenlight going. I love having a library that gives me three 
straight-forward C calls to create a domain, and I think it's an 
excellent vehicle to writing control stacks.

But some of the latest patches have grown/bloated the library in 
directions I don't think are useful. This an obviously subjective take 
on the matter, but here are two examples:

- Managing tapdisk2 devices in libxenlight: why at all? An upper-level 
control stack can (will have to) vet the configuration stanza of the 
tapdisk2 process, and it can then launch it and manage its life-cycle 
(i.e. echo appropriate commands to the sysfs interface). One of the 
great advantages of tapdisk2 is that it looks like a regular block 
device: /dev/xen/blktap-2/tapdev0. Libxenlight doesn't need to know this 
is any different from a regular block device ...

- Asynchronous notifications via xenstore watches: I've seen at least 
two locations (device deletion during destroy and waiting for domain 
death) where a watch on a xenstore path is placed by the library, and 
later xs_read_watch is called. According to my limited understanding, 
this could read *any* firing watch placed by the same process, and the 
code will discard it unless it's the one we are looking for. Thus 
destroying information useful to someone else. I cannot have two 
concurrent (or even interleaved) calls to libxenlight on these code 
paths, because they could read each other's watches. Why not leave these 
to an upper-level stack, which in all likelihood will have to deal with 
lots of asynchronous events? As it stands, I have to write my code 
*around* libxenlight, which kind of defeats the purpose.

Anyway, these are two observations. Libxenlight is great. And to buy 
back some of the love I spent ranting, I'll follow this with 14 patches. 
These are all based off20522: abc6183f486e 
<http://xenbits.xen.org/xen-unstable.hg?rev/abc6183f486e>. Some are more 
RFC-ish in nature, but there a fair bit of fixes. They apply -p1 
(sorry). Just let me know if you need a rebasing or whatever.

Andres

             reply	other threads:[~2009-11-30 19:08 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-30 19:08 Andres Lagar-Cavilla [this message]
2009-12-01  6:12 ` libxenlight or libxenheavy? Vincent Hanquez
2009-12-01  6:35 ` Vincent Hanquez
2009-12-01 11:41   ` Stefano Stabellini
2009-12-01 12:14     ` Keir Fraser
2009-12-01 13:51       ` Keir Fraser
2009-12-01 14:00         ` Stefano Stabellini
2009-12-01 14:01           ` Keir Fraser
2009-12-01 14:27             ` Andres Lagar-Cavilla
2009-12-01 11:23 ` Stefano Stabellini
2009-12-01 11:24 ` Jean Guyader

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=4B14183F.3070801@lagarcavilla.com \
    --to=andres@lagarcavilla.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xensource.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.