[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