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

big DIRECT_IO reads zeroes

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • None
    • Lustre 2.16.0
    • None
    • 3
    • 9223372036854775807

    Description

      if read() is called with a large enough O_DIRECT then it returns zeroes instead of data. It happens on some kernels, when read size is more than ~680Mb.

      Going to read: 536870912(0x20000000) bytes
      Read: 402653184 bytes. Total bytes read: 402653184
      Read: 134217728 bytes. Total bytes read: 536870912
      read[0x18000000] == ef
      Going to read: 805306368(0x30000000) bytes
      Read: 402653184 bytes. Total bytes read: 402653184
      Read: 402653184 bytes. Total bytes read: 805306368
      read[0x18000000] == ef
      Going to read: 1073741824(0x40000000) bytes
      Read: 671088640 bytes. Total bytes read: 671088640
      read[0x18000000] == 0
      

      each time it splits incoming read size by 400Mb, but when size is more than 800Mb, IO first split size becomes 670Mb but it reads still only 400Mb of data.

      Bug was seen in exa6+el9.4 client so far, master is being tested

      Attachments

        Issue Links

          Activity

            People

              wc-triage WC Triage
              tappro Mikhail Pershin
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: