svn commit: r342083 - stable/12/usr.sbin/bhyve
Marcelo Araujo
araujobsdport at gmail.com
Fri Dec 14 22:16:43 UTC 2018
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 at 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);
>
>
More information about the svn-src-all
mailing list