From patchwork Mon Apr 19 16:06:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Garry X-Patchwork-Id: 424022 Delivered-To: patch@linaro.org Received: by 2002:a02:6a6f:0:0:0:0:0 with SMTP id m47csp2853912jaf; Mon, 19 Apr 2021 09:10:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzG6OBciER+3p9wtzBcCxGNBlx0SvA0eO+IF1uo92qfZhVBFJlK4/M7aPBTYsrboyz+s9+z X-Received: by 2002:a17:906:d783:: with SMTP id pj3mr22273137ejb.38.1618848658786; Mon, 19 Apr 2021 09:10:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1618848658; cv=none; d=google.com; s=arc-20160816; b=KE1MDkCXfPpvxIbneMfWBHBOr0NGqXDHA1t+eQlOo9tIPVlqQGQW3laCSRApHMx+ke RyBKXpjubhStdWTi+GOLZp6wRhKB3OjsCDoDT+0vYAshYRYcJ1j5Yj97spjbiW/3jPsW aASKkrLTjl2LdPhkzatyCLsRz0CekEch5rbot1xtSTynq8nbw26DHRBbr1qfYBCIna5J 30Ag/uzw4PawcD2/eg4AjxMssNKx+FVvsMhsHixubRstnNSbJQYKwQposk73TjcOBIMz Ljhc478zWJFfc/Lxk8P8ZIHqcRdXRq2lP8qRLC2/soinTBklbNyP2aS8PfmCtIiOXaVD eeXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=VRwfGTFlZcygPTFQijEdwswhRQ5GXRd/8iIIAMVm4+g=; b=p9gyXsdJDVxFlnEHdYpWO0dFzf9zSAbGQ9HYusYekTj7R5pxSJrp0ww9yIn5gaOAsY yopgh/vKIMq6irbVID3X832+y94//t5gtw6arKD1TxQxKDeu+dc4M5rok/ePlfeLMTxr vUP4tYnEpdavBRHJdYPBbKtToKuH/HyVJYKeyzQFj1VLfqo3/kNTkgd51UMYNEOQjQjx nV9PJJRKmF4KlXhP+ykoVO6xAtMK0B2nHlopTX+VnTVBxxjBXPemQKfH/UCr0HX0wwl4 KvgjXmidYbedes3huDqZH0byLkvIa+ifaY1ljHlNcDCaZ1ry7qbGuz9CIlssI6osyMei aPtA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-scsi-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-scsi-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d16si13054495edn.502.2021.04.19.09.10.58 for ; Mon, 19 Apr 2021 09:10:58 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-scsi-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-scsi-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-scsi-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233163AbhDSQL1 (ORCPT ); Mon, 19 Apr 2021 12:11:27 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:16481 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232960AbhDSQL1 (ORCPT ); Mon, 19 Apr 2021 12:11:27 -0400 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.58]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4FPBZ900Z1zrdkk; Tue, 20 Apr 2021 00:08:32 +0800 (CST) Received: from localhost.localdomain (10.69.192.58) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.498.0; Tue, 20 Apr 2021 00:10:43 +0800 From: John Garry To: , CC: , , , , , John Garry Subject: [PATCH] scsi: core: Cap initial sdev queue depth at shost.can_queue Date: Tue, 20 Apr 2021 00:06:24 +0800 Message-ID: <1618848384-204144-1-git-send-email-john.garry@huawei.com> X-Mailer: git-send-email 2.8.1 MIME-Version: 1.0 X-Originating-IP: [10.69.192.58] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org Function sdev_store_queue_depth() enforces that the sdev queue depth cannot exceed shost.can_queue. However, the LLDD may still set cmd_per_lun > can_queue, which leads to an initial sdev queue depth greater than can_queue. Stop this happened by capping initial sdev queue depth at can_queue. Signed-off-by: John Garry --- Topic originally discussed at: https://lore.kernel.org/linux-scsi/85dec8eb-8eab-c7d6-b0fb-5622747c5499@interlog.com/T/#m5663d0cac657d843b93d0c9a2374f98fc04384b9 Last idea there was to error/warn in scsi_add_host() for cmd_per_lun > can_queue. However, such a shost driver could still configure the sdev queue depth to be sound value at .slave_configure callback, so now thinking the orig patch better. -- 2.26.2 diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c index 9f1b7f3c650a..8de2f830bcdc 100644 --- a/drivers/scsi/scsi_scan.c +++ b/drivers/scsi/scsi_scan.c @@ -277,7 +277,11 @@ static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget, WARN_ON_ONCE(!blk_get_queue(sdev->request_queue)); sdev->request_queue->queuedata = sdev; - depth = sdev->host->cmd_per_lun ?: 1; + if (sdev->host->cmd_per_lun) + depth = min_t(unsigned int, sdev->host->cmd_per_lun, + sdev->host->can_queue); + else + depth = 1; /* * Use .can_queue as budget map's depth because we have to