Esempio n. 1
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 5
0
static bool should_fail_iommu(struct device *dev)
{
	return dev->archdata.fail_iommu && should_fail(&fail_iommu, 1);
}