NFS: load the rpc/rdma transport module automatically
When mounting an NFS/RDMA server with the "-o proto=rdma" or "-o rdma" options, attempt to dynamically load the necessary "xprtrdma" client transport module. Doing so improves usability, while avoiding a static module dependency and any unnecesary resources. Signed-off-by: Tom Talpey <tmtalpey@gmail.com> Cc: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
		
					parent
					
						
							
								441e3e2429
							
						
					
				
			
			
				commit
				
					
						a67d18f89f
					
				
			
		
					 1 changed files with 3 additions and 1 deletions
				
			
		|  | @ -1018,6 +1018,7 @@ static int nfs_parse_mount_options(char *raw, | ||||||
| 		case Opt_rdma: | 		case Opt_rdma: | ||||||
| 			mnt->flags |= NFS_MOUNT_TCP; /* for side protocols */ | 			mnt->flags |= NFS_MOUNT_TCP; /* for side protocols */ | ||||||
| 			mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA; | 			mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA; | ||||||
|  | 			xprt_load_transport(p); | ||||||
| 			break; | 			break; | ||||||
| 		case Opt_acl: | 		case Opt_acl: | ||||||
| 			mnt->flags &= ~NFS_MOUNT_NOACL; | 			mnt->flags &= ~NFS_MOUNT_NOACL; | ||||||
|  | @ -1205,12 +1206,14 @@ static int nfs_parse_mount_options(char *raw, | ||||||
| 				/* vector side protocols to TCP */ | 				/* vector side protocols to TCP */ | ||||||
| 				mnt->flags |= NFS_MOUNT_TCP; | 				mnt->flags |= NFS_MOUNT_TCP; | ||||||
| 				mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA; | 				mnt->nfs_server.protocol = XPRT_TRANSPORT_RDMA; | ||||||
|  | 				xprt_load_transport(string); | ||||||
| 				break; | 				break; | ||||||
| 			default: | 			default: | ||||||
| 				errors++; | 				errors++; | ||||||
| 				dfprintk(MOUNT, "NFS:   unrecognized " | 				dfprintk(MOUNT, "NFS:   unrecognized " | ||||||
| 						"transport protocol\n"); | 						"transport protocol\n"); | ||||||
| 			} | 			} | ||||||
|  | 			kfree(string); | ||||||
| 			break; | 			break; | ||||||
| 		case Opt_mountproto: | 		case Opt_mountproto: | ||||||
| 			string = match_strdup(args); | 			string = match_strdup(args); | ||||||
|  | @ -1218,7 +1221,6 @@ static int nfs_parse_mount_options(char *raw, | ||||||
| 				goto out_nomem; | 				goto out_nomem; | ||||||
| 			token = match_token(string, | 			token = match_token(string, | ||||||
| 					    nfs_xprt_protocol_tokens, args); | 					    nfs_xprt_protocol_tokens, args); | ||||||
| 			kfree(string); |  | ||||||
| 
 | 
 | ||||||
| 			switch (token) { | 			switch (token) { | ||||||
| 			case Opt_xprt_udp: | 			case Opt_xprt_udp: | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Tom Talpey
				Tom Talpey