Pull request

Small contrib/vhost-user-blk, contrib/vhost-user-scsi, and tools/virtiofsd
 improvements.
 -----BEGIN PGP SIGNATURE-----
 
 iQEzBAABCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmJmYGYACgkQnKSrs4Gr
 c8gNIAgAgCEeBMP61cdT8DGBBw26abmrNmCCjXYL3rNcR2GNsn0x9VbedBhSPt9O
 z+/nej9UkRKHgQ/+V1LqWD2D/TU327nLQ74z1JJvGtjWhvM18XTTAeh1BQbVywKU
 z+o6WSyP22Xx87cUIuOGGMgNDDfIY2j/t5sU8eR+lxXxDuKXx3tulTV65QlNSw9z
 19rb8eJkaau5YWhN5gPEI65O/YVgGUtA+c5z39AoBG85XAAhm+6+mTFfuy8J8gp/
 wqr61+xB7bB3AxIOv1/0PWCl3F/+kPs7ybJRGkHMNtKyJtp34Y86kwsVEBtOMGVO
 wm/ht7FMy2GhnaKGjNMtvJm29ZArqA==
 =zZcV
 -----END PGP SIGNATURE-----

Merge tag 'block-pull-request' of https://gitlab.com/stefanha/qemu into staging

Pull request

Small contrib/vhost-user-blk, contrib/vhost-user-scsi, and tools/virtiofsd
improvements.

# -----BEGIN PGP SIGNATURE-----
#
# iQEzBAABCAAdFiEEhpWov9P5fNqsNXdanKSrs4Grc8gFAmJmYGYACgkQnKSrs4Gr
# c8gNIAgAgCEeBMP61cdT8DGBBw26abmrNmCCjXYL3rNcR2GNsn0x9VbedBhSPt9O
# z+/nej9UkRKHgQ/+V1LqWD2D/TU327nLQ74z1JJvGtjWhvM18XTTAeh1BQbVywKU
# z+o6WSyP22Xx87cUIuOGGMgNDDfIY2j/t5sU8eR+lxXxDuKXx3tulTV65QlNSw9z
# 19rb8eJkaau5YWhN5gPEI65O/YVgGUtA+c5z39AoBG85XAAhm+6+mTFfuy8J8gp/
# wqr61+xB7bB3AxIOv1/0PWCl3F/+kPs7ybJRGkHMNtKyJtp34Y86kwsVEBtOMGVO
# wm/ht7FMy2GhnaKGjNMtvJm29ZArqA==
# =zZcV
# -----END PGP SIGNATURE-----
# gpg: Signature made Mon 25 Apr 2022 01:48:38 AM PDT
# gpg:                using RSA key 8695A8BFD3F97CDAAC35775A9CA4ABB381AB73C8
# gpg: Good signature from "Stefan Hajnoczi <stefanha@redhat.com>" [full]
# gpg:                 aka "Stefan Hajnoczi <stefanha@gmail.com>" [full]

* tag 'block-pull-request' of https://gitlab.com/stefanha/qemu:
  virtiofsd: Add docs/helper for killpriv_v2/no_killpriv_v2 option
  contrib/vhost-user-blk: add missing GOptionEntry NULL terminator
  Implements Backend Program conventions for vhost-user-scsi

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-04-25 10:21:56 -07:00
commit c49abc8406
4 changed files with 62 additions and 26 deletions

View File

@ -593,7 +593,8 @@ static GOptionEntry entries[] = {
{"blk-file", 'b', 0, G_OPTION_ARG_FILENAME, &opt_blk_file, {"blk-file", 'b', 0, G_OPTION_ARG_FILENAME, &opt_blk_file,
"block device or file path", "PATH"}, "block device or file path", "PATH"},
{ "read-only", 'r', 0, G_OPTION_ARG_NONE, &opt_read_only, { "read-only", 'r', 0, G_OPTION_ARG_NONE, &opt_read_only,
"Enable read-only", NULL } "Enable read-only", NULL },
{ NULL, },
}; };
int main(int argc, char **argv) int main(int argc, char **argv)

View File

