Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-6490

builds on 3.12 fail in gss

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • Lustre 2.8.0
    • 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.

      Attachments

        Issue Links

          Activity

            People

              bogl Bob Glossman (Inactive)
              bogl Bob Glossman (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              10 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: