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

            [LU-6490] builds on 3.12 fail in gss
            pjones Peter Jones added a comment -

            Landed for 2.8

            pjones Peter Jones added a comment - Landed for 2.8

            Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/15804/
            Subject: LU-6490 gss: handle struct key_type match replacement
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 50c79ee142be4bad9e63d603dda0a8d80ac40444

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/15804/ Subject: LU-6490 gss: handle struct key_type match replacement Project: fs/lustre-release Branch: master Current Patch Set: Commit: 50c79ee142be4bad9e63d603dda0a8d80ac40444

            One patch left to enable Ubuntu15 support.

            simmonsja James A Simmons added a comment - One patch left to enable Ubuntu15 support.

            Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/15354/
            Subject: LU-6490 build: enable gss build on sles12
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: d3341dff726d8781f16e21f7d403c2ec11f8113d

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/15354/ Subject: LU-6490 build: enable gss build on sles12 Project: fs/lustre-release Branch: master Current Patch Set: Commit: d3341dff726d8781f16e21f7d403c2ec11f8113d

            Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/15342/
            Subject: LU-6490 gss: 3.1x kernels adjustments for gssapi code
            Project: fs/lustre-release
            Branch: master
            Current Patch Set:
            Commit: 37e738fbde6220164da7b9c2097065eb323e2da7

            gerrit Gerrit Updater added a comment - Oleg Drokin (oleg.drokin@intel.com) merged in patch http://review.whamcloud.com/15342/ Subject: LU-6490 gss: 3.1x kernels adjustments for gssapi code Project: fs/lustre-release Branch: master Current Patch Set: Commit: 37e738fbde6220164da7b9c2097065eb323e2da7

            James Simmons (uja.ornl@yahoo.com) uploaded a new patch: http://review.whamcloud.com/15804
            Subject: LU-6490 gss: handle key_type match replacement
            Project: fs/lustre-release
            Branch: master
            Current Patch Set: 1
            Commit: 8d5eef7ff61cf619b1881161c02c88e0138cfb81

            gerrit Gerrit Updater added a comment - James Simmons (uja.ornl@yahoo.com) uploaded a new patch: http://review.whamcloud.com/15804 Subject: LU-6490 gss: handle key_type match replacement Project: fs/lustre-release Branch: master Current Patch Set: 1 Commit: 8d5eef7ff61cf619b1881161c02c88e0138cfb81

            We will need on more kernel patch to support Ubuntu15.

            simmonsja James A Simmons added a comment - We will need on more kernel patch to support Ubuntu15.

            Hi,

            For both RHEL6 and RHEL7, I have the same rpms installed:
            krb5-devel
            krb5-libs
            krb5-workstation
            pam_krb5

            The issue met by Oleg is due to a lack of checking of $KRBDIR in kerberos5.m4 and lustre-core.m4. I have updated my patch at http://review.whamcloud.com/15342 to fix this.

            Sebastien.

            sebastien.buisson Sebastien Buisson (Inactive) added a comment - Hi, For both RHEL6 and RHEL7, I have the same rpms installed: krb5-devel krb5-libs krb5-workstation pam_krb5 The issue met by Oleg is due to a lack of checking of $KRBDIR in kerberos5.m4 and lustre-core.m4. I have updated my patch at http://review.whamcloud.com/15342 to fix this. Sebastien.
            simmonsja James A Simmons added a comment - - edited

            With my testing with Oleg's setup looking at the config.log I see the following:

            configure:18580: checking for gss_krb5_export_lucid_sec_context in -l
            configure:18615: gcc -o conftest -g -O2 -I/tmp/lustre-2.7.56/libcfs/include -I/tmp/lustre-2.7.56/lnet/include -I/tmp/lustre-2.7.56/lustre/include conftest.c -l -lkeyutils >&5
            /usr/bin/ld: cannot find -l-lkeyutils
            collect2: ld returned 1 exit status

            Oleg do you have the keyutils packages installed as well?

            simmonsja James A Simmons added a comment - - edited With my testing with Oleg's setup looking at the config.log I see the following: configure:18580: checking for gss_krb5_export_lucid_sec_context in -l configure:18615: gcc -o conftest -g -O2 -I/tmp/lustre-2.7.56/libcfs/include -I/tmp/lustre-2.7.56/lnet/include -I/tmp/lustre-2.7.56/lustre/include conftest.c -l -lkeyutils >&5 /usr/bin/ld: cannot find -l-lkeyutils collect2: ld returned 1 exit status Oleg do you have the keyutils packages installed as well?
            green Oleg Drokin added a comment - - edited

            I do not have krb5-devel installed, but I do have krb5-libs

            So autoconf est seems to have a bug (excerpt from config.log):

            configure:18332: checking for Kerberos v5
            configure:18421: result: 
            configure:18435: checking for gss_krb5_export_lucid_sec_context in -l
            configure:18470: gcc -o conftest -g -O2 -I/home/green/git/lustre-release/libcfs/include -I/home/green/git/lustre-release/lnet/include -I/home/green/git/lustre-release/lustre/include   conftest.c -l   >&5
            gcc: argument to '-l' is missing
            
            green Oleg Drokin added a comment - - edited I do not have krb5-devel installed, but I do have krb5-libs So autoconf est seems to have a bug (excerpt from config.log): configure:18332: checking for Kerberos v5 configure:18421: result: configure:18435: checking for gss_krb5_export_lucid_sec_context in -l configure:18470: gcc -o conftest -g -O2 -I/home/green/git/lustre-release/libcfs/include -I/home/green/git/lustre-release/lnet/include -I/home/green/git/lustre-release/lustre/include conftest.c -l >&5 gcc: argument to '-l' is missing

            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: