[LU-540] fix interop issues with lustre_user.h Created: 27/Jul/11  Updated: 03/Dec/14  Resolved: 30/Sep/11

Status: Resolved
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.0.0, Lustre 2.1.0
Fix Version/s: Lustre 2.1.0

Type: Bug Priority: Minor
Reporter: Andreas Dilger Assignee: nasf (Inactive)
Resolution: Fixed Votes: 0
Labels: None

Issue Links:
Related
is related to LU-5976 Remove quota compatibility with Lustr... Resolved
Severity: 3
Rank (Obsolete): 4924

 Description   

While looking at the Lustre public headers for LU-533 I noticed several
disturbing/sad incompatibilities in the headers between b1_8 and master.
Some of them are non-critical:

  • ioctl numbers for lloop devices changed (LL_IOC_LLOOP_ATTACH,
    LL_IOC_LLOOP_DETACH, LL_IOC_LLOOP_INFO, LL_IOC_LLOOP_DETACH_BYDEV

Since lloop isn't supported and usually ships with matching lctl anyway,
there isn't a critical interop issue to be fixed, though the LLOOP_INFO
ioctl should be fixed to report FIDs instead of inode numbers.

Several potentially more difficult problems exist, that I believe some
users may be impacted by:

  • struct if_quotactl has changed in size, with fields added in the middle
    of the structure instead of at the end. Some users (at least NERSC)
    are using the llapi_quotactl() interface to access quota data from
    userspace, but the userspace will break due to the change in the ioctl
    interface and llapi_quotactl() parameter. The ioctl number (correctly)
    depends on the size of struct if_quotactl, so it would be possible to
    define two slightly different ioctls at the same time (one for the old
    struct and one for the new struct). Since liblustreapi.a is a static
    library, it will continue to call the kernel with the old ioctl number
    until it is recompiled. It would be possible to define the old ioctl
    number and copy the struct data, if we wanted to maintain compatibility.

It is not easy to resolve interoperability issues between 1.x user space
tools and 2.x client kernel, even if the new added fields for "if_quotactl"
are at the end of the structure. If without considering released lustre-2.0,
we can adjust current lustre-2.1 to make it be compatible with 1.x userspace
tools. But I do not sure whether lustre-2.0 client can be ignored or not.

  • the supplementary group downcall structure has changed in 2.0, but very
    sadly the magic number in the struct wasn't also changed, so the kernel
    can't distinguish between the old and new downcall structs. I recall
    at least Sandia had written their own 1.x group upcall, and while we
    may not need to keep compatibility, at least changing the magic number
    would afford us the option to do so. An open question is whether this
    would negatively affect Kerberos users?

Since the downcall structure sizes for 1.x and 2.x are different, it can
be used by MDT to distinguish whether the downcall from user space is 2.x
based or 1.x based. We can process that in current lustre-2.1 candidate.

  • llite file flags are defined with conflicting values for b1_8 and master
    since 1.8.2:

b1_8:
#define LL_FILE_LOCKED_DIRECTIO 0x00000008 /* client-side locks with dio */
#define LL_FILE_LOCKLESS_IO 0x00000010 /* server-side locks with cio */

master:
#define LL_FILE_RMTACL 0x00000008

I have no idea what LL_FILE_RMTACL does, or if anybody uses it. The
LL_FILE_LOCK* flags are (AFAIK) used by LLNL BG/P IO daemons to force
lockless IO on files. I'm not sure if apps are using this also.

"LL_FILE_RMTACL" is used for remote client ACL processing. Since no released
versions support remote client, we can redefine it in lustre-2.1 candidate.



 Comments   
Comment by Andreas Dilger [ 27/Jul/11 ]

For the lloop ioctl issue I've submitted http://review.whamcloud.com/1149, and for the struct if_quotactl change a pair of patches (http://review.whamcloud.com/1151 and http://review.whamcloud.com/1152) for ease of review. The first patch only moves some code around, and the second one implements the compatibility bits.

Comment by nasf (Inactive) [ 28/Jul/11 ]

Patch for "LL_FILE_RMTACL" conflict:

http://review.whamcloud.com/#change,1159

Comment by nasf (Inactive) [ 28/Jul/11 ]

Patch for supplementary group downcall interoperability:

http://review.whamcloud.com/#change,1160

Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,sles11,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,client,el5,ofa #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre_lib.h
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,server,el6,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/include/lustre_lib.h
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,server,el5,ofa #234
LU-540 quota: move quota ioctl handling to helper

Oleg Drokin : 770f9c0e7e8eb3dc3a9e531210cbf29008e9a27d
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/obd.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/obd.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/lloop.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,client,el5,ofa #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/lloop.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/obd.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,sles11,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/utils/obd.c
  • lustre/llite/lloop.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/utils/obd.c
  • lustre/llite/lloop.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,server,el6,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/utils/obd.c
  • lustre/llite/lloop.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/lloop.c
Comment by Build Master (Inactive) [ 29/Jul/11 ]

Integrated in lustre-master » i686,server,el5,ofa #235
LU-540 lloop: fix LLOOP_INFO to return FID

Oleg Drokin : 90bde110350493b1d07b12f692a829b4d2cab617
Files :

  • lustre/utils/obd.c
  • lustre/llite/lloop.c
  • lustre/include/lustre/lustre_user.h
Comment by nasf (Inactive) [ 01/Aug/11 ]

About supplementary group downcall interoperability issues, it is almost impossible to support 1.8 user space downcall utils to run against 2.x kernel stack. Because downcall proc interfaces have been renamed, and moved from MDS to MDT. That means even if without supplementary group downcall changed, the 1.8 user space supplementary group downcall utils still cannot communicate with 2.x kernel stack properly.

So I am not sure whether it is worth to fix 2.x proc interfaces to support 1.8 user space supplementary group downcall utils.

On the other hand, there are some other issues for current 2.x user space supplementary group downcall utils. I will make patch to fix those issues.

Comment by Andreas Dilger [ 01/Aug/11 ]

Fan Yong, I didn't realize that the user interface path also changed for 2.x. In that case I agree there cannot be any confusion. We can ignore this upcall/downcall compatibilty for 2.1.

Comment by nasf (Inactive) [ 02/Aug/11 ]

misc patch for user identity upcall/downcall

http://review.whamcloud.com/#change,1160 set 4

Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,client,sles11,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » i686,server,el5,ofa #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » i686,server,el6,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 05/Aug/11 ]

Integrated in lustre-master » i686,client,el5,ofa #243
LU-540 remove file flags definition conflict between 1.8 and 2.x

Oleg Drokin : 56c3ba38463d428340475130a1f5ce0daf3713fa
Files :

  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/llite_internal.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
  • lustre/llite/llite_internal.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/llite_internal.h
  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/llite_internal.h
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,sles11,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/dir.c
  • lustre/llite/llite_internal.h
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/llite_internal.h
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/llite_internal.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/llite/llite_internal.h
  • lustre/llite/dir.c
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/llite_internal.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/include/lustre_lib.h
  • lustre/llite/llite_internal.h
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,server,el5,ofa #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/llite_internal.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,server,el6,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/include/lustre_lib.h
  • lustre/llite/llite_internal.h
  • lustre/llite/dir.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,client,el5,ofa #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/include/lustre_lib.h
  • lustre/llite/llite_internal.h
  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #247
LU-540 quota: add compatibility for 1.8 userspace

Oleg Drokin : 0c051fd0e737e03ac6cadb7699c93bcde959b4fd
Files :

  • lustre/llite/dir.c
  • lustre/include/lustre/lustre_user.h
  • lustre/llite/llite_internal.h
  • lustre/include/lustre_lib.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,el5,ofa #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_lproc.c
  • lustre/mdt/mdt_identity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,client,el6,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_identity.c
  • lustre/mdt/mdt_lproc.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,server,el5,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_lproc.c
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_identity.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,el6,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_identity.c
  • lustre/mdt/mdt_lproc.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/l_getidentity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,sles11,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/mdt/mdt_lproc.c
  • lustre/mdt/mdt_identity.c
  • lustre/utils/l_getidentity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,client,el5,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/mdt/mdt_lproc.c
  • lustre/mdt/mdt_identity.c
  • lustre/utils/l_getidentity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,ubuntu1004,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_identity.c
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_lproc.c
  • lustre/include/lustre/lustre_user.h
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,server,el5,ofa #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/utils/l_getidentity.c
  • lustre/include/lustre/lustre_user.h
  • lustre/mdt/mdt_lproc.c
  • lustre/mdt/mdt_identity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,client,el5,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_lproc.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_identity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,server,el5,ofa #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_identity.c
  • lustre/utils/l_getidentity.c
  • lustre/include/lustre/lustre_user.h
  • lustre/mdt/mdt_lproc.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » x86_64,server,el6,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_lproc.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_identity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,server,el6,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_lproc.c
  • lustre/mdt/mdt_identity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,client,el5,ofa #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/mdt/mdt_lproc.c
  • lustre/include/lustre/lustre_user.h
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_identity.c
Comment by Build Master (Inactive) [ 09/Aug/11 ]

Integrated in lustre-master » i686,server,el5,inkernel #248
LU-540 misc patch for user identity upcall/downcall

Oleg Drokin : 4b7cbec396fcd7afb81d601a2facb70ee8c7ad28
Files :

  • lustre/include/lustre/lustre_user.h
  • lustre/mdt/mdt_identity.c
  • lustre/utils/l_getidentity.c
  • lustre/mdt/mdt_lproc.c
Comment by James A Simmons [ 11/Aug/11 ]

Just test the lastest code drop on our test bed at the lab. The file system mounted but couldn't access it. I did a git bisect and reverted this patch and it worked again.

Comment by nasf (Inactive) [ 11/Aug/11 ]

> Just test the lastest code drop on our test bed at the lab. The file system mounted but couldn't access it. I did a git bisect and reverted this patch and it worked again.

Which patch you revert? the "misc patch for user identity upcall/downcall"? If so, please update the MDS-side user space utils "l_getidentity" with latest version, usually it is under /usr/sbin/l_getidentity.

On the other hand, please show me the dmesg on MDS side if possible. Thanks!

Comment by James A Simmons [ 11/Aug/11 ]

Yes that is the one and yes I did update the l_getidenttity. We don't need a special utiltiy for upcall so we use what is built by lustre. What is different is that we supply a /etc/lustre/perm file

Comment by nasf (Inactive) [ 11/Aug/11 ]

The old l_getidentity and new one process /etc/lustre/perm with the same behavior. So I do not think such file can cause the failure.

What is error reported/message when you use new version Lustre?

Comment by Oleg Drokin [ 15/Aug/11 ]

James shared the perms file with me, but unfortunately it seems to be 1.8 based or otherwise invalid.

Anyway I was inspecting updated l_getidentity code and I think I see the problem in perms handling:

+ size = offsetof(struct identity_downcall_data,
+ idd_groups[data->idd_ngroups]);
/* read permission database */

  • perms_fp = fopen(PERM_PATHNAME, "r");
  • if (perms_fp) { - get_perms(perms_fp, data); - fclose(perms_fp); - }

    else if (errno != ENOENT)

    { - errlog("open %s failed: %s\n", - PERM_PATHNAME, strerror(errno)); - }

    + rc = get_perms(data);

later on we proceed to write size bytes to kernel.

Now the problem is if get_perms() call added any more group entries and increased the data->idd_ngroups value, the size won't be updated and we would never pass these extra entries to the kernel.
As such I propose to move the size calculation to after the get_perms() call, that should fix the issue.

Comment by Oleg Drokin [ 15/Aug/11 ]

Ok, it turns out I spoke too soon

Teh perms file cannot add any more groups. And it is invalid.
And that's the problem.

Where the old l_getidentity just ignored invalid perms file and fed the group data to the kernel,
the new one just bails out on wrong perms file and exits without trying to pass any data to the kernel whatsoever.

Comment by Andreas Dilger [ 29/Sep/11 ]

Is there still unfinished work with this bug, or did it all get landed?

Comment by nasf (Inactive) [ 30/Sep/11 ]

I think we have done what we want.

Comment by Andreas Dilger [ 30/Sep/11 ]

Patches were landed for 2.1.0.

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