[libvirt] PATCH: Ensure errors are guarenteed reported in virConnectOpen

Daniel P. Berrange berrange at redhat.com
Wed Aug 20 18:24:59 UTC 2008


On Wed, Aug 20, 2008 at 02:22:58PM +0100, Richard W.M. Jones wrote:
> On Tue, Aug 19, 2008 at 11:35:18AM +0100, Daniel P. Berrange wrote:
> > The guarenteed correct solution is actually rather simple
> > 
> >  - Always report errors against the virConnect object, even in the driver
> >    open method
> > 
> >  - In the cleanup patch of do_open() in libvirt.c, if no global error is
> >    set, copy the error from the virConnect object's virError, into the 
> >    global virError.
> 
> +1 , although unfortunately this isn't thread-safe.  Nothing can be
> thread-safe unless we change the API.

Well we're not making it any less thread-safe. You alrady have to use the
virGetLastError() global func - we're simply making sure it actually
records all errors. 

To make it thread-safe we'll need to add a real virGetThreadLastError()
API, which is something on my todo list - with that new apps can just
call thevirGetThreadLastError() exclusively and never need to know the
distinction between  global/connection errors which causes so much
trouble. I'm fairly sure I can preseve existing semantics at same 
time with some suitable internal cleverness.

Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list