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

Details

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

    Description

      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)

      Attachments

        Issue Links

          Activity

            People

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

              Dates

                Created:
                Updated:
                Resolved: