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

getdents() against empty striped directory always returns 1365 dirents

    XMLWordPrintable

Details

    • Bug
    • Resolution: Won't Fix
    • Major
    • None
    • Lustre 2.10.8, Lustre 2.12.4
    • 9223372036854775807

    Description

      Created directory with "lfs mkdir -c2 <thepath>" on Lustre 2.10.8 based client.
      May have attempted create subdirs or files (not sure, I'd run a series of mdtest runs across multiple directories, and canceled via Ctrl-C partway through).
      ls <thepath> appears to hang.
      Running under strace shows that getdents() calls are always returning the same contents, never return EOF.

      No error messages are reported on the console of the servers or the client.

      [faaland1@opal174 branch:master src] $ps -f
      UID        PID  PPID  C STIME TTY          TIME CMD
      faaland1 52122 52121  0 09:58 pts/0    00:00:00 -bash
      faaland1 59859 52122 99 10:16 pts/0    01:20:38 ls -l /p/lforge/faaland1/mdtest/mdt0 /p/lforge/faaland1/mdtest/mdt1 /p
      faaland1 64327 52122  0 11:36 pts/0    00:00:00 ps -f
      [faaland1@opal174 branch:master src] $strace -p 59859 2>&1 | head -n4
      strace: Process 59859 attached
      getdents(3, /* 1365 entries */, 32768)  = 32760
      getdents(3, /* 1365 entries */, 32768)  = 32760
      getdents(3, /* 1365 entries */, 32768)  = 32760
      [faaland1@opal174 branch:master src] $ls -l /proc/59859/fd
      total 0
      lrwx------ 1 faaland1 faaland1 64 Mar 13 10:41 0 -> /dev/pts/0
      lrwx------ 1 faaland1 faaland1 64 Mar 13 10:41 1 -> /dev/pts/0
      lrwx------ 1 faaland1 faaland1 64 Mar 13 10:16 2 -> /dev/pts/0
      lr-x------ 1 faaland1 faaland1 64 Mar 13 10:41 3 -> /p/lforge/faaland1/mdtest/mdtcount2
      

      The 1365 entries returned are always the same - 676 entries for ".." and 689 entries for "."

          676 {d_ino=144115272398143489, d_off=0, d_reclen=24, d_name="..", d_type=DT_DIR}
          689 {d_ino=144115339574197893, d_off=0, d_reclen=24, d_name=".", d_type=DT_DIR}
      

      I mounted the filesystem on another Lustre 2.10.8 node and ls of that directory produces the same symptoms.

      I mounted the file system on a Lustre 2.12.4 node and ls of that directory behaves as normal - getdents() is called twice, once it returns 2 entries, second time it returns 0 entries and 0 bytes (end of directory).

      Attachments

        Activity

          People

            laisiyao Lai Siyao
            ofaaland Olaf Faaland
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: