I plan to enhance glfs_fini() to be the common destruction routine for initialized and half-initialized objects. So call glfs_fini() for all failures for now and assume libgfapi will do the cleanup.<div><br></div><div>Avati<br>
<br><div class="gmail_quote">On Tue, Jul 17, 2012 at 11:06 PM, Bharata B Rao <span dir="ltr">&lt;<a href="mailto:bharata.rao@gmail.com" target="_blank">bharata.rao@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Avati,<br>
<br>
In QEMU, this is how I am planning to use libgfapi to set the GlusterFS backend.<br>
<br>
struct glfs *glfs;<br>
int ret = 0;<br>
<br>
glfs = glfs_new(volname);<br>
if (!glfs) {<br>
    ret = -errno;<br>
    goto out_glfs_new_failed;<br>
}<br>
<br>
ret = glfs_set_volfile_server(glfs, &quot;socket&quot;, server, port);<br>
if (ret &lt; 0) {<br>
    ret = -errno;<br>
    goto out_set_volfile_failed;<br>
}<br>
<br>
/* optional */<br>
ret = glfs_set_logging(glfs, logfile, loglevel);<br>
if (ret &lt; 0) {<br>
    ret = -errno;<br>
    goto out_set_logging_failed;<br>
}<br>
<br>
ret = glfs_init(glfs);<br>
if (ret &lt; 0) {<br>
    ret = -errno;<br>
    goto out_glfs_init_failed;<br>
}<br>
return ret;<br>
<br>
out_glfs_init_failed:<br>
    glfs_unset_logging(glfs, ...);<br>
out_set_logging_failed:<br>
    glfs_unset_volfile_server(glfs, ...);<br>
out_set_volfile_failed:<br>
    glfs_free(glfs);<br>
out_glfs_new_failed:<br>
    return ret;<br>
<br>
I see only glfs_fini() in libgfapi currently. I see that all of the<br>
APIs I am using above at least allocate memory which needs to be freed<br>
up at the end or during failure. Are such cleanup routines already<br>
present in libgfapi that could use ? If not, can you please provide<br>
the clean up routines for the above mentioned 4 APIs that QEMU would<br>
be using ?<br>
<br>
Regards,<br>
Bharata.<br>
<span class="HOEnZb"><font color="#888888">--<br>
<a href="http://bharata.sulekha.com/blog/posts.htm" target="_blank">http://bharata.sulekha.com/blog/posts.htm</a>, <a href="http://raobharata.wordpress.com/" target="_blank">http://raobharata.wordpress.com/</a><br>
</font></span></blockquote></div><br></div>