<div dir="ltr"><div>Hi,</div><div><br></div><div>   I was checking code of internal data structures (dict,fd,rpc_clnt etc.) those we use in glusterfs to store data.</div><div>   Usually we use common pattern to take reference of data structure in xlator level, in ref function we do take lock(mutex_lock) </div><div>   and update(increase) reference counter and in unref function we do take lock and decrease reference counter and </div><div>   check if ref counter is become 0 after decrease then destroy object.</div><div><br></div><div>   I think to update reference counter we don&#39;t need to take a lock, we can use atomic in-built function those </div><div>   can improve performance </div><div><br></div><div>   For ex: Below is a example for specific to dict_ref/unref  </div><div>   To increase refCount we can use below built-in function</div><div>   dict_ref</div><div>   {</div><div>       __atomic_add_fetch (&amp;this-&gt;refcount, 1, __ATOMIC_SEQ_CST);</div><div><br></div><div>   }</div><div><br></div><div>   dict_unref</div><div>   {</div><div>      __atomic_sub_fetch (&amp;this-&gt;refcount, 1, __ATOMIC_SEQ_CST);</div><div>      __atomic_load (&amp;this-&gt;refcount, &amp;ref, __ATOMIC_SEQ_CST);</div><div>   }</div><div>     </div><div>   In the same way we can use for all other shared data-structure also in case of take/release reference.</div><div><br></div><div>   I have not tested yet how much performance improvement we can gain but i think there should be some improvement. </div><div>  Please share your input on this, appreciate your input.</div><div><br></div><div>Regards</div><div>Mohit Agrawal</div></div>