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

touch symbol link through lustre/.fid/$FID would fail

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • None
    • None
    • 2.12
    • 3
    • 9223372036854775807

    Description

      The problem is 100% reproducable:

      1. # ls new_Inode -l
        lrwxrwxrwx 10 root root 7 Mar 4 01:48 new_Inode -> unknown
      2. lfs path2fid new_Inode
        [0x200000402:0x83f:0x0]
      3. touch /mnt/bgdzjiq1/.lustre/fid/[0x200000402:0x83f:0x0]
        touch: setting times of '/mnt/bgdzjiq1/.lustre/fid/[0x200000402:0x83f:0x0]': Invalid argument

      On the client side, the error logs are:

      00000002:00000001:1.0:1583284421.042097:0:19386:0:(mdc_locks.c:1001:mdc_finish_intent_lock()) Process entered
      00000002:00000001:1.0:1583284421.042098:0:19386:0:(mdc_locks.c:1028:mdc_finish_intent_lock()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
      00000002:00000001:1.0:1583284421.042099:0:19386:0:(mdc_locks.c:1250:mdc_intent_lock()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
      00800000:00000001:1.0:1583284421.042100:0:19386:0:(lmv_intent.c:354:lmv_intent_open()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
      00800000:00000001:1.0:1583284421.042102:0:19386:0:(lmv_intent.c:526:lmv_intent_lock()) Process leaving (rc=18446744073709551594 : -22 : ffffffffffffffea)
      00000080:00000001:1.0:1583284421.042103:0:19386:0:(namei.c:796:ll_lookup_it()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
      00000100:00000001:1.0:1583284421.042105:0:19386:0:(client.c:2519:__ptlrpc_req_finished()) Process entered
      

      On the MDS, the logs are:

      00000004:00000400:0.0:1583284633.757717:0:4400:0:(mdd_device.c:775:obf_lookup()) bgdzjiq1-MDD0000: Trying to lookup invalid FID [unknown] in .lustre/fid, FID format should be [0x200000400:0x1:0x0]
      00000004:00000001:0.0:1583284633.757724:0:4400:0:(mdd_device.c:776:obf_lookup()) Process leaving via out (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
      00000004:00000001:0.0:1583284633.757729:0:4400:0:(mdt_open.c:1426:mdt_reint_open()) Process leaving via out_parent (rc=18446744073709551594 : -22 : 0xffffffffffffffea)
      00000004:00000001:0.0:1583284633.757734:0:4400:0:(mdt_handler.c:3446:mdt_object_unlock()) Process entered
      

      So, looks like the ll_follow_link() causes the problem. When doing the lookup, the client find the inode is a symbol link pointing to "unknown", so naturely, it replaces "/mnt/bgdzjiq1/.lustre/fid/[0x200000402:0x83f:0x0]" to "/mnt/bgdzjiq1/.lustre/fid/unknown". Thus the opening fails on MDT.

      I am not sure we can consider this as a feature, because we can touch a symbol link itself even the symbol link points to a non-existing file.

      Attachments

        1. client.log
          198 kB
        2. mds.log
          238 kB
        3. strace.txt
          5 kB

        Activity

          People

            wc-triage WC Triage
            lixi_wc Li Xi
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: