Details
-
Bug
-
Resolution: Fixed
-
Major
-
Lustre 2.8.0
-
sles12
-
3
-
9223372036854775807
Description
build fails in gss code. not noticed until very recently due to commonly doing builds in environments without kerberos support or with --disable-gss. lustre configured --disable-gss builds and runs fine.
example errors:
CC [M] /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.o /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c: In function ‘request_key_unlink’: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:649:18: note: in expansion of macro ‘key_tgcred’ ring = key_get(key_tgcred(tsk)->process_keyring); ^ In file included from include/linux/srcu.h:33:0, from include/linux/notifier.h:15, from include/linux/memory_hotplug.h:6, from include/linux/mmzone.h:830, from include/linux/gfp.h:4, from include/linux/kmod.h:22, from include/linux/module.h:13, from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:43: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ include/linux/rcupdate.h:521:11: note: in definition of macro ‘__rcu_dereference_check’ typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \ ^ include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’ #define rcu_dereference(p) rcu_dereference_check(p, 0) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ include/linux/rcupdate.h:521:38: note: in definition of macro ‘__rcu_dereference_check’ typeof(*p) *_________p1 = (typeof(*p)*__force )ACCESS_ONCE(p); \ ^ include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’ #define rcu_dereference(p) rcu_dereference_check(p, 0) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ In file included from include/linux/init.h:4:0, from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:42: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ include/linux/compiler.h:365:43: note: in definition of macro ‘ACCESS_ONCE’ #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) ^ include/linux/rcupdate.h:613:2: note: in expansion of macro ‘__rcu_dereference_check’ __rcu_dereference_check((p), rcu_read_lock_held() || (c), __rcu) ^ include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’ #define rcu_dereference(p) rcu_dereference_check(p, 0) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ include/linux/compiler.h:365:50: note: in definition of macro ‘ACCESS_ONCE’ #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) ^ include/linux/rcupdate.h:613:2: note: in expansion of macro ‘__rcu_dereference_check’ __rcu_dereference_check((p), rcu_read_lock_held() || (c), __rcu) ^ include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’ #define rcu_dereference(p) rcu_dereference_check(p, 0) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ In file included from include/linux/srcu.h:33:0, from include/linux/notifier.h:15, from include/linux/memory_hotplug.h:6, from include/linux/mmzone.h:830, from include/linux/gfp.h:4, from include/linux/kmod.h:22, from include/linux/module.h:13, from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:43: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ include/linux/rcupdate.h:526:13: note: in definition of macro ‘__rcu_dereference_check’ ((typeof(*p) __force __kernel *)(_________p1)); \ ^ include/linux/rcupdate.h:709:28: note: in expansion of macro ‘rcu_dereference_check’ #define rcu_dereference(p) rcu_dereference_check(p, 0) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:18: note: in expansion of macro ‘rcu_dereference’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:654:34: note: in expansion of macro ‘key_tgcred’ ring = key_get(rcu_dereference(key_tgcred(tsk) ^ In file included from include/linux/init.h:4:0, from /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:42: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c: In function ‘gss_kt_instantiate’: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ include/linux/compiler.h:153:42: note: in definition of macro ‘unlikely’ # define unlikely(x) __builtin_expect(!!(x), 0) ^ /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_private.h:99:23: note: in expansion of macro ‘LASSERTF’ #define LASSERT(cond) LASSERTF(cond, "\n") ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1244:2: note: in expansion of macro ‘LASSERT’ LASSERT(key_tgcred(current)->session_keyring); ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1244:10: note: in expansion of macro ‘key_tgcred’ LASSERT(key_tgcred(current)->session_keyring); ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1247:16: note: in expansion of macro ‘key_tgcred’ rc = key_link(key_tgcred(current)->session_keyring, key); ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:121:37: error: ‘const struct cred’ has no member named ‘tgcred’ #define key_tgcred(tsk) ((tsk)->cred->tgcred) ^ /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:231:55: note: in expansion of macro ‘key_tgcred’ libcfs_debug_msg(&msgdata, format, ## __VA_ARGS__); \ ^ /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:241:9: note: in expansion of macro ‘__CDEBUG’ __CDEBUG(&cdls, mask, format, ## __VA_ARGS__);\ ^ /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:271:37: note: in expansion of macro ‘CDEBUG_LIMIT’ #define CERROR(format, ...) CDEBUG_LIMIT(D_ERROR, format, ## __VA_ARGS__) ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1250:3: note: in expansion of macro ‘CERROR’ CERROR("failed to link key %08x to keyring %08x: %d\n", ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c: At top level: /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1409:9: error: initialization from incompatible pointer type [-Werror] .instantiate = gss_kt_instantiate, ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1409:9: error: (near initialization for ‘gss_key_type.instantiate’) [-Werror] /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1410:9: error: initialization from incompatible pointer type [-Werror] .update = gss_kt_update, ^ /home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.c:1410:9: error: (near initialization for ‘gss_key_type.update’) [-Werror] cc1: all warnings being treated as errors scripts/Makefile.build:324: recipe for target '/home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.o' failed make[7]: *** [/home/bogl/lustre-release/lustre/ptlrpc/gss/gss_keyring.o] Error 1 scripts/Makefile.build:485: recipe for target '/home/bogl/lustre-release/lustre/ptlrpc/gss' failed make[6]: *** [/home/bogl/lustre-release/lustre/ptlrpc/gss] Error 2 scripts/Makefile.build:485: recipe for target '/home/bogl/lustre-release/lustre/ptlrpc' failed make[5]: *** [/home/bogl/lustre-release/lustre/ptlrpc] Error 2 scripts/Makefile.build:485: recipe for target '/home/bogl/lustre-release/lustre' failed make[4]: *** [/home/bogl/lustre-release/lustre] Error 2 Makefile:1287: recipe for target '_module_/home/bogl/lustre-release' failed make[3]: *** [_module_/home/bogl/lustre-release] Error 2 make[3]: Leaving directory '/home/bogl/linux-3.12.39-47' autoMakefile:1018: recipe for target 'modules' failed make[2]: *** [modules] Error 2 make[2]: Leaving directory '/home/bogl/lustre-release' autoMakefile:565: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/home/bogl/lustre-release' autoMakefile:466: recipe for target 'all' failed make: *** [all] Error 2
we need autoconf and code changes to adapt to different gss data structures and APIs seen in sles12.