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

setting OBD_FAIL_OSC_MATCH would cause an infinite loop

    Details

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

      Description

      Setting OBD_FAIL_OSC_MATCH would cause an infinite call and return loop between osc_dlmlock_at_pgoff() and osc_match_base(). This fail loc is only set in sanity.sh test_62() which is never called.

      # bug 2330 - insufficient obd_match error checking causes LBUG                            
      test_62() {
              [ $PARALLEL == "yes" ] && skip "skip parallel run" && return
              f="$DIR/f62"
      	echo foo > $f
      	cancel_lru_locks osc
              lctl set_param fail_loc=0x405
              cat $f && error "cat succeeded, expect -EIO"
              lctl set_param fail_loc=0
      }
      # This test is now irrelevant (as of bug 10718 inclusion), we no longer
      # match every page all of the time.
      #run_test 62 "verify obd_match failure doesn't LBUG (should -EIO)"
      

      The OBD_FAIL_CHECK(OBD_FAIL_OSC_MATCH)) test in osc_match_base() should be removed along with test_62() in sanity.sh.

      Once this is done the return type of osc_match_base() should be changed from int to enum ldlm_mode.

      More generally, since osc_lock_match() is only called osc_dlmlock_at_pgoff() there could be several simplifications by just eliminating the former function.

        Attachments

          Activity

            People

            • Assignee:
              wc-triage WC Triage
              Reporter:
              jhammond John Hammond
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated: