<div dir="ltr">Hello,<div><br></div><div>As a proof of concept I&#39;m trying to write a xlator that does nothing, I call it &quot;nop&quot;. The code for &quot;nop.c&quot; is simply:</div><div><br></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">
<div><div><font face="courier new, monospace">#include &quot;config.h&quot;</font></div></div><div><div><font face="courier new, monospace">#include &quot;call-stub.h&quot;</font></div></div><div><div><font face="courier new, monospace">struct xlator_fops fops = {};</font></div>
</div><div><div><font face="courier new, monospace">struct xlator_cbks cbks = {};</font></div></div><div><div><font face="courier new, monospace">struct xlator_dumpops dumpops = {};</font></div></div><div><div><font face="courier new, monospace">struct volume_options options[] = {{.key={NULL}},};</font></div>
</div><div><div><font face="courier new, monospace">int32_t init (xlator_t *this){return 0;}</font></div></div><div><div><font face="courier new, monospace">int fini (xlator_t *this){return 0;}</font></div></div></blockquote>
<div><div><br></div><div>And I compile it with:</div><div><div><font face="courier new, monospace">$ gcc -fPIC -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DGF_LINUX_HOST_OS -shared -nostartfiles -lglusterfs -lpthread -I${GFS} -I${GFS}/libglusterfs/src -I${GFS}/contrib/uuid nop.c -o nop.so</font></div>
</div><div><br></div><div>Then, if I try a test.vol file like that:</div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><div><font face="courier new, monospace">volume test-posix</font></div>
</div></div><div><div><div><font face="courier new, monospace">    type storage/posix</font></div></div></div><div><div><div><font face="courier new, monospace">    option directory /home/llpamies/Projects/gluster/test-split/node0-data</font></div>
</div></div><div><div><div><font face="courier new, monospace">end-volume</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">volume test-nop</font></div>
</div></div><div><div><div><font face="courier new, monospace">    type features/nop</font></div></div></div><div><div><div><font face="courier new, monospace">    subvolumes test-posix</font></div></div></div><div><div><div>
<font face="courier new, monospace">end-volume</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">volume test-cache</font></div>
</div></div><div><div><div><font face="courier new, monospace">  type performance/io-cache</font></div></div></div><div><div><div><font face="courier new, monospace">  subvolumes test-nop</font></div></div></div><div><div>
<div><font face="courier new, monospace">end-volume</font></div></div></div></blockquote><div><div><br></div><div>and mount it with:</div><div><font face="courier new, monospace">$ glusterfs --debug -f test.vol /mount/point</font></div>
<div><br></div><div>It seems to work fine, doing nothing. However, when used together with the stripe xlator as follows:<br></div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>
<div><div><font face="courier new, monospace">volume test-posix0</font></div></div></div><div><div><div><font face="courier new, monospace">    type storage/posix</font></div></div></div><div><div><div><font face="courier new, monospace">    option directory /home/llpamies/Projects/gluster/test-split/node0-data</font></div>
</div></div><div><div><div><font face="courier new, monospace">end-volume</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">volume test-posix1</font></div>
</div></div><div><div><div><font face="courier new, monospace">    type storage/posix</font></div></div></div><div><div><div><font face="courier new, monospace">    option directory /home/llpamies/Projects/gluster/test-split/node1-data</font></div>
</div></div><div><div><div><font face="courier new, monospace">end-volume</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">volume test-nop0</font></div>
</div></div><div><div><div><font face="courier new, monospace">    type features/nop</font></div></div></div><div><div><div><font face="courier new, monospace">    subvolumes test-posix0</font></div></div></div><div><div>
<div><font face="courier new, monospace">end-volume</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">volume test-nop1</font></div>
</div></div><div><div><div><font face="courier new, monospace">    type features/nop</font></div></div></div><div><div><div><font face="courier new, monospace">    subvolumes test-posix1</font></div></div></div><div><div>
<div><font face="courier new, monospace">end-volume</font></div></div></div><div><div><div><font face="courier new, monospace"><br></font></div></div></div><div><div><div><font face="courier new, monospace">volume test-stripe</font></div>
</div></div><div><div><div><font face="courier new, monospace">    type cluster/stripe</font></div></div></div><div><div><div><font face="courier new, monospace">    subvolumes test-nop0 test-nop1</font></div></div></div>
<div><div><div><font face="courier new, monospace">end-volume</font></div></div></div></blockquote><div><div><br></div><div>Glusterfs hangs during the first fuse lookup for &quot;.Trash&quot;, and /mount/point looks unmounted with ???? permissions etc.</div>
<div><br></div><div>Does it look like some bug in the stripe xlator or is there something fundamentally wrong with the nop xlator?</div><div><br></div><div>Thank you,</div><div> </div>-- <br>Lluís</div></div>