<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div>Hi,<br><br></div>In QEMU, we initialize gfapi in the following manner:<br><br>********************<br></div>glfs = glfs_new();<br></div><div>if (!glfs)<br>
</div><div>   goto out;<br></div>if (glfs_set_volfile_server() &lt; 0)<br></div>   goto out;<br></div>if (glfs_set_logging() &lt; 0)<br></div>   goto out;<br></div>if (glfs_init(glfs))<br></div>   goto out;<br><br>...<br>
<br></div>out:<br></div>if (glfs)<br></div>   glfs_fini(glfs)<br>*********************<br><br clear="all"><div><div><div><div><div><div><div><div><div><div><div><div><div>Now if either glfs_set_volfile_server() or glfs_set_logging() fails, we end up doing glfs_fini() which eventually hangs in glfs_lock().<br>
<br>#0  0x00007ffff554a595 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0<br>#1  0x00007ffff79d312e in glfs_lock (fs=0x555556331310) at glfs-internal.h:176<br>#2  0x00007ffff79d5291 in glfs_active_subvol (fs=0x555556331310) at glfs-resolve.c:811<br>
#3  0x00007ffff79c9f23 in glfs_fini (fs=0x555556331310) at glfs.c:753<br><br>Note that we haven&#39;t done glfs_init() in this failure case.<br><br></div><div>- Is this failure expected ? If so, what is the recommended way of releasing the glfs object ?<br>
</div><div>- Does glfs_fini() depend on glfs_init() to have worked successfully ?<br></div><div>- Since QEMU-GlusterFS driver was developed when libgfapi was very new, can gluster developers take a look at the order of the glfs_* calls we are making in QEMU and suggest any changes, improvements or additions now given that libgfapi has seen a lot of development ?<br>
</div><div><br></div><div>Regards,<br>Bharata.<br></div><div>-- <br><a href="http://raobharata.wordpress.com/" target="_blank">http://raobharata.wordpress.com/</a>
</div></div></div></div></div></div></div></div></div></div></div></div></div></div>