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

Supp gid fix for cross-MDT operations where parent/child on diff MDTs w/ different groups

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Medium Medium
    • Lustre 2.17.0
    • Lustre 2.17.0
    • None
    • 3
    • 9223372036854775807

      For cross-MDT open where parent and child are on different MDTs and owned by different supplementary groups, we should hint client via similar mechanism as in https://review.whamcloud.com/c/fs/lustre-release/+/56098

      Right now, for cross-MDT open, mdt_reint_open calls mdt_cross_open which skips the logic later to check for EACESS and hint client. The client will try and guess the child dir or file's permissions w/ the parent's permissions - if they do not match, client will get an incorrect EACESS. We can fix this by adding a check for EACESS into mdt_cross_open.

      Modified existing sanity-sec 83 to fail w/o this change

      == sanity-sec test 83: Suppgids for cross-MDT ops ======== 22:00:18 (1762898418)
      mdt.lustre-MDT0000.identity_upcall=NONE
      mdt.lustre-MDT0001.identity_upcall=NONE
      172.31.73.235@tcp:/lustre /mnt/lustre lustre rw,seclabel,checksum,encrypt,flock,lazystatfs,lruresize,nolock,statfs_project,nouser_fid2path,user_xattr,verbose 0 0
      Stopping client ip-172-31-73-235.ec2.internal /mnt/lustre (opts:)
      Starting client: ip-172-31-73-235.ec2.internal:  -o user_xattr,flock 172.31.73.235@tcp:/lustre /mnt/lustre
      ls: cannot access '/mnt/lustre/d83.sanity-sec/subdir/*': No such file or directory
       sanity-sec test_83: @@@@@@ FAIL: ls /mnt/lustre/d83.sanity-sec/subdir/* as sanityusr failed 
        Trace dump:
        = /home/ec2-user/lustre-release/lustre/tests/test-framework.sh:7314:error()
        = /home/ec2-user/lustre-release/lustre/tests/sanity-sec.sh:10605:test_83()
        = /home/ec2-user/lustre-release/lustre/tests/test-framework.sh:7690:run_one()
        = /home/ec2-user/lustre-release/lustre/tests/test-framework.sh:7753:run_one_logged()
        = /home/ec2-user/lustre-release/lustre/tests/test-framework.sh:7553:run_test()
        = /home/ec2-user/lustre-release/lustre/tests/sanity-sec.sh:10607:main()
      Dumping lctl log to /tmp/test_logs/2025-11-11/215920/sanity-sec.test_83.*.1762898419.log
      Dumping logs only on local client.
      Removing user sanityusr from group grptest832
      Removing user sanityusr from group grptest83
      FAIL 83 (1s)

            kthoang Kaitlin Hoang
            kthoang Kaitlin Hoang
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: