From nobody Sat Dec 3 17:14:37 2022 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NPbyj3QWyz4ht6g; Sat, 3 Dec 2022 17:14:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NPbyj2zfFz43nm; Sat, 3 Dec 2022 17:14:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670087677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+6WzdLTfBF1KnwkZtuNq2N2q96L9E/eHQ34p6j4SGvw=; b=OgxTC2NybDKDKPpe2vlyxgIwR/2UCVT6nXBqbZf/OHn0++aPZRfW2oIwy1HOkrK1H/AZcA Fy9BNZpzaUhP/tP6LrHZ6Z0IsrUDUqUJzlcpjTofC+xfQDHmb9aaY9uB4WwjoGa8nmvIGk z+k4ww2O9iWTGu1yn9ZZ4TnvGVBXBCjQAYyOtHFvWwhQ0AWOg+0rPLr/YB/bJGADmqLl5q UCGMF50O/nw4ZjsMUUgObaFHzHs8oPiXGr/DJ1pObavWBmOQvgX/6tzgTD7b1H9BiXoxMH cRI3iLk54TeGUZKFBK1KoiSHWLx83D89LnvRUwN8j6brSVyEgXOyJl7mPj6k2A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670087677; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=+6WzdLTfBF1KnwkZtuNq2N2q96L9E/eHQ34p6j4SGvw=; b=yd0pYFdcoBnEUnAwf7TRWF4xEgZhRoZMYByS6Zvg1KGDM2xwF4pRKzxi+nW7q4wvILZPrD vIoqT9/aaM/+WKyG6coVl7x5sX8wBNYtmS6zsrObTCLWotWwAhSJUUtm0n8DmzdXHG5uPz zTovQqKVzFK5WNToRrO3p3pHDhzHwu4403GNYBCBKXLSW4YAu3OFtu02PCikGwq+AczTuQ Zdk0izGcsyYhMojzANzSZ7iy67HnO06P0kwUZuubRU4/k00wjUwB7evrowpA4w0lbgaoCK LmUy00fUQy3ToTr3p0eyL67vfZ1FSN4GGFWwQclGgOJgXe5jkPctQvyYMFrhJg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1670087677; a=rsa-sha256; cv=none; b=lNgus/rUXtp7xwYXhtIZD7uiAfS36g87NsD+VNlHYM9+HS6H9NPxQ1Brh8ieGEAUlcJ5Fy rK53K2+WY/7SZR3GAjdzns1v/g8cvcKiaHB10NSUuZUGF5JBAaBLhxGLLjHeN5EkDM+n9m NVOT3pJ9uIRjM902PVaHk482e6sGjcScLCcRRHIqiHkoAA8WmBMrAoZf6muxHm3LLjdw/P EP8SX6n17xbjA7qealWpbizRJmFPkmVF9IY4aCja5n97nTqUbLjWdylND3PYVYc1QS3yiy F1SoGrk8uh113f9/Gb7wWTVsH8OthmlM9zk5vmbS5UjrQ1WRvVo/faLmRUYaOw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4NPbyj1nkVz12jM; Sat, 3 Dec 2022 17:14:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2B3HEbUE007364; Sat, 3 Dec 2022 17:14:37 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2B3HEbAF007363; Sat, 3 Dec 2022 17:14:37 GMT (envelope-from git) Date: Sat, 3 Dec 2022 17:14:37 GMT Message-Id: <202212031714.2B3HEbAF007363@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Alexander Motin Subject: git: 7467a6953683 - main - CTL: Allow userland supply tags via ioctl frontend. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7467a6953683b439f7b31c2b42533cb893ed6be3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=7467a6953683b439f7b31c2b42533cb893ed6be3 commit 7467a6953683b439f7b31c2b42533cb893ed6be3 Author: Alexander Motin AuthorDate: 2022-12-03 17:05:05 +0000 Commit: Alexander Motin CommitDate: 2022-12-03 17:05:05 +0000 CTL: Allow userland supply tags via ioctl frontend. Before this ioctl frontend always replaced tags with sequential ones. It was done for ctladm, that can not keep track of global tag list. But in case of virtio-scsi in bhyve we can pass provided tags as-is. It should be on virtio-scsi initiator to provide us valid tags. It should allow proper task management, error reporting, etc. In case of several virtio-scsi devices, they should use different CTL ports or initiator IDs to avoid conflicts, but this is expected by design. PR: 267539 --- sys/cam/ctl/ctl_frontend_ioctl.c | 5 +++-- sys/cam/ctl/ctl_io.h | 2 +- usr.sbin/bhyve/pci_virtio_scsi.c | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sys/cam/ctl/ctl_frontend_ioctl.c b/sys/cam/ctl/ctl_frontend_ioctl.c index f53dae694867..af2cb459fbcd 100644 --- a/sys/cam/ctl/ctl_frontend_ioctl.c +++ b/sys/cam/ctl/ctl_frontend_ioctl.c @@ -632,8 +632,9 @@ ctl_ioctl_io(struct cdev *dev, u_long cmd, caddr_t addr, int flag, */ io->io_hdr.nexus.targ_port = cfi->port.targ_port; io->io_hdr.flags |= CTL_FLAG_USER_REQ; - if ((io->io_hdr.io_type == CTL_IO_SCSI) && - (io->scsiio.tag_type != CTL_TAG_UNTAGGED)) + if ((io->io_hdr.flags & CTL_FLAG_USER_TAG) == 0 && + io->io_hdr.io_type == CTL_IO_SCSI && + io->scsiio.tag_type != CTL_TAG_UNTAGGED) io->scsiio.tag_num = atomic_fetchadd_int(&cfi->cur_tag_num, 1); retval = cfi_submit_wait(io); diff --git a/sys/cam/ctl/ctl_io.h b/sys/cam/ctl/ctl_io.h index 9f22898e3ee5..30384bf80a02 100644 --- a/sys/cam/ctl/ctl_io.h +++ b/sys/cam/ctl/ctl_io.h @@ -88,7 +88,7 @@ typedef enum { CTL_FLAG_DATA_OUT = 0x00000002, /* DATA OUT */ CTL_FLAG_DATA_NONE = 0x00000003, /* no data */ CTL_FLAG_DATA_MASK = 0x00000003, - CTL_FLAG_DO_AUTOSENSE = 0x00000020, /* grab sense info */ + CTL_FLAG_USER_TAG = 0x00000020, /* userland provides tag */ CTL_FLAG_USER_REQ = 0x00000040, /* request came from userland */ CTL_FLAG_ALLOCATED = 0x00000100, /* data space allocated */ CTL_FLAG_ABORT_STATUS = 0x00000400, /* return TASK ABORTED status */ diff --git a/usr.sbin/bhyve/pci_virtio_scsi.c b/usr.sbin/bhyve/pci_virtio_scsi.c index 20f08b149af8..617074469fa7 100644 --- a/usr.sbin/bhyve/pci_virtio_scsi.c +++ b/usr.sbin/bhyve/pci_virtio_scsi.c @@ -406,6 +406,7 @@ pci_vtscsi_tmf_handle(struct pci_vtscsi_softc *sc, io->io_hdr.nexus.targ_lun = pci_vtscsi_get_lun(tmf->lun); io->taskio.tag_type = CTL_TAG_SIMPLE; io->taskio.tag_num = tmf->id; + io->io_hdr.flags |= CTL_FLAG_USER_TAG; switch (tmf->subtype) { case VIRTIO_SCSI_T_TMF_ABORT_TASK: @@ -520,6 +521,7 @@ pci_vtscsi_request_handle(struct pci_vtscsi_queue *q, struct iovec *iov_in, io->scsiio.sense_len = sc->vss_config.sense_size; io->scsiio.tag_num = cmd_rd->id; + io->io_hdr.flags |= CTL_FLAG_USER_TAG; switch (cmd_rd->task_attr) { case VIRTIO_SCSI_S_ORDERED: io->scsiio.tag_type = CTL_TAG_ORDERED;