Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp4300040ybb; Tue, 7 Apr 2020 04:55:38 -0700 (PDT) X-Google-Smtp-Source: APiQypJ0Rt3ySqqcULANkmjNS2xDpVwf0sIK8BNHrWmqxma9vhhGNfF0nUZHx1zrq1OfHy3u8qgZ X-Received: by 2002:a05:6830:55:: with SMTP id d21mr1217735otp.29.1586260538618; Tue, 07 Apr 2020 04:55:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586260538; cv=none; d=google.com; s=arc-20160816; b=Jtcoww+YLnUzrEI3MA3A7ue1+nOZg0QY+FezrMAB5/HtOdiEnfoRf2IscqK+ZRiDE2 /05gSoBtyzwoSnTsiaTcC6xi+3/bmYsnjrumUZAa8sd8yjfNdfxMQxbNEIa1/pJMqvig spNUcXgxae/9Y2Nsdr4Za3s4jF0t1+CCL+gHcd8FrUJOo4Bc2V/5tuv4Q5cbhT1jqDvq s7x8KKPbs+OGfJUpmprQ6l4zW3J1iM/2kcbq84ubbpODmRyzMSQu4VQfiJpWatNQzjXh awqiuqWW4KBVSWPDBvqtkWCLbKAYYES4BWpw7pt820//HvloY/4AVQn8EhhjuVw1QU0e wh6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject; bh=F+9DpbiAspyEuPKEIaoipnY23blF/LGw5AYhjfg1lDk=; b=Tp9a0CL5Br6lLG+hys7L3eSB7+XL+hBih1gEmhwwVm94MO6xvYaYogbv/XIY9jrc6j 9Ifspqo9gsDlIJIXCSc5xCymziKyJSlgV/nFHVBRc4H0LMrOCtkfn59F/FxaEHL7iOQm VeuwT5I1VQ0gPDxuGXhiDtukETJ5SoJOlx5EsFgupZ+PTv+gDshMjg5k/5q3RK62Jmls 5LlK6LOvVasxoFSlVC4OomWM2isgTtGjau31rThQn1KNJGk0qXJjZsoqaANRSc6zFHX/ TpxcjWg+62W5neOpFVA66q4TQqkbx6t6fwT22Vk/QIyENOwJibdsdB8dAXCOuzEHfjrY mnzA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f26si1188444otc.182.2020.04.07.04.55.26; Tue, 07 Apr 2020 04:55:38 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728511AbgDGLyy (ORCPT + 99 others); Tue, 7 Apr 2020 07:54:54 -0400 Received: from lhrrgout.huawei.com ([185.176.76.210]:2635 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726562AbgDGLyy (ORCPT ); Tue, 7 Apr 2020 07:54:54 -0400 Received: from lhreml724-chm.china.huawei.com (unknown [172.18.7.106]) by Forcepoint Email with ESMTP id 159A3B05CDA06F27F690; Tue, 7 Apr 2020 12:54:52 +0100 (IST) Received: from [127.0.0.1] (10.210.168.238) by lhreml724-chm.china.huawei.com (10.201.108.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1913.5; Tue, 7 Apr 2020 12:54:50 +0100 Subject: Re: [PATCH RFC v2 02/24] scsi: allocate separate queue for reserved commands To: Hannes Reinecke , Christoph Hellwig CC: , , , , , , , , , , , Hannes Reinecke References: <1583857550-12049-1-git-send-email-john.garry@huawei.com> <1583857550-12049-3-git-send-email-john.garry@huawei.com> <20200310183243.GA14549@infradead.org> <79cf4341-f2a2-dcc9-be0d-2efc6e83028a@huawei.com> <20200311062228.GA13522@infradead.org> From: John Garry Message-ID: <9c6ced82-b3f1-9724-b85e-d58827f1a4a4@huawei.com> Date: Tue, 7 Apr 2020 12:54:29 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.1.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.210.168.238] X-ClientProxiedBy: lhreml738-chm.china.huawei.com (10.201.108.188) To lhreml724-chm.china.huawei.com (10.201.108.75) X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/04/2020 10:05, Hannes Reinecke wrote: > On 3/11/20 7:22 AM, Christoph Hellwig wrote: >> On Tue, Mar 10, 2020 at 09:08:56PM +0000, John Garry wrote: >>> On 10/03/2020 18:32, Christoph Hellwig wrote: >>>> On Wed, Mar 11, 2020 at 12:25:28AM +0800, John Garry wrote: >>>>> From: Hannes Reinecke >>>>> >>>>> Allocate a separate 'reserved_cmd_q' for sending reserved commands. >>>> >>>> Why? Reserved command specifically are not in any way tied to queues. >>>> . >>>> >>> >>> So the v1 series used a combination of the sdev queue and the per-host >>> reserved_cmd_q. Back then you questioned using the sdev queue for virtio >>> scsi, and the unconfirmed conclusion was to use a common per-host q. This is >>> the best link I can find now: >>> >>> https://www.mail-archive.com/linux-scsi@vger.kernel.org/msg83177.html >> >> That was just a question on why virtio uses the per-device tags, which >> didn't look like it made any sense. What I'm worried about here is >> mixing up the concept of reserved tags in the tagset, and queues to use >> them. Note that we already have the scsi_get_host_dev to allocate >> a scsi_device and thus a request_queue for the host itself. That seems >> like the better interface to use a tag for a host wide command vs >> introducing a parallel path. >> > Thinking about it some more, I don't think that scsi_get_host_dev() is > the best way of handling it. > Problem is that it'll create a new scsi_device with , > which will then show up via eg 'lsscsi'. are you sure? Doesn't this function just allocate the sdev, but do nothing with it, like probing it? I bludgeoned it in here for PoC: https://github.com/hisilicon/kernel-dev/commit/ef0ae8540811e32776f64a5b42bd76cbed17ba47 And then still: john@ubuntu:~$ lsscsi [0:0:0:0] disk SEAGATE ST2000NM0045 N004 /dev/sda [0:0:1:0] disk SEAGATE ST2000NM0045 N004 /dev/sdb [0:0:2:0] disk ATASAMSUNG HM320JI 0_01 /dev/sdc [0:0:3:0] disk SEAGATE ST1000NM0023 0006 /dev/sdd [0:0:4:0] enclosu HUAWEIExpander 12Gx16 128- john@ubuntu:~$ Some proper plumbing would be needed, though. > This would be okay if 'this_id' would have been defined by the driver; > sadly, most drivers which are affected here do set 'this_id' to -1. > So we wouldn't have a nice target ID to allocate the device from, let > alone the problem that we would have to emulate a complete scsi device > with all required minimal command support etc. > And I'm not quite sure how well that would play with the exising SCSI > host template; the device we'll be allocating would have basically > nothing in common with the 'normal' SCSI devices. > > What we could do, though, is to try it the other way round: > Lift the request queue from scsi_get_host_dev() into the scsi host > itself, so that scsi_get_host_dev() can use that queue, but we also > would be able to use it without a SCSI device attached. wouldn't that limit 1x scsi device per host, not that I know if any more would ever be required? But it does still seem better to use the request queue in the scsi device. > cheers, John