block/gluster: deprecate rdma support
gluster volfile server fetch happens through unix and/or tcp, it doesn't support volfile fetch over rdma. The rdma code may actually mislead, so to make sure things do not break, for now we fallback to tcp when requested for rdma, with a warning. If you are wondering how this worked all these days, its the gluster libgfapi code which handles anything other than unix transport as socket/tcp, sad but true. Also gluster doesn't support ipv6 addresses, removing the ipv6 related comments/docs section [Jeff: Minor grammatical fixes in comments and commit message, per review comments] Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Jeff Cody <jcody@redhat.com> Message-id: 1468947453-5433-4-git-send-email-prasanna.kalever@redhat.com Signed-off-by: Jeff Cody <jcody@redhat.com>
This commit is contained in:
		
							parent
							
								
									f70c50c817
								
							
						
					
					
						commit
						0552ff2465
					
				@ -12,6 +12,7 @@
 | 
				
			|||||||
#include "block/block_int.h"
 | 
					#include "block/block_int.h"
 | 
				
			||||||
#include "qapi/error.h"
 | 
					#include "qapi/error.h"
 | 
				
			||||||
#include "qemu/uri.h"
 | 
					#include "qemu/uri.h"
 | 
				
			||||||
 | 
					#include "qemu/error-report.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define GLUSTER_OPT_FILENAME        "filename"
 | 
					#define GLUSTER_OPT_FILENAME        "filename"
 | 
				
			||||||
#define GLUSTER_OPT_DEBUG           "debug"
 | 
					#define GLUSTER_OPT_DEBUG           "debug"
 | 
				
			||||||
@ -134,12 +135,10 @@ static int parse_volume_options(GlusterConf *gconf, char *path)
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * 'transport' specifies the transport type used to connect to gluster
 | 
					 * 'transport' specifies the transport type used to connect to gluster
 | 
				
			||||||
 * management daemon (glusterd). Valid transport types are
 | 
					 * management daemon (glusterd). Valid transport types are
 | 
				
			||||||
 * tcp, unix and rdma. If a transport type isn't specified, then tcp
 | 
					 * tcp or unix. If a transport type isn't specified, then tcp type is assumed.
 | 
				
			||||||
 * type is assumed.
 | 
					 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * 'host' specifies the host where the volume file specification for
 | 
					 * 'host' specifies the host where the volume file specification for
 | 
				
			||||||
 * the given volume resides. This can be either hostname, ipv4 address
 | 
					 * the given volume resides. This can be either hostname or ipv4 address.
 | 
				
			||||||
 * or ipv6 address. ipv6 address needs to be within square brackets [ ].
 | 
					 | 
				
			||||||
 * If transport type is 'unix', then 'host' field should not be specified.
 | 
					 * If transport type is 'unix', then 'host' field should not be specified.
 | 
				
			||||||
 * The 'socket' field needs to be populated with the path to unix domain
 | 
					 * The 'socket' field needs to be populated with the path to unix domain
 | 
				
			||||||
 * socket.
 | 
					 * socket.
 | 
				
			||||||
@ -158,11 +157,8 @@ static int parse_volume_options(GlusterConf *gconf, char *path)
 | 
				
			|||||||
 * file=gluster://1.2.3.4/testvol/a.img
 | 
					 * file=gluster://1.2.3.4/testvol/a.img
 | 
				
			||||||
 * file=gluster+tcp://1.2.3.4/testvol/a.img
 | 
					 * file=gluster+tcp://1.2.3.4/testvol/a.img
 | 
				
			||||||
 * file=gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
 | 
					 * file=gluster+tcp://1.2.3.4:24007/testvol/dir/a.img
 | 
				
			||||||
 * file=gluster+tcp://[1:2:3:4:5:6:7:8]/testvol/dir/a.img
 | 
					 | 
				
			||||||
 * file=gluster+tcp://[1:2:3:4:5:6:7:8]:24007/testvol/dir/a.img
 | 
					 | 
				
			||||||
 * file=gluster+tcp://host.domain.com:24007/testvol/dir/a.img
 | 
					 * file=gluster+tcp://host.domain.com:24007/testvol/dir/a.img
 | 
				
			||||||
 * file=gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
 | 
					 * file=gluster+unix:///testvol/dir/a.img?socket=/tmp/glusterd.socket
 | 
				
			||||||
 * file=gluster+rdma://1.2.3.4:24007/testvol/a.img
 | 
					 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static int qemu_gluster_parseuri(GlusterConf *gconf, const char *filename)
 | 
					static int qemu_gluster_parseuri(GlusterConf *gconf, const char *filename)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@ -185,7 +181,9 @@ static int qemu_gluster_parseuri(GlusterConf *gconf, const char *filename)
 | 
				
			|||||||
        gconf->transport = g_strdup("unix");
 | 
					        gconf->transport = g_strdup("unix");
 | 
				
			||||||
        is_unix = true;
 | 
					        is_unix = true;
 | 
				
			||||||
    } else if (!strcmp(uri->scheme, "gluster+rdma")) {
 | 
					    } else if (!strcmp(uri->scheme, "gluster+rdma")) {
 | 
				
			||||||
        gconf->transport = g_strdup("rdma");
 | 
					        gconf->transport = g_strdup("tcp");
 | 
				
			||||||
 | 
					        error_report("Warning: rdma feature is not supported, falling "
 | 
				
			||||||
 | 
					                     "back to tcp");
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
        ret = -EINVAL;
 | 
					        ret = -EINVAL;
 | 
				
			||||||
        goto out;
 | 
					        goto out;
 | 
				
			||||||
@ -1048,6 +1046,12 @@ static BlockDriver bdrv_gluster_unix = {
 | 
				
			|||||||
    .create_opts                  = &qemu_gluster_create_opts,
 | 
					    .create_opts                  = &qemu_gluster_create_opts,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* rdma is deprecated (actually never supported for volfile fetch).
 | 
				
			||||||
 | 
					 * Let's maintain it for the protocol compatibility, to make sure things
 | 
				
			||||||
 | 
					 * won't break immediately. For now, gluster+rdma will fall back to gluster+tcp
 | 
				
			||||||
 | 
					 * protocol with a warning.
 | 
				
			||||||
 | 
					 * TODO: remove gluster+rdma interface support
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
static BlockDriver bdrv_gluster_rdma = {
 | 
					static BlockDriver bdrv_gluster_rdma = {
 | 
				
			||||||
    .format_name                  = "gluster",
 | 
					    .format_name                  = "gluster",
 | 
				
			||||||
    .protocol_name                = "gluster+rdma",
 | 
					    .protocol_name                = "gluster+rdma",
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user