vhost-user-scsi: remove server_sock from VusDev
It is unneeded in the VusDev device structure, and also simplify a bit the code. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
62ddfba034
commit
53a2e1b523
|
@ -28,7 +28,6 @@ typedef struct VusIscsiLun {
|
||||||
typedef struct VusDev {
|
typedef struct VusDev {
|
||||||
VugDev parent;
|
VugDev parent;
|
||||||
|
|
||||||
int server_sock;
|
|
||||||
VusIscsiLun lun;
|
VusIscsiLun lun;
|
||||||
GMainLoop *loop;
|
GMainLoop *loop;
|
||||||
} VusDev;
|
} VusDev;
|
||||||
|
@ -357,57 +356,12 @@ fail:
|
||||||
|
|
||||||
/** vhost-user-scsi **/
|
/** vhost-user-scsi **/
|
||||||
|
|
||||||
static void vdev_scsi_free(VusDev *vdev_scsi)
|
|
||||||
{
|
|
||||||
if (vdev_scsi->server_sock >= 0) {
|
|
||||||
close(vdev_scsi->server_sock);
|
|
||||||
}
|
|
||||||
g_main_loop_unref(vdev_scsi->loop);
|
|
||||||
g_free(vdev_scsi);
|
|
||||||
}
|
|
||||||
|
|
||||||
static VusDev *vdev_scsi_new(int server_sock)
|
|
||||||
{
|
|
||||||
VusDev *vdev_scsi;
|
|
||||||
|
|
||||||
vdev_scsi = g_new0(VusDev, 1);
|
|
||||||
vdev_scsi->server_sock = server_sock;
|
|
||||||
vdev_scsi->loop = g_main_loop_new(NULL, FALSE);
|
|
||||||
|
|
||||||
return vdev_scsi;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int vdev_scsi_run(VusDev *vdev_scsi)
|
|
||||||
{
|
|
||||||
int cli_sock;
|
|
||||||
|
|
||||||
assert(vdev_scsi);
|
|
||||||
assert(vdev_scsi->server_sock >= 0);
|
|
||||||
|
|
||||||
cli_sock = accept(vdev_scsi->server_sock, NULL, NULL);
|
|
||||||
if (cli_sock < 0) {
|
|
||||||
perror("accept");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
vug_init(&vdev_scsi->parent,
|
|
||||||
cli_sock,
|
|
||||||
vus_panic_cb,
|
|
||||||
&vus_iface);
|
|
||||||
|
|
||||||
g_main_loop_run(vdev_scsi->loop);
|
|
||||||
|
|
||||||
vug_deinit(&vdev_scsi->parent);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
VusDev *vdev_scsi = NULL;
|
VusDev *vdev_scsi = NULL;
|
||||||
char *unix_fn = NULL;
|
char *unix_fn = NULL;
|
||||||
char *iscsi_uri = NULL;
|
char *iscsi_uri = NULL;
|
||||||
int sock, opt, err = EXIT_SUCCESS;
|
int lsock = -1, csock = -1, opt, err = EXIT_SUCCESS;
|
||||||
|
|
||||||
while ((opt = getopt(argc, argv, "u:i:")) != -1) {
|
while ((opt = getopt(argc, argv, "u:i:")) != -1) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
|
@ -427,25 +381,42 @@ int main(int argc, char **argv)
|
||||||
goto help;
|
goto help;
|
||||||
}
|
}
|
||||||
|
|
||||||
sock = unix_sock_new(unix_fn);
|
lsock = unix_sock_new(unix_fn);
|
||||||
if (sock < 0) {
|
if (lsock < 0) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
vdev_scsi = vdev_scsi_new(sock);
|
|
||||||
|
csock = accept(lsock, NULL, NULL);
|
||||||
|
if (csock < 0) {
|
||||||
|
perror("accept");
|
||||||
|
goto err;
|
||||||
|
}
|
||||||
|
|
||||||
|
vdev_scsi = g_new0(VusDev, 1);
|
||||||
|
vdev_scsi->loop = g_main_loop_new(NULL, FALSE);
|
||||||
|
|
||||||
if (vus_iscsi_add_lun(&vdev_scsi->lun, iscsi_uri) != 0) {
|
if (vus_iscsi_add_lun(&vdev_scsi->lun, iscsi_uri) != 0) {
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vdev_scsi_run(vdev_scsi) != 0) {
|
vug_init(&vdev_scsi->parent, csock, vus_panic_cb, &vus_iface);
|
||||||
goto err;
|
|
||||||
}
|
g_main_loop_run(vdev_scsi->loop);
|
||||||
|
|
||||||
|
vug_deinit(&vdev_scsi->parent);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
if (vdev_scsi) {
|
if (vdev_scsi) {
|
||||||
vdev_scsi_free(vdev_scsi);
|
g_main_loop_unref(vdev_scsi->loop);
|
||||||
|
g_free(vdev_scsi);
|
||||||
unlink(unix_fn);
|
unlink(unix_fn);
|
||||||
}
|
}
|
||||||
|
if (csock >= 0) {
|
||||||
|
close(csock);
|
||||||
|
}
|
||||||
|
if (lsock >= 0) {
|
||||||
|
close(lsock);
|
||||||
|
}
|
||||||
g_free(unix_fn);
|
g_free(unix_fn);
|
||||||
g_free(iscsi_uri);
|
g_free(iscsi_uri);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue