From patchwork Thu Mar 23 11:55:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wenchao Hao X-Patchwork-Id: 74041 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:604a:0:0:0:0:0 with SMTP id j10csp2873317wrt; Thu, 23 Mar 2023 05:13:55 -0700 (PDT) X-Google-Smtp-Source: AK7set8MsS4kpAI+57nuK7W5UQB25A+cxSTY4dwwYI+AlAE421YXgmzRz2O49idx1FjGZpuB1oL8 X-Received: by 2002:aa7:d748:0:b0:500:2c4f:f17f with SMTP id a8-20020aa7d748000000b005002c4ff17fmr10718492eds.20.1679573635090; Thu, 23 Mar 2023 05:13:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679573635; cv=none; d=google.com; s=arc-20160816; b=BpchqtInPPPMobZw++wAReSHwU+WdOJqOfSj46G+4W7d00cminSHF/ryFlnRV3ReNa ZiAza0E/uZRvGRbqovwODmRNFmGdYMGge7e27WCQ1+I86n3l260D1sgh+ycSQbVk4g0t WGG3lv6rl2p5lyHUz65JY3yMuTH8MRLc5Q8ZywOuU+JIyd5zNPwGMhC9/EO17aQnjIK5 DE/IzwvSIJCYCJ28hAAvxfWtLHyh2hDkbL5wrZ497Lq3GEvu/+apIPbNiQBseF+9tV7U nlOYQMLyYCbWVg3/4X/ZffrJVfin4iBgPxMXA9MrEd2N3HCagkbVsd5rrB+jUeSazM9Y fUvA== 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 Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n17-20020aa7db51000000b004fa08b78769si2167090edt.450.2023.03.23.05.13.31; Thu, 23 Mar 2023 05:13:55 -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 S229738AbjCWL5z (ORCPT + 99 others); Thu, 23 Mar 2023 07:57:55 -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 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 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1761160604111306583?= X-GMAIL-MSGID: =?utf-8?q?1761160604111306583?= 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;