- if (ret) {
- CERROR("cfs_fail_timeout id %x sleeping for %dms\n",
- id, ms);
- schedule_timeout_and_set_state(TASK_UNINTERRUPTIBLE,
- cfs_time_seconds(ms) / 1000);
- set_current_state(TASK_RUNNING);
- CERROR("cfs_fail_timeout id %x awake\n", id);
+ if (ret && likely(ms > 0)) {
+ CERROR("cfs_fail_timeout id %x sleeping for %dms\n", id, ms);
+ while (ktime_before(ktime_get(), till)) {
+ schedule_timeout_uninterruptible(cfs_time_seconds(1)
+ / 10);
+ set_current_state(TASK_RUNNING);
+ if (!cfs_fail_loc) {
+ CERROR("cfs_fail_timeout interrupted\n");
+ break;
+ }
+ }
+ if (cfs_fail_loc)
+ CERROR("cfs_fail_timeout id %x awake\n", id);