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

support for linux process namespace is broken

Details

    • Bug
    • Resolution: Fixed
    • Minor
    • Lustre 2.6.0
    • None
    • 3
    • 13971

    Description

      Some recent landing in lustre master has broken the support for linux process namespace done in LU-4476. When building even client builds for rhel7 with CONFIG_UIDGID_STRICT_TYPE_CHECKS enabled (the default setting) there are many build errors. It looks like some new uid/gid calls were added without regard to the changes from LU-4476 that needed to be conformed to. I suspect the recent commit LU-1778 llite: fix inconsistencies of root squash feature is at fault.

      example errors:

        CC [M]  /home/bogl/lustre-release/lustre/llite/file.o
      In file included from include/uapi/linux/stddef.h:1:0,
                       from include/linux/stddef.h:4,
                       from /usr/src/kernels/3.10.0-123.el7.x86_64/include/uapi/linux/posix_types.h:4,
                       from include/uapi/linux/types.h:13,
                       from include/linux/types.h:5,
                       from include/linux/proc_fs.h:7,
                       from /home/bogl/lustre-release/lustre/include/linux/lustre_dlm.h:43,
                       from /home/bogl/lustre-release/lustre/include/lustre_dlm.h:52,
                       from /home/bogl/lustre-release/lustre/llite/file.c:44:
      /home/bogl/lustre-release/lustre/llite/file.c: In function ‘ll_inode_permission’:
      /home/bogl/lustre-release/lustre/llite/file.c:3545:24: error: invalid operands to binary == (have ‘kuid_t’ and ‘int’)
              current_fsuid() == 0 &&
                              ^
      include/linux/compiler.h:153:42: note: in definition of macro ‘unlikely’
       # define unlikely(x) __builtin_expect(!!(x), 0)
                                                ^
      In file included from /home/bogl/lustre-release/libcfs/include/libcfs/libcfs.h:272:0,
                       from /home/bogl/lustre-release/lustre/include/lustre_lib.h:49,
                       from /home/bogl/lustre-release/lustre/include/lustre_dlm.h:61,
                       from /home/bogl/lustre-release/lustre/llite/file.c:44:
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:225:23: error: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘kuid_t’ [-Werror=format=]
               static struct libcfs_debug_msg_data msgdata;                    \
                             ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:235:35: note: in expansion of macro ‘__CDEBUG’
       #define CDEBUG(mask, format, ...) __CDEBUG(NULL, mask, format, ## __VA_ARGS__)
                                         ^
      /home/bogl/lustre-release/lustre/llite/file.c:3550:3: note: in expansion of macro ‘CDEBUG’
         CDEBUG(D_OTHER, "squash creds (%d:%d)=>(%d:%d)\n",
         ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:225:23: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘kgid_t’ [-Werror=format=]
               static struct libcfs_debug_msg_data msgdata;                    \
                             ^
      /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:235:35: note: in expansion of macro ‘__CDEBUG’
       #define CDEBUG(mask, format, ...) __CDEBUG(NULL, mask, format, ## __VA_ARGS__)
                                         ^
      /home/bogl/lustre-release/lustre/llite/file.c:3550:3: note: in expansion of macro ‘CDEBUG’
         CDEBUG(D_OTHER, "squash creds (%d:%d)=>(%d:%d)\n",
         ^
      /home/bogl/lustre-release/lustre/llite/file.c:3560:15: error: incompatible types when assigning to type ‘kuid_t’ from type ‘uid_t’
         cred->fsuid = squash->rsi_uid;
                     ^
      /home/bogl/lustre-release/lustre/llite/file.c:3561:15: error: incompatible types when assigning to type ‘kgid_t’ from type ‘gid_t’
         cred->fsgid = squash->rsi_gid;
                     ^
      cc1: all warnings being treated as errors
      make[6]: *** [/home/bogl/lustre-release/lustre/llite/file.o] Error 1
      make[5]: *** [/home/bogl/lustre-release/lustre/llite] Error 2
      make[4]: *** [/home/bogl/lustre-release/lustre] Error 2
      make[3]: *** [_module_/home/bogl/lustre-release] Error 2
      make[3]: Leaving directory `/usr/src/kernels/3.10.0-123.el7.x86_64'
      make[2]: *** [modules] Error 2
      make[2]: Leaving directory `/home/bogl/lustre-release'
      make[1]: *** [all-recursive] Error 1
      make[1]: Leaving directory `/home/bogl/lustre-release'
      make: *** [all] Error 2
      

      Attachments

        Issue Links

          Activity

            [LU-5058] support for linux process namespace is broken
            pjones Peter Jones made changes -
            Fix Version/s New: Lustre 2.6.0 [ 10595 ]
            Resolution New: Fixed [ 1 ]
            Status Original: Open [ 1 ] New: Resolved [ 5 ]
            bogl Bob Glossman (Inactive) made changes -
            Link New: This issue is related to LU-4416 [ LU-4416 ]
            bogl Bob Glossman (Inactive) made changes -
            Assignee Original: WC Triage [ wc-triage ] New: Bob Glossman [ bogl ]
            pjones Peter Jones made changes -
            Labels New: patch
            bogl Bob Glossman (Inactive) made changes -
            Link New: This issue is related to LU-4476 [ LU-4476 ]
            bogl Bob Glossman (Inactive) made changes -
            Description New: Some recent landing in lustre master has broken the support for linux process namespace done in LU-4476. When building even client builds for rhel7 with CONFIG_UIDGID_STRICT_TYPE_CHECKS enabled (the default setting) there are many build errors. It looks like some new uid/gid calls were added without regard to the changes from LU-4476 that needed to be conformed to. I suspect the recent commit LU-1778 llite: fix inconsistencies of root squash feature is at fault.

            example errors:
            {noformat}
              CC [M] /home/bogl/lustre-release/lustre/llite/file.o
            In file included from include/uapi/linux/stddef.h:1:0,
                             from include/linux/stddef.h:4,
                             from /usr/src/kernels/3.10.0-123.el7.x86_64/include/uapi/linux/posix_types.h:4,
                             from include/uapi/linux/types.h:13,
                             from include/linux/types.h:5,
                             from include/linux/proc_fs.h:7,
                             from /home/bogl/lustre-release/lustre/include/linux/lustre_dlm.h:43,
                             from /home/bogl/lustre-release/lustre/include/lustre_dlm.h:52,
                             from /home/bogl/lustre-release/lustre/llite/file.c:44:
            /home/bogl/lustre-release/lustre/llite/file.c: In function ‘ll_inode_permission’:
            /home/bogl/lustre-release/lustre/llite/file.c:3545:24: error: invalid operands to binary == (have ‘kuid_t’ and ‘int’)
                    current_fsuid() == 0 &&
                                    ^
            include/linux/compiler.h:153:42: note: in definition of macro ‘unlikely’
             # define unlikely(x) __builtin_expect(!!(x), 0)
                                                      ^
            In file included from /home/bogl/lustre-release/libcfs/include/libcfs/libcfs.h:272:0,
                             from /home/bogl/lustre-release/lustre/include/lustre_lib.h:49,
                             from /home/bogl/lustre-release/lustre/include/lustre_dlm.h:61,
                             from /home/bogl/lustre-release/lustre/llite/file.c:44:
            /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:225:23: error: format ‘%d’ expects argument of type ‘int’, but argument 3 has type ‘kuid_t’ [-Werror=format=]
                     static struct libcfs_debug_msg_data msgdata; \
                                   ^
            /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:235:35: note: in expansion of macro ‘__CDEBUG’
             #define CDEBUG(mask, format, ...) __CDEBUG(NULL, mask, format, ## __VA_ARGS__)
                                               ^
            /home/bogl/lustre-release/lustre/llite/file.c:3550:3: note: in expansion of macro ‘CDEBUG’
               CDEBUG(D_OTHER, "squash creds (%d:%d)=>(%d:%d)\n",
               ^
            /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:225:23: error: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘kgid_t’ [-Werror=format=]
                     static struct libcfs_debug_msg_data msgdata; \
                                   ^
            /home/bogl/lustre-release/libcfs/include/libcfs/libcfs_debug.h:235:35: note: in expansion of macro ‘__CDEBUG’
             #define CDEBUG(mask, format, ...) __CDEBUG(NULL, mask, format, ## __VA_ARGS__)
                                               ^
            /home/bogl/lustre-release/lustre/llite/file.c:3550:3: note: in expansion of macro ‘CDEBUG’
               CDEBUG(D_OTHER, "squash creds (%d:%d)=>(%d:%d)\n",
               ^
            /home/bogl/lustre-release/lustre/llite/file.c:3560:15: error: incompatible types when assigning to type ‘kuid_t’ from type ‘uid_t’
               cred->fsuid = squash->rsi_uid;
                           ^
            /home/bogl/lustre-release/lustre/llite/file.c:3561:15: error: incompatible types when assigning to type ‘kgid_t’ from type ‘gid_t’
               cred->fsgid = squash->rsi_gid;
                           ^
            cc1: all warnings being treated as errors
            make[6]: *** [/home/bogl/lustre-release/lustre/llite/file.o] Error 1
            make[5]: *** [/home/bogl/lustre-release/lustre/llite] Error 2
            make[4]: *** [/home/bogl/lustre-release/lustre] Error 2
            make[3]: *** [_module_/home/bogl/lustre-release] Error 2
            make[3]: Leaving directory `/usr/src/kernels/3.10.0-123.el7.x86_64'
            make[2]: *** [modules] Error 2
            make[2]: Leaving directory `/home/bogl/lustre-release'
            make[1]: *** [all-recursive] Error 1
            make[1]: Leaving directory `/home/bogl/lustre-release'
            make: *** [all] Error 2
            {noformat}
            bogl Bob Glossman (Inactive) created issue -

            People

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

              Dates

                Created:
                Updated:
                Resolved: