Date: Sat, 15 Dec 2018 06:16:28 +0800 From: Marcelo Araujo <araujobsdport@gmail.com> To: Alexander Motin <mav@freebsd.org> Cc: src-committers <src-committers@freebsd.org>, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-12@freebsd.org Subject: Re: svn commit: r342083 - stable/12/usr.sbin/bhyve Message-ID: <CAOfEmZgVUNMgeBjdhjSDtohCkBK7Q9_s7jdsa7DNVZVxckOuyA@mail.gmail.com> In-Reply-To: <201812141449.wBEEn5eQ001337@repo.freebsd.org> References: <201812141449.wBEEn5eQ001337@repo.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Your mfc was quite fast less than 1 week, usually we take a bit more of time before we do the mfc! On Fri, Dec 14, 2018, 10:49 PM Alexander Motin <mav@freebsd.org wrote: > Author: mav > Date: Fri Dec 14 14:49:04 2018 > New Revision: 342083 > URL: https://svnweb.freebsd.org/changeset/base/342083 > > Log: > MFC r341829: Allow CTL device specification in bhyve virtio-scsi. > > There was a large refactoring done in CTL to allow multiple ioctl > frontend > ports (and respective devices) to be created, particularly for bhyve. > Unfortunately, respective part of bhyve functionality got lost somehow > from > the original virtio-scsi commit. This change allows wanted device path > to > be specified in either of two ways: > -s 6,virtio-scsi,/dev/cam/ctl1.1 > -s 6,virtio-scsi,dev=/dev/cam/ctl2.3 > If neither is specified, the default /dev/cam/ctl device is used. > > While there, remove per-queue CTL device opening, which makes no sense at > this point. > > Modified: > stable/12/usr.sbin/bhyve/bhyve.8 > stable/12/usr.sbin/bhyve/pci_virtio_scsi.c > Directory Properties: > stable/12/ (props changed) > > Modified: stable/12/usr.sbin/bhyve/bhyve.8 > > ============================================================================== > --- stable/12/usr.sbin/bhyve/bhyve.8 Fri Dec 14 14:46:35 2018 > (r342082) > +++ stable/12/usr.sbin/bhyve/bhyve.8 Fri Dec 14 14:49:04 2018 > (r342083) > @@ -24,7 +24,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd October 24, 2018 > +.Dd December 11, 2018 > .Dt BHYVE 8 > .Os > .Sh NAME > @@ -298,7 +298,16 @@ if not explicitly specified. > .Pp > SCSI devices: > .Bl -tag -width 10n > -.It Pa /dev/cam/ Ns Oo , Ns Ar port and initiator_id Oc > +.It Pa /dev/cam/ctl Ns Oo Ar pp . Ns Ar vp Oc Ns Oo , Ns Ar > scsi-device-options Oc > +.El > +.Pp > +The > +.Ar scsi-device-options > +are: > +.Bl -tag -width 10n > +.It Li iid= Ns Ar IID > +Initiator ID to use when sending requests to specified CTL port. > +The default value is 0. > .El > .Pp > TTY devices: > > Modified: stable/12/usr.sbin/bhyve/pci_virtio_scsi.c > > ============================================================================== > --- stable/12/usr.sbin/bhyve/pci_virtio_scsi.c Fri Dec 14 14:46:35 2018 > (r342082) > +++ stable/12/usr.sbin/bhyve/pci_virtio_scsi.c Fri Dec 14 14:49:04 2018 > (r342083) > @@ -105,7 +105,6 @@ struct pci_vtscsi_config { > struct pci_vtscsi_queue { > struct pci_vtscsi_softc * vsq_sc; > struct vqueue_info * vsq_vq; > - int vsq_ctl_fd; > pthread_mutex_t vsq_mtx; > pthread_mutex_t vsq_qmtx; > pthread_cond_t vsq_cv; > @@ -529,7 +528,7 @@ pci_vtscsi_request_handle(struct pci_vtscsi_queue *q, > sbuf_delete(sb); > } > > - err = ioctl(q->vsq_ctl_fd, CTL_IO, io); > + err = ioctl(sc->vss_ctl_fd, CTL_IO, io); > if (err != 0) { > WPRINTF(("CTL_IO: err=%d (%s)\n", errno, strerror(errno))); > cmd_wr->response = VIRTIO_SCSI_S_FAILURE; > @@ -639,14 +638,8 @@ pci_vtscsi_init_queue(struct pci_vtscsi_softc *sc, > int i; > > queue->vsq_sc = sc; > - queue->vsq_ctl_fd = open("/dev/cam/ctl", O_RDWR); > queue->vsq_vq = &sc->vss_vq[num + 2]; > > - if (queue->vsq_ctl_fd < 0) { > - WPRINTF(("cannot open /dev/cam/ctl: %s\n", > strerror(errno))); > - return (-1); > - } > - > pthread_mutex_init(&queue->vsq_mtx, NULL); > pthread_mutex_init(&queue->vsq_qmtx, NULL); > pthread_cond_init(&queue->vsq_cv, NULL); > @@ -672,24 +665,34 @@ static int > pci_vtscsi_init(struct vmctx *ctx, struct pci_devinst *pi, char *opts) > { > struct pci_vtscsi_softc *sc; > - char *optname = NULL; > - char *opt; > - int i; > + char *opt, *optname; > + const char *devname; > + int i, optidx = 0; > > sc = calloc(1, sizeof(struct pci_vtscsi_softc)); > - sc->vss_ctl_fd = open("/dev/cam/ctl", O_RDWR); > + devname = "/dev/cam/ctl"; > + while ((opt = strsep(&opts, ",")) != NULL) { > + optname = strsep(&opt, "="); > + if (opt == NULL && optidx == 0) { > + if (optname[0] != 0) > + devname = optname; > + } else if (strcmp(optname, "dev") == 0 && opt != NULL) { > + devname = opt; > + } else if (strcmp(optname, "iid") == 0 && opt != NULL) { > + sc->vss_iid = strtoul(opt, NULL, 10); > + } else { > + fprintf(stderr, "Invalid option %s\n", optname); > + free(sc); > + return (1); > + } > + optidx++; > + } > > + sc->vss_ctl_fd = open(devname, O_RDWR); > if (sc->vss_ctl_fd < 0) { > - WPRINTF(("cannot open /dev/cam/ctl: %s\n", > strerror(errno))); > + WPRINTF(("cannot open %s: %s\n", devname, > strerror(errno))); > + free(sc); > return (1); > - } > - > - while ((opt = strsep(&opts, ",")) != NULL) { > - if ((optname = strsep(&opt, "=")) != NULL) { > - if (strcmp(optname, "iid") == 0) { > - sc->vss_iid = strtoul(opt, NULL, 10); > - } > - } > } > > vi_softc_linkup(&sc->vss_vs, &vtscsi_vi_consts, sc, pi, > sc->vss_vq); > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAOfEmZgVUNMgeBjdhjSDtohCkBK7Q9_s7jdsa7DNVZVxckOuyA>