[GEDI] Unexpected libgfapi behaviour
Niels de Vos
ndevos at redhat.com
Mon Oct 30 16:14:37 UTC 2017
On Mon, Oct 30, 2017 at 04:38:57PM +0100, Denis Chaplygin wrote:
> Hello!
>
> On Mon, Oct 30, 2017 at 3:30 PM, Niels de Vos <ndevos at redhat.com> wrote:
>
> > On Mon, Oct 30, 2017 at 02:58:48PM +0100, Denis Chaplygin wrote:
> > ...
> > >
> > > Looks like it loads volinfo and everything stops here. I attached my dump
> > > file, so you make take a look on it if you like.
> >
> > In Wireshark, you can filter with "rpc" to show all the Gluster traffic.
> > The GETSPEC call is indeed returning the .vol file with the volume
> > layout.
> >
>
> I turned on libgfapi logging and that's what i have:
> [2017-10-30 15:31:28.497128] T [MSGID: 0] [graph.y:187:new_volume]
> 0-parser: New node for 'testiso-open-behind'
> [2017-10-30 15:31:28.497142] T [MSGID: 0] [xlator.c:208:xlator_dynload]
> 0-xlator: attempt to load file
> /usr/lib64/glusterfs/3.12.1/xlator/performance/open-behind.so
> [2017-10-30 15:31:28.500329] T [MSGID: 0] [xlator.c:263:xlator_dynload]
> 0-xlator: dlsym(notify) on
> /usr/lib64/glusterfs/3.12.1/xlator/performance/open-behind.so: undefined
> symbol: notify -- neglecting
> [2017-10-30 15:31:28.500362] T [MSGID: 0] [graph.y:218:volume_type]
> 0-parser: Type:testiso-open-behind:performance/open-behind
> [2017-10-30 15:31:28.500378] T [MSGID: 0] [graph.y:307:volume_sub]
> 0-parser: child:testiso-open-behind->testiso-quick-read
> [2017-10-30 15:31:28.500389] T [MSGID: 0] [graph.y:324:volume_end]
> 0-parser: end:testiso-open-behind
>
> Is it expected behavior? I think it could be root cause of my error.
This behaviour is acceptible, the notify symbol is optional and it is
not required for xlators (.so files) to provide it.
> The complete log is available at
> https://paste.fedoraproject.org/paste/N8pFNfCA3Q5j5f~JkA9EyA
The real error is this one:
E [MSGID: 101091] [graph.c:493:glusterfs_graph_prepare] 0-graph: glusterfs graph settop failed
Unfortunately, that does not help anyone much. We'll have to look into
the code what is going on there :-/
libglusterfs/src/graph.c:
480 } else if (volume_name[0] == '/') {
481 /* brick multiplexing passes the brick path */
482 ret = glusterfs_graph_settop (graph, volume_name,
483 _gf_true);
484 } else {
485 ret = glusterfs_graph_settop (graph, volume_name,
486 _gf_false);
487 }
488 if (!ret) {
489 goto ok;
490 }
491
492 gf_msg ("graph", GF_LOG_ERROR, 0, LG_MSG_GRAPH_ERROR,
493 "glusterfs graph settop failed");
494 return -1;
>From the previous emails, I can not find how you pass the name of the
volume. In case you pass "/testiso", could you try to use "testiso"
without the "/"? New GlusterFS releases have support for a feature
called 'brick multiplexing', and this modified a few internals in
libglusterfs that is used by other components, including gfapi.
If the above does not help, could you run your application under ltrace
or gdb to figure out which glusterfs_graph_settop() is called?
Thanks,
Niels
More information about the integration
mailing list