<div dir="ltr">Hi,<div><br></div><div>I&#39;ve found some issues with memory accounting and I&#39;ve written a patch [1] to fix them. However during the tests I&#39;ve found another problem:</div><div><br></div><div>In a brick-multiplexed environment, posix tries to start a single janitor thread shared by all posix xlator instances, however there are two issues:</div><div><br></div><div>1. The creation is not atomic and it could happen that more than one janitor thread is started (unless xlator init is serialized in some way)</div><div>2. Even though the thread is global, it&#39;s using information from a single instance (through &#39;this&#39;). This means that once the first instance of posix xlator is stopped, &#39;this&#39; can be destroyed, but the janitor will continue using it. From the memory accounting point of view, it means that whatever this thread does, is not tracked anymore.</div><div><br></div><div>Note that we only need to write a log message to access &#39;this&#39; and use dynamic memory.</div><div><br></div><div>I detected this problem in the posix xlator, but since there are other threads that have been made global, maybe something similar could happen. I think this need to be checked and fixed.</div><div><br></div><div>Xavi</div><div><br></div><div>[1] <a href="https://review.gluster.org/c/glusterfs/+/22554">https://review.gluster.org/c/glusterfs/+/22554</a></div></div>