Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-1532 only allow FID_SEQ_NORMAL from clients
  3. LU-1552

opening lost+found: triggers (mdt_open.c:784:mdt_finish_open()) ASSERTION( ma->ma_valid & MA_INODE ) failed:

Details

    • Technical task
    • Resolution: Fixed
    • Minor
    • None
    • Lustre 2.3.0
    • [root]# cat /proc/fs/lustre/version
      lustre: 2.2.57
      kernel: patchless_client
      build: 2.2.57-ge827449-CHANGED-2.6.32-220.23.1.el6.l2.2.55
    • 7794

    Description

      Opening .lustre/fid/[0x200000001:0xd:0x0]/lost+found triggers an unchecked error in mdt_reint_open() which causes a failed assertion in mdt_finish_open().

      [root]# sys_stat .lustre/fid/[0xb:0x0:0x0]
      cannot stat `.lustre/fid/[0xb:0x0:0x0]': No such file or directory
      [root]# sys_open .lustre/fid/[0xb:0x0:0x0] r
      cannot open `.lustre/fid/[0xb:0x0:0x0]' with flags 0, mode 0666: No such file or directory
      [root]# sys_stat .lustre/fid/[0x200000001:0xd:0x0]/lost+found
      cannot stat `.lustre/fid/[0x200000001:0xd:0x0]/lost+found': No such file or directory
      [root]# sys_open .lustre/fid/[0x200000001:0xd:0x0]/lost+found r
      

      In mdt_reint_open(), the call to mdo_lookup() is succeeding, but mo_attr_get() is failing with -ENOENT. (The return of mdd_la_get() becomes the return of mo_attr_get() here.) However the return of mo_attr_get() is only tested against -EREMOTE. Since mo_attr_get() failed, it did not set MA_INODE in ma_valid.

      LustreError: 30584:0:(mdd_object.c:83:mdd_la_get()) (null): object [0xb:0x0:0x0] not found: rc = -2
      LustreError: 30584:0:(mdt_open.c:784:mdt_finish_open()) ASSERTION( ma->ma_valid & MA_INODE ) failed: 
      LustreError: 30584:0:(mdt_open.c:784:mdt_finish_open()) LBUG
      Pid: 30584, comm: mdt_01
      
      Call Trace:
       [<ffffffffa0308905>] libcfs_debug_dumpstack+0x55/0x80 [libcfs]
       [<ffffffffa0308f17>] lbug_with_loc+0x47/0xb0 [libcfs]
       [<ffffffffa0a64b15>] mdt_finish_open+0x12f5/0x1790 [mdt]
       [<ffffffffa0a6701b>] mdt_reint_open+0xc0b/0x1950 [mdt]
       [<ffffffffa0a351a5>] ? mdt_ucred+0x15/0x20 [mdt]
       [<ffffffffa0a50b51>] mdt_reint_rec+0x41/0xe0 [mdt]
       [<ffffffffa0a4a3aa>] mdt_reint_internal+0x50a/0x810 [mdt]
       [<ffffffffa0a4a97d>] mdt_intent_reint+0x1ed/0x500 [mdt]
       [<ffffffffa0a46cc1>] mdt_intent_policy+0x371/0x6a0 [mdt]
       [<ffffffffa05bc841>] ldlm_lock_enqueue+0x361/0x8f0 [ptlrpc]
       [<ffffffffa05e420a>] ldlm_handle_enqueue0+0x48a/0xf40 [ptlrpc]
       [<ffffffffa0a46866>] mdt_enqueue+0x46/0x130 [mdt]
       [<ffffffffa0a3c2a2>] mdt_handle_common+0x922/0x1740 [mdt]
       [<ffffffffa0a3d195>] mdt_regular_handle+0x15/0x20 [mdt]
       [<ffffffffa06128a2>] ptlrpc_server_handle_request+0x412/0xeb0 [ptlrpc]
       [<ffffffffa030965e>] ? cfs_timer_arm+0xe/0x10 [libcfs]
       [<ffffffffa0319daf>] ? lc_watchdog_touch+0x6f/0x180 [libcfs]
       [<ffffffffa060b6d2>] ? ptlrpc_wait_event+0xb2/0x2c0 [ptlrpc]
       [<ffffffff81051ba3>] ? __wake_up+0x53/0x70
       [<ffffffffa0613b17>] ptlrpc_main+0x7d7/0x1610 [ptlrpc]
       [<ffffffffa0613340>] ? ptlrpc_main+0x0/0x1610 [ptlrpc]
       [<ffffffff8100c14a>] child_rip+0xa/0x20
       [<ffffffffa0613340>] ? ptlrpc_main+0x0/0x1610 [ptlrpc]
       [<ffffffffa0613340>] ? ptlrpc_main+0x0/0x1610 [ptlrpc]
       [<ffffffff8100c140>] ? child_rip+0x0/0x20
      

      Attachments

        Issue Links

          Activity

            [LU-1552] opening lost+found: triggers (mdt_open.c:784:mdt_finish_open()) ASSERTION( ma->ma_valid & MA_INODE ) failed:

            Following the reproducer on current Master does not produce the failure:

            [root@lmaster-124 sys]# cd /mnt/lustre/
            [root@lmaster-124 lustre]# /root/hammond/sys/sys_stat .lustre/fid/[0xb:0x0:0x0]
            cannot stat `.lustre/fid/[0xb:0x0:0x0]': Invalid argument
            [root@lmaster-124 lustre]# /root/hammond/sys/sys_open .lustre/fid/[0xb:0x0:0x0] r
            cannot open `.lustre/fid/[0xb:0x0:0x0]' with flags 0, mode 0666: Invalid argument
            [root@lmaster-124 lustre]# /root/hammond/sys/sys_stat .lustre/fid/[0x200000001:0xd:0x0]/lost+found
            cannot stat `.lustre/fid/[0x200000001:0xd:0x0]/lost+found': Invalid argument
            [root@lmaster-124 lustre]# /root/hammond/sys/sys_open .lustre/fid/[0x200000001:0xd:0x0]/lost+found r
            cannot open `.lustre/fid/[0x200000001:0xd:0x0]/lost+found' with flags 0, mode 0666: Invalid argument
            

            I'm assuming this has been fixed by the closing of issue LU-1532.

            rhenwood Richard Henwood (Inactive) added a comment - Following the reproducer on current Master does not produce the failure: [root@lmaster-124 sys]# cd /mnt/lustre/ [root@lmaster-124 lustre]# /root/hammond/sys/sys_stat .lustre/fid/[0xb:0x0:0x0] cannot stat `.lustre/fid/[0xb:0x0:0x0]': Invalid argument [root@lmaster-124 lustre]# /root/hammond/sys/sys_open .lustre/fid/[0xb:0x0:0x0] r cannot open `.lustre/fid/[0xb:0x0:0x0]' with flags 0, mode 0666: Invalid argument [root@lmaster-124 lustre]# /root/hammond/sys/sys_stat .lustre/fid/[0x200000001:0xd:0x0]/lost+found cannot stat `.lustre/fid/[0x200000001:0xd:0x0]/lost+found': Invalid argument [root@lmaster-124 lustre]# /root/hammond/sys/sys_open .lustre/fid/[0x200000001:0xd:0x0]/lost+found r cannot open `.lustre/fid/[0x200000001:0xd:0x0]/lost+found' with flags 0, mode 0666: Invalid argument I'm assuming this has been fixed by the closing of issue LU-1532 .

            These bugs are symptoms that internal files should not be accessible through .lustre.

            adilger Andreas Dilger added a comment - These bugs are symptoms that internal files should not be accessible through .lustre.

            John,
            all of the "FID_SEQ_LOCAL_FILE" files should be denied access from any external node. They are all intended to be used internally by the MDS or OSS when accessing objects in the OSD filesystem. This should be fixed along with LU-1532.

            These bugs are definitely an interesting class of problems, but it makes sense to step back for a bit and get the first ones fixed before seeing what other new issues can be produced.

            adilger Andreas Dilger added a comment - John, all of the "FID_SEQ_LOCAL_FILE" files should be denied access from any external node. They are all intended to be used internally by the MDS or OSS when accessing objects in the OSD filesystem. This should be fixed along with LU-1532 . These bugs are definitely an interesting class of problems, but it makes sense to step back for a bit and get the first ones fixed before seeing what other new issues can be produced.

            People

              wc-triage WC Triage
              jhammond John Hammond
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: