int blk_should_fake_timeout(struct request_queue *q) { if (!test_bit(QUEUE_FLAG_FAIL_IO, &q->queue_flags)) return 0; return should_fail(&fail_io_timeout, 1); }
bool should_failslab(size_t size, gfp_t gfpflags) { if (gfpflags & __GFP_NOFAIL) return false; if (failslab.ignore_gfp_wait && (gfpflags & __GFP_WAIT)) return false; return should_fail(&failslab.attr, size); }
bool should_failslab(size_t size, gfp_t gfpflags, unsigned long cache_flags) { if (gfpflags & __GFP_NOFAIL) return false; if (failslab.ignore_gfp_reclaim && (gfpflags & __GFP_RECLAIM)) return false; if (failslab.cache_filter && !(cache_flags & SLAB_FAILSLAB)) return false; return should_fail(&failslab.attr, size); }
void ufsdbg_fail_request(struct ufs_hba *hba, u32 *intr_status) { u8 ocs_err; static const u32 errors[] = { CONTROLLER_FATAL_ERROR, SYSTEM_BUS_FATAL_ERROR, INJECT_COMMAND_HANG, }; if (!should_fail(&hba->debugfs_files.fail_attr, 1)) goto out; *intr_status = errors[prandom_u32() % ARRAY_SIZE(errors)]; dev_info(hba->dev, "%s: fault-inject error: 0x%x\n", __func__, *intr_status); switch (*intr_status) { case CONTROLLER_FATAL_ERROR: /* fall through */ ocs_err = OCS_FATAL_ERROR; goto set_ocs; case SYSTEM_BUS_FATAL_ERROR: ocs_err = OCS_INVALID_CMD_TABLE_ATTR; set_ocs: if (!inject_fatal_err_tr(hba, ocs_err)) if (!inject_fatal_err_tm(hba, ocs_err)) *intr_status = 0; break; case INJECT_COMMAND_HANG: if (!inject_cmd_hang_tr(hba)) inject_cmd_hang_tm(hba); break; default: BUG(); /* some configurations ignore panics caused by BUG() */ break; } out: return; }
static bool should_fail_iommu(struct device *dev) { return dev->archdata.fail_iommu && should_fail(&fail_iommu, 1); }