Skip site navigation (1)Skip section navigation (2)
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>