Received: by 2002:ac8:156:0:b0:3e0:cd10:60c8 with SMTP id f22csp2499900qtg; Thu, 23 Mar 2023 04:59:12 -0700 (PDT) X-Google-Smtp-Source: AK7set9bersE1+2tLjmizpWDL3S74hqJqLRT5XxDhga9IC1STBNq/Z5lYNQRGCHadawsK6ALkml1 X-Received: by 2002:aa7:db8f:0:b0:4fd:f0a7:e0a1 with SMTP id u15-20020aa7db8f000000b004fdf0a7e0a1mr9382312edt.24.1679572751830; Thu, 23 Mar 2023 04:59:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679572751; cv=none; d=google.com; s=arc-20160816; b=0d9rBybkU1hh8wMoUuSHQLNoBtYp7aFyUDSDJSCuqzqNpxiPaTTl2LYnNtwbMyE615 I9OObQz8B/Qw1BrRy4pvrloM8ejozpKO9+5VCcTgoZVXAmK4q+OC/LO8xHTTwtFiKaih ZLUvDiqJDzV6FwnWqqpRs9+lKK6qrmYDQDXYG6LWAmTnZyYFl9/mJgrgVUa9aP/LE1RY aPRaVnIXKXBixBjNl1nzpdvD6WYkMVyH0nIONKciUo//4ARDCHQ6sgxFuUxYOnyiH6Ja x6SQLdq/HI1tE2WL5JHqUiRALKlfAvQgpkT7fpaIoE3jQ67xt+qQ8Ef3tnTnyxk4M2SD woTg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=8LVeSgJe6w0bjgL/JNoN0QyxUAblwQ9xCGKHd2QdrSE=; b=Q5eUNYOeM2DHmYVwrQ/ip+O+frtKbyjjMgh2Rimzu7OlT8W21fa6a1dRqnnM4damtT bPE3qXsWGzhks3Pxa9a/v47OzzMvYfQhhwhzduQ3fsVW7Nl/d4ZmdODd36gkoKhbuWdj JIPUJ/sJd1JdDnVGeUN/jSxrQ2UyxMDdQ2ggKvu2YtPu3+tSQnUMc4OEues5oXmkGWzN 9JSRsT9DT/neM2yRbPTSR/nW7Qd6plPYTT3vqkMIRud7SEbO3t5O5T3sW6UubgMDvVvZ 9eEchHjMScM1rVf6q6UpPGzIWgCHJ4Y+jJNN16ngVJfUT4JYwNepqUsfRinMIw+ghbNH lrXA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w20-20020a056402071400b004fd29482079si19680955edx.565.2023.03.23.04.58.46; Thu, 23 Mar 2023 04:59:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229463AbjCWL5y (ORCPT + 99 others); Thu, 23 Mar 2023 07:57:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231224AbjCWL5V (ORCPT ); Thu, 23 Mar 2023 07:57:21 -0400 Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 15D0E36094; Thu, 23 Mar 2023 04:56:56 -0700 (PDT) Received: from kwepemm600012.china.huawei.com (unknown [172.30.72.57]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4Pj3hv6fnNzKnDF; Thu, 23 Mar 2023 19:56:31 +0800 (CST) Received: from build.huawei.com (10.175.101.6) by kwepemm600012.china.huawei.com (7.193.23.74) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Thu, 23 Mar 2023 19:56:54 +0800 From: Wenchao Hao To: "James E . J . Bottomley" , "Martin K . Petersen" , Douglas Gilbert , , CC: , , Subject: [PATCH 2/5] scsi:scsi_debug: Define grammar to remove added error injection Date: Thu, 23 Mar 2023 19:55:58 +0800 Message-ID: <20230323115601.178494-3-haowenchao2@huawei.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230323115601.178494-1-haowenchao2@huawei.com> References: <20230323115601.178494-1-haowenchao2@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.101.6] X-ClientProxiedBy: dggems706-chm.china.huawei.com (10.3.19.183) To kwepemm600012.china.huawei.com (7.193.23.74) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-2.3 required=5.0 tests=RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The grammar to remove error injection is a line with fixed 3 columns separated by spaces. First column is fixed to "-". It tells this is a removal operation. Second column is the error code to match. Third column is the scsi command to match. For example the following command would remove timeout injection of inquiry command. echo "- 0 0x12" > /sys/class/scsi_device/0:0:0:1/device/error_inect/error Signed-off-by: Wenchao Hao --- drivers/scsi/scsi_debug.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/scsi/scsi_debug.c b/drivers/scsi/scsi_debug.c index 8cfa19f8b034..e5ee75ce6d27 100644 --- a/drivers/scsi/scsi_debug.c +++ b/drivers/scsi/scsi_debug.c @@ -7609,6 +7609,30 @@ static void sdebug_err_add(struct device *dev, struct sdebug_err_inject *new) list_add_tail(&new->list, &devip->inject_err_list); } +static int sdebug_err_remove(struct device *dev, const char *buf, size_t count) +{ + struct scsi_device *sdev = to_scsi_device(dev); + struct sdebug_dev_info *devip = (struct sdebug_dev_info *)sdev->hostdata; + struct sdebug_err_inject *tmp, *err; + int type; + unsigned char cmd; + + if (sscanf(buf, "- %d %hhx", &type, &cmd) != 2) + return -EINVAL; + + list_for_each_entry_safe(err, tmp, &devip->inject_err_list, list) { + if (err->type == type && err->cmd == cmd) { + sdev_printk(KERN_INFO, sdev, "Remove %d 0x%x\n", + err->type, err->cmd); + list_del(&err->list); + kfree(err); + return count; + } + } + + return -EINVAL; +} + static ssize_t error_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -7654,6 +7678,9 @@ static ssize_t error_store(struct device *dev, struct device_attribute *attr, unsigned int inject_type; struct sdebug_err_inject *inject; + if (buf[0] == '-') + return sdebug_err_remove(dev, buf, count); + if (sscanf(buf, "%d", &inject_type) != 1) return -EINVAL; -- 2.35.3