On Mon, Jan 14, 2008 at 10:39:25AM +0000, Richard W.M. Jones wrote:
Daniel P. Berrange wrote:
>There are a number of existing APIs which can benefit from
>this, hence I decided to work on this separately from the
>main storage APIs. The APIs which can make use of this are
>virDomainCreateLinux, virDomainCreate, virNetworkCreate,
>virNetworkCreateXML, virDomainSave, virDomainRestore, and
>virDomainDumpCore. For all of these we add a second variant
>postfixed with 'Job' in the name, returning a virJobPtr object
Another way to do this is to overload the domain etc. objects and make
them into suspensions. The advantages being (a) no new API is needed
and (b) some code benefits from overlapping computation even without
being changed. See also my reply here:
http://www.redhat.com/archives/libvir-list/2007-July/msg00257.html
OTOH, suspensions require "interesting" code changes inside libvirt,
although not necessarily requiring threads - there are several possible
implementations.
That's an interesting idea though i think we'd still need a fair number
of new APIs. Only a handful of existing APIs have a 'flags' param where
we could request async operation, so even if we could keep the same
return type by using a suspension we still need extra args to indicate
sync vs async.
Dan.
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules:
http://search.cpan.org/~danberr/ -=|
|=- Projects:
http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|