Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-10911 FLR2: Read only erasure coding
  3. LU-20708

FLR-EC: degraded mmap read of an EC file never completes (sanity-ec 41d)

XMLWordPrintable

    • Icon: Technical task Technical task
    • Resolution: Unresolved
    • Icon: Medium Medium
    • None
    • None
    • None
    • 3
    • 9223372036854775807

      Reads of an erasure-coded file whose data object cannot be read are reconstructed from parity by switching the buffered read (CIT_READ) to the recovery read (CIT_EC_RD), as landed in LU-12669. The page-fault path (CIT_FAULT) has no such switch. With one data OST failing its bulk reads, an mmap read of the file does not fail and does not recover either: the OSC alternates between "too many resent retries" and osc_brw_redo_request() for as long as the fault persists, so no error reaches the LOV layer and the faulting process hangs until the test harness kills the node. With the OSC import deactivated instead (lctl deactivate), the fault path returns -EIO and the process is killed with SIGBUS.

      The currently excepted sanity-ec test_41d ("test mmap reads with EC recovery") reproduces it with a 4+2 layout, mmap_cat after arming OBD_FAIL_OST_BRW_READ_BULK (0x20f) on the OST holding the first data object with osc.*.resend_count=1. It is excepted in sanity-ec.sh until the retry loop is bounded and CIT_FAULT can enter the recovery read; this ticket tracks that work separately from LU-12668.

      Expected: an mmap read of a degraded EC file returns the reconstructed data, as read(2) does since LU-12669.

            wc-triage WC Triage
            mvef Marc Vef
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: