[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. |