[LU-9844] building lustre utils lsnapshot.c fails for arch ppc64le Created: 08/Aug/17  Updated: 06/Feb/18  Resolved: 06/Feb/18

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: Lustre 2.10.4

Type: Bug Priority: Minor
Reporter: Chris Hunter (Inactive) Assignee: Peter Jones
Resolution: Fixed Votes: 0
Labels: lnsnapshot, utils
Environment:

Lustre-2.9
RHEL 7.3
Mellanox OFED 3.4.2
POWER8 Architecture (ppc64le)


Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   

Attempted to build lustre client from tarball using following config option:

 ./configure --disable-server --with-o2ib=/usr/src/ofa_kernel/default --disable-tests

## --------- ##
## Platform. ##
## --------- ##

hostname = p8eval.cluster
uname -m = ppc64le
uname -r = 3.10.0-514.el7.ppc64le
uname -s = Linux
uname -v = #1 SMP Sat Nov 5 15:08:14 GMT 2016
## ----------- ##
## confdefs.h. ##
## ----------- ##

/* confdefs.h */
#define PACKAGE_NAME "Lustre"
#define PACKAGE_TARNAME "lustre"
#define PACKAGE_VERSION "LUSTRE_VERSION.DDN_LUSTRE_VERSION.DDN_BUILD_TAG"
#define PACKAGE_STRING "Lustre LUSTRE_VERSION.DDN_LUSTRE_VERSION.DDN_BUILD_TAG"
#define PACKAGE_BUGREPORT "https://jira.hpdd.intel.com/"
#define PACKAGE_URL ""
#define PACKAGE "lustre"
#define VERSION "2.9.0-1"
#define STDC_HEADERS 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
#define HAVE_STDLIB_H 1
#define HAVE_STRING_H 1
#define HAVE_MEMORY_H 1
#define HAVE_STRINGS_H 1
#define HAVE_INTTYPES_H 1
#define HAVE_STDINT_H 1
#define HAVE_UNISTD_H 1
#define HAVE_DLFCN_H 1
#define LT_OBJDIR ".libs/"
#define SIZEOF_UNSIGNED_LONG_LONG 8

Upon running "make", we received following error when building utils:

Making all in utils
lsnapshot.c: In function '__snapshot_create':
lsnapshot.c:1111:12: error: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type '__u64' [-Werror=format=] 
SNAPSHOT_MAGIC, xtime, xtime);
^
lsnapshot.c:1111:12: error: format '%llu' expects argument of type 'long long unsigned int', but argument 9 has type '__u64' [-Werror=format=]
lsnapshot.c:1111:12: error: format '%llu' expects argument of type 'long long unsigned int', but argument 8 has type '__u64' [-Werror=format=]
lsnapshot.c:1111:12: error: format '%llu' expects argument of type 'long long unsigned int', but argument 9 has type '__u64' [-Werror=format=]
lsnapshot.c: In function '__snapshot_modify':
lsnapshot.c:1609:7: error: format '%llu' expects argument of type 'long long unsigned int', but argument 18 has type '__u64' [-Werror=format=] 
si->si_new_ssname);
^
lsnapshot.c:1609:7: error: format '%llu' expects argument of type 'long long unsigned int', but argument 18 has type '__u64' [-Werror=format=]
lsnapshot.c:1623:7: error: format '%llu' expects argument of type 'long long unsigned int', but argument 14 has type '__u64' [-Werror=format=]
st->st_filesystem, si->si_new_ssname);
^
lsnapshot.c:1623:7: error: format '%llu' expects argument of type 'long long unsigned int', but argument 14 has type '__u64' [-Werror=format=]
lsnapshot.c:1636:7: error: format '%llu' expects argument of type 'long long unsigned int', but argument 12 has type '__u64' [-Werror=format=]
st->st_filesystem, si->si_ssname);
^
lsnapshot.c:1636:7: error: format '%llu' expects argument of type 'long long unsigned int', but argument 12 has type '__u64' [-Werror=format=]
lsnapshot.c: In function 'snapshot_list_one':
lsnapshot.c:1800:4: error: format '%llu' expects argument of type 'long long unsigned int *', but argument 3 has type '__u64 *' [-Werror=format=]
sscanf(ptr + 1, "%llu", &xtime);
^
lsnapshot.c:1810:4: error: format '%llu' expects argument of type 'long long unsigned int *', but argument 3 has type '__u64 *' [-Werror=format=]
sscanf(ptr + 1, "%llu", &xtime);
^
cc1: all warnings being treated as errors
make[5]: *** [lsnapshot.o] Error 1


 Comments   
Comment by Chris Hunter (Inactive) [ 08/Aug/17 ]

Comments from our team:

there are what appear to be time calculations which expect a __U64 format but are done with a variable %llu which has a different format.
> (See attached file: lsnapshot.c)
> For example:
> static int __snapshot_create(struct snapshot_instance *si,
> struct list_head *head, const char *fsname,
> const char *mgsnode, __u64 xtime)
> A few statements later:
> len = snprintf(cmd, sizeof(cmd) - 1,
> "%s %s 'zfs snapshot "
> "-o lustre:fsname=%s "
> "-o lustre:magic=%s "
> "-o lustre:ctime=%llu "
> "-o lustre:mtime=%llu ",
> si->si_rsh, st->st_host, fsname,
> SNAPSHOT_MAGIC, xtime, xtime);
> """

 

Comment by Peter Jones [ 09/Aug/17 ]

Chris

Why are you using 2.9? Does the same error occur using 2.10?

Peter

Comment by Chris Hunter (Inactive) [ 09/Aug/17 ]

Hi Peter,

I think server vendor or ISV recommended lustre 2.9 prior to myh involvement.

They plan to try 2.10 community build; will update ticket with results.

 

 

Comment by James A Simmons [ 09/Aug/17 ]

Hi guys. I just started to try lustre 2.10.0 on our Power8 systems as well. I don't see the lsnapshot.c issues but I do see a rpm build problem. It appears that the autoconf tools like to set my library directory to /usr/lib64 and the system rpm macros set %{_libdir} to /usr/lib so it fails. I working on a fix right now.

Comment by James A Simmons [ 05/Feb/18 ]

This is no longer a problem. Chris Hunter can you confirm

Comment by Chris Hunter (Inactive) [ 06/Feb/18 ]

Yes we can now build ppc64le client.

We did run into an unrelated bug due missing "crtsaves.o"

https://bugzilla.kernel.org/show_bug.cgi?id=11143

https://github.com/torvalds/linux/commit/7fca5dc8aa7aaa6a1023bd3587901b88ebfe8154#diff-ff7999e4c0518e8123094a4ae5be7f09

FWIW now waiting on LU-10157 to allow larger RPC size.

Comment by James A Simmons [ 06/Feb/18 ]

I will close the ticket tin that case.

Generated at Sat Feb 10 02:29:47 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.