@ -152,7 +152,7 @@ static QemuOptsList runtime_type_opts = {
{
. name = GLUSTER_OPT_TYPE ,
. type = QEMU_OPT_STRING ,
. help = " tcp |unix " ,
. help = " ine t|unix" ,
} ,
{ /* end of list */ }
} ,
@ -171,14 +171,14 @@ static QemuOptsList runtime_unix_opts = {
} ,
} ;
static QemuOptsList runtime_tcp _opts = {
. name = " gluster_tcp " ,
. head = QTAILQ_HEAD_INITIALIZER ( runtime_tcp _opts . head ) ,
static QemuOptsList runtime_ine t_opts = {
. name = " gluster_ine t " ,
. head = QTAILQ_HEAD_INITIALIZER ( runtime_ine t_opts . head ) ,
. desc = {
{
. name = GLUSTER_OPT_TYPE ,
. type = QEMU_OPT_STRING ,
. help = " tcp |unix " ,
. help = " ine t|unix" ,
} ,
{
. name = GLUSTER_OPT_HOST ,
@ -337,14 +337,14 @@ static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf,
/* transport */
if ( ! uri - > scheme | | ! strcmp ( uri - > scheme , " gluster " ) ) {
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_TCP ;
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_INE T ;
} else if ( ! strcmp ( uri - > scheme , " gluster+tcp " ) ) {
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_TCP ;
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_INE T ;
} else if ( ! strcmp ( uri - > scheme , " gluster+unix " ) ) {
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_UNIX ;
is_unix = true ;
} else if ( ! strcmp ( uri - > scheme , " gluster+rdma " ) ) {
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_TCP ;
gsconf - > type = SOCKET_ADDRESS_FLAT_TYPE_INE T ;
error_report ( " Warning: rdma feature is not supported, falling "
" back to tcp " ) ;
} else {
@ -374,11 +374,11 @@ static int qemu_gluster_parse_uri(BlockdevOptionsGluster *gconf,
}
gsconf - > u . q_unix . path = g_strdup ( qp - > p [ 0 ] . value ) ;
} else {
gsconf - > u . tcp . host = g_strdup ( uri - > server ? uri - > server : " localhost " ) ;
gsconf - > u . ine t. host = g_strdup ( uri - > server ? uri - > server : " localhost " ) ;
if ( uri - > port ) {
gsconf - > u . tcp . port = g_strdup_printf ( " %d " , uri - > port ) ;
gsconf - > u . ine t. port = g_strdup_printf ( " %d " , uri - > port ) ;
} else {
gsconf - > u . tcp . port = g_strdup_printf ( " %d " , GLUSTER_DEFAULT_PORT ) ;
gsconf - > u . ine t. port = g_strdup_printf ( " %d " , GLUSTER_DEFAULT_PORT ) ;
}
}
@ -416,15 +416,15 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
ret = glfs_set_volfile_server ( glfs , " unix " ,
server - > value - > u . q_unix . path , 0 ) ;
} else {
if ( parse_uint_full ( server - > value - > u . tcp . port , & port , 10 ) < 0 | |
if ( parse_uint_full ( server - > value - > u . ine t. port , & port , 10 ) < 0 | |
port > 65535 ) {
error_setg ( errp , " '%s' is not a valid port number " ,
server - > value - > u . tcp . port ) ;
server - > value - > u . ine t. port ) ;
errno = EINVAL ;
goto out ;
}
ret = glfs_set_volfile_server ( glfs , " tcp " ,
server - > value - > u . tcp . host ,
server - > value - > u . ine t. host ,
( int ) port ) ;
}
@ -448,8 +448,8 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
server - > value - > u . q_unix . path ) ;
} else {
error_append_hint ( errp , " hint: failed on host %s and port %s " ,
server - > value - > u . tcp . host ,
server - > value - > u . tcp . port ) ;
server - > value - > u . ine t. host ,
server - > value - > u . ine t. port ) ;
}
}
@ -536,21 +536,24 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
}
gsconf = g_new0 ( SocketAddressFlat , 1 ) ;
if ( ! strcmp ( ptr , " tcp " ) ) {
ptr = " inet " ; /* accept legacy "tcp" */
}
gsconf - > type = qapi_enum_parse ( SocketAddressFlatType_lookup , ptr ,
SOCKET_ADDRESS_FLAT_TYPE__MAX , - 1 ,
& local_err ) ;
if ( local_err ) {
error_append_hint ( & local_err ,
" Parameter '%s' may be 'tcp ' or 'unix' \n " ,
" Parameter '%s' may be 'ine t' or 'unix' \n " ,
GLUSTER_OPT_TYPE ) ;
error_append_hint ( & local_err , GERR_INDEX_HINT , i ) ;
goto out ;
}
qemu_opts_del ( opts ) ;
if ( gsconf - > type = = SOCKET_ADDRESS_FLAT_TYPE_TCP ) {
/* create opts info from runtime_tcp _opts list */
opts = qemu_opts_create ( & runtime_tcp _opts , NULL , 0 , & error_abort ) ;
if ( gsconf - > type = = SOCKET_ADDRESS_FLAT_TYPE_INE T ) {
/* create opts info from runtime_ine t_opts list */
opts = qemu_opts_create ( & runtime_ine t_opts , NULL , 0 , & error_abort ) ;
qemu_opts_absorb_qdict ( opts , backing_options , & local_err ) ;
if ( local_err ) {
goto out ;
@ -563,7 +566,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
error_append_hint ( & local_err , GERR_INDEX_HINT , i ) ;
goto out ;
}
gsconf - > u . tcp . host = g_strdup ( ptr ) ;
gsconf - > u . ine t. host = g_strdup ( ptr ) ;
ptr = qemu_opt_get ( opts , GLUSTER_OPT_PORT ) ;
if ( ! ptr ) {
error_setg ( & local_err , QERR_MISSING_PARAMETER ,
@ -571,28 +574,28 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf,
error_append_hint ( & local_err , GERR_INDEX_HINT , i ) ;
goto out ;
}
gsconf - > u . tcp . port = g_strdup ( ptr ) ;
gsconf - > u . ine t. port = g_strdup ( ptr ) ;
/* defend for unsupported fields in InetSocketAddress,
* i . e . @ ipv4 , @ ipv6 and @ to
*/
ptr = qemu_opt_get ( opts , GLUSTER_OPT_TO ) ;
if ( ptr ) {
gsconf - > u . tcp . has_to = true ;
gsconf - > u . ine t. has_to = true ;
}
ptr = qemu_opt_get ( opts , GLUSTER_OPT_IPV4 ) ;
if ( ptr ) {
gsconf - > u . tcp . has_ipv4 = true ;
gsconf - > u . ine t. has_ipv4 = true ;
}
ptr = qemu_opt_get ( opts , GLUSTER_OPT_IPV6 ) ;
if ( ptr ) {
gsconf - > u . tcp . has_ipv6 = true ;
gsconf - > u . ine t. has_ipv6 = true ;
}
if ( gsconf - > u . tcp . has_to ) {
if ( gsconf - > u . ine t. has_to ) {
error_setg ( & local_err , " Parameter 'to' not supported " ) ;
goto out ;
}
if ( gsconf - > u . tcp . has_ipv4 | | gsconf - > u . tcp . has_ipv6 ) {
if ( gsconf - > u . ine t. has_ipv4 | | gsconf - > u . ine t. has_ipv6 ) {
error_setg ( & local_err , " Parameters 'ipv4/ipv6' not supported " ) ;
goto out ;
}
@ -669,7 +672,7 @@ static struct glfs *qemu_gluster_init(BlockdevOptionsGluster *gconf,
" file.volume=testvol,file.path=/path/a.qcow2 "
" [,file.debug=9] "
" [,file.logfile=/path/filename.log], "
" file.server.0.type=tcp , "
" file.server.0.type=ine t, "
" file.server.0.host=1.2.3.4, "
" file.server.0.port=24007, "
" file.server.1.transport=unix, "