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

use the dcache properly with .lustre/fid

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: Upstream
    • Labels:
      None
    • Severity:
      3
    • Rank (Obsolete):
      9223372036854775807

      Description

      While addressing several bugs for how Lustre handles the dcache a bug was exposed with sanity test 233. In the testing with newer kernels the following was seen:

      VFS: Lookup of '[0x200000002:0x1:0x0]' in lustre lustre would have caused loop

      In older kernels it is an outright crash of the node. After some debugging it was discovered why. If a name in .lustre/fid refers to a directory, then that directory will (could) have 2 names in the dcache - the name in .lustre/fid, and the "real" name. The dcache does not permit this. You cannot have two dentries pointing the the same directory inode. Multiple hard links to directories are forbidden. Currently lustre attempts to break this rule by spinning its own dcache routines but that does not guarantee in the future that some core dcache functionality will change that breaks lustre. Due to the having multiple hard links you can form loops like reported above or if some core dcache functionality does an assert of dancestor() that will crash the node.  It could even be possible that in the future the dcache core code might even prune its cache of broken dentries.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                simmonsja James A Simmons
                Reporter:
                simmonsja James A Simmons
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: