Bug 1226255

Summary: Undefined symbol "changelog_select_event"
Product: [Community] GlusterFS Reporter: pellaeon
Component: portingAssignee: bugs <bugs>
Status: CLOSED DUPLICATE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: mainlineCC: anoopcs, bugs, gluster-bugs, pellaeon, rjoseph
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: FreeBSD   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-06-02 12:41:12 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
patch for clang none

Description pellaeon 2015-05-29 10:07:26 UTC
Created attachment 1031821 [details]
patch for clang

Description of problem:
When starting a volume, GlusterFS will fail with followint mesage:

[2015-05-28 14:27:39.093136] W [xlator.c:192:xlator_dynload] 0-xlator: /usr/local/lib/glusterfs/3.8dev/xlator/features/changelog.so: Undefined symbol "changelog_select_event"
[2015-05-28 14:27:39.093183] E [graph.y:212:volume_type] 0-parser: Volume 'vietnam-changelog', line 30: type 'features/changelog' is not valid or not found on this machine
[2015-05-28 14:27:39.093212] E [graph.y:321:volume_end] 0-parser: "type" not specified for volume vietnam-changelog
[2015-05-28 14:27:39.093393] E [MSGID: 100026] [glusterfsd.c:2149:glusterfs_process_volfp] 0-: failed to construct the graph

Version-Release number of selected component (if applicable):
master@19d7b609

How reproducible:
Build & install GlusterFS on FreeBSD 10.1 amd64.
Create a volume then start a volume.


Steps to Reproduce:
1. get glusterfs source code
2. cd glusterfs
3. ./autogen
4. ./configure
5. make
6. sudo make install
7. glusterd -p /var/run/glusterd.pid
8. gluster volume create vietnam a.gluster:/brick1/brick1
9. gluster volume start vietnam
10. see brick log file

Actual results:
Cannot start volume.

Expected results:
Volume starts.


Additional info:
This bug is caused by clang and gcc handles inline functions differently.
By writing "inline" in source files, gcc will emit standalone object code, so it may be called externally.
But for clang, "inline" will not emit standalone object code, therefore the "undefined symbol" error, to achieve the same behavior as in gcc, you need to write "extern inline".

In the attachment find the patch. This patch should also work for gcc.

Reference: http://www.greenend.org.uk/rjk/tech/inline.html

Comment 1 rjoseph 2015-06-02 12:41:12 UTC
Bug is already fixed in 1226307 BZ, Therefore closing this as duplicate.

*** This bug has been marked as a duplicate of bug 1226307 ***