From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============7362087308587051606==" MIME-Version: 1.0 From: Ming Lin Subject: [SPDK] [RFC PATCH 3/4] Add ScanTarget to optimize spdk app start time Date: Thu, 10 May 2018 20:25:53 -0700 Message-ID: <1526009154-5492-4-git-send-email-minggr@gmail.com> In-Reply-To: 1526009154-5492-1-git-send-email-minggr@gmail.com List-ID: To: spdk@lists.01.org --===============7362087308587051606== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Ming Lin For example, [VirtioUser0] Path /var/run/vhost.nvme0 Queues 3 Name nvme0 ScanTarget 0 "ScanTarget 0" tells virtio scsi only scans vhost target 0. If not specified, will do a full scan. Signed-off-by: Ming Lin --- lib/bdev/virtio/bdev_virtio_scsi.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/lib/bdev/virtio/bdev_virtio_scsi.c b/lib/bdev/virtio/bdev_virt= io_scsi.c index 0602597..e677a50 100644 --- a/lib/bdev/virtio/bdev_virtio_scsi.c +++ b/lib/bdev/virtio/bdev_virtio_scsi.c @@ -97,6 +97,8 @@ struct virtio_scsi_dev { = /** protect reconnect process */ pthread_mutex_t reconn_mutex; + + int scan_target; }; = struct virtio_scsi_io_ctx { @@ -351,6 +353,8 @@ virtio_user_scsi_dev_create(const char *name, const cha= r *path, return NULL; } = + svdev->scan_target =3D -1; + vdev =3D &svdev->vdev; rc =3D virtio_user_dev_init(vdev, name, path, queue_size); if (rc !=3D 0) { @@ -869,8 +873,13 @@ bdev_virtio_poll(void *arg) = if (scan_ctx->restart) { scan_ctx->restart =3D false; - scan_ctx->full_scan =3D true; - _virtio_scsi_dev_scan_tgt(scan_ctx, 0); + if (svdev->scan_target =3D=3D -1) { + scan_ctx->full_scan =3D true; + _virtio_scsi_dev_scan_tgt(scan_ctx, 0); + } else { + scan_ctx->full_scan =3D false; + _virtio_scsi_dev_scan_tgt(scan_ctx, svdev->scan_target); + } continue; } = @@ -1588,6 +1597,7 @@ bdev_virtio_process_config(void) char *path, *name; unsigned vdev_num; int num_queues; + int scan_target; bool enable_pci; int rc =3D 0; = @@ -1629,6 +1639,9 @@ bdev_virtio_process_config(void) rc =3D -1; goto out; } + + scan_target =3D spdk_conf_section_get_intval(sp, "ScanTarget"); + svdev->scan_target =3D scan_target; } = sp =3D spdk_conf_find_section(NULL, "VirtioPci"); @@ -1734,9 +1747,13 @@ virtio_scsi_dev_scan(struct virtio_scsi_dev *svdev, = bdev_virtio_create_cb cb_fn, base =3D svdev->scan_ctx; base->cb_fn =3D cb_fn; base->cb_arg =3D cb_arg; - base->full_scan =3D true; - - _virtio_scsi_dev_scan_tgt(base, 0); + if (svdev->scan_target =3D=3D -1) { + base->full_scan =3D true; + _virtio_scsi_dev_scan_tgt(base, 0); + } else { + base->full_scan =3D false; + _virtio_scsi_dev_scan_tgt(base, svdev->scan_target); + } return 0; } = @@ -1766,7 +1783,7 @@ virtio_scsi_dev_scan_tgt(struct virtio_scsi_dev *svde= v, uint8_t target) } = base =3D svdev->scan_ctx; - base->full_scan =3D true; + base->full_scan =3D (svdev->scan_target =3D=3D -1) ? true : false; _virtio_scsi_dev_scan_tgt(base, target); return 0; } -- = 1.9.1 --===============7362087308587051606==--