@ -351,34 +351,59 @@ fail:
/** vhost-user-scsi **/ /** vhost-user-scsi **/
static int opt_fdnum = -1;
static char *opt_socket_path;
static gboolean opt_print_caps;
static char *iscsi_uri;
static GOptionEntry entries[] = {
{ "print-capabilities", 'c', 0, G_OPTION_ARG_NONE, &opt_print_caps,
"Print capabilities", NULL },
{ "fd", 'f', 0, G_OPTION_ARG_INT, &opt_fdnum,
"Use inherited fd socket", "FDNUM" },
{ "iscsi-uri", 'i', 0, G_OPTION_ARG_FILENAME, &iscsi_uri,
"iSCSI URI to connect to", "FDNUM" },
{ "socket-path", 's', 0, G_OPTION_ARG_FILENAME, &opt_socket_path,
"Use UNIX socket path", "PATH" },
{ NULL, }
};
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
VusDev *vdev_scsi = NULL; VusDev *vdev_scsi = NULL;
char *unix_fn = NULL; int lsock = -1, csock = -1, err = EXIT_SUCCESS;
char *iscsi_uri = NULL;
int lsock = -1, csock = -1, opt, err = EXIT_SUCCESS;
while ((opt = getopt(argc, argv, "u:i:")) != -1) { GError *error = NULL;
switch (opt) { GOptionContext *context;
case 'h':
goto help; context = g_option_context_new(NULL);
case 'u': g_option_context_add_main_entries(context, entries, NULL);
unix_fn = g_strdup(optarg); if (!g_option_context_parse(context, &argc, &argv, &error)) {
break; g_printerr("Option parsing failed: %s\n", error->message);
case 'i': exit(EXIT_FAILURE);
iscsi_uri = g_strdup(optarg);
break;
default:
goto help;
}
} }
if (!unix_fn || !iscsi_uri) {
if (opt_print_caps) {
g_print("{\n");
g_print(" \"type\": \"scsi\"\n");
g_print("}\n");
goto out;
}
if (!iscsi_uri) {
goto help; goto help;
} }
lsock = unix_sock_new(unix_fn); if (opt_socket_path) {
if (lsock < 0) { lsock = unix_sock_new(opt_socket_path);
goto err; if (lsock < 0) {
exit(EXIT_FAILURE);
}
} else if (opt_fdnum < 0) {
g_print("%s\n", g_option_context_get_help(context, true, NULL));
exit(EXIT_FAILURE);
} else {
lsock = opt_fdnum;
} }
csock = accept(lsock, NULL, NULL); csock = accept(lsock, NULL, NULL);
@ -408,7 +433,7 @@ out:
if (vdev_scsi) { if (vdev_scsi) {
g_main_loop_unref(vdev_scsi->loop); g_main_loop_unref(vdev_scsi->loop);
g_free(vdev_scsi); g_free(vdev_scsi);
unlink(unix_fn); unlink(opt_socket_path);
} }
if (csock >= 0) { if (csock >= 0) {
close(csock); close(csock);
@ -416,7 +441,7 @@ out:
if (lsock >= 0) { if (lsock >= 0) {
close(lsock); close(lsock);
} }
g_free(unix_fn); g_free(opt_socket_path);
g_free(iscsi_uri); g_free(iscsi_uri);
return err; return err;
@ -426,10 +451,12 @@ err:
goto out; goto out;
help: help:
fprintf(stderr, "Usage: %s [ -u unix_sock_path -i iscsi_uri ] | [ -h ]\n", fprintf(stderr, "Usage: %s [ -s socket-path -i iscsi-uri -f fd -p print-capabilities ] | [ -h ]\n",
argv[0]); argv[0]);
fprintf(stderr, " -u path to unix socket\n"); fprintf(stderr, " -s, --socket-path=SOCKET_PATH path to unix socket\n");
fprintf(stderr, " -i iscsi uri for lun 0\n"); fprintf(stderr, " -i, --iscsi-uri=ISCSI_URI iscsi uri for lun 0\n");
fprintf(stderr, " -f, --fd=FILE_DESCRIPTOR file-descriptor\n");
fprintf(stderr, " -p, --print-capabilities=PRINT_CAPABILITIES denotes print-capabilities\n");
fprintf(stderr, " -h print help and quit\n"); fprintf(stderr, " -h print help and quit\n");
goto err; goto err;

View File

@ -111,6 +111,11 @@ Options
label. Server will try to set that label on newly created file label. Server will try to set that label on newly created file
atomically wherever possible. atomically wherever possible.
* killpriv_v2|no_killpriv_v2 -
Enable/disable ``FUSE_HANDLE_KILLPRIV_V2`` support. KILLPRIV_V2 is enabled
by default as long as the client supports it. Enabling this option helps
with performance in write path.
.. option:: --socket-path=PATH .. option:: --socket-path=PATH
Listen on vhost-user UNIX domain socket at PATH. Listen on vhost-user UNIX domain socket at PATH.

View File

@ -188,6 +188,9 @@ void fuse_cmdline_help(void)
" -o announce_submounts Announce sub-mount points to the guest\n" " -o announce_submounts Announce sub-mount points to the guest\n"
" -o posix_acl/no_posix_acl Enable/Disable posix_acl. (default: disabled)\n" " -o posix_acl/no_posix_acl Enable/Disable posix_acl. (default: disabled)\n"
" -o security_label/no_security_label Enable/Disable security label. (default: disabled)\n" " -o security_label/no_security_label Enable/Disable security label. (default: disabled)\n"
" -o killpriv_v2/no_killpriv_v2\n"
" Enable/Disable FUSE_HANDLE_KILLPRIV_V2.\n"
" (default: enabled as long as client supports it)\n"
); );
} }