[LU-8722] setting OBD_FAIL_OSC_MATCH would cause an infinite loop Created: 18/Oct/16  Updated: 30/Jan/22

Status: Open
Project: Lustre
Component/s: None
Affects Version/s: Lustre 2.15.0
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: John Hammond Assignee: WC Triage
Resolution: Unresolved Votes: 0
Labels: easy, osc

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.


Generated at Sat Feb 10 02:19:59 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.