vhost+postcopy: Register shared ufd with postcopy
Register the UFD that comes in as the response to the 'advise' method with the postcopy code. Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 Michael S. Tsirkin
						Michael S. Tsirkin
					
				
			
			
				
	
			
			
			
						parent
						
							00fa4fc85b
						
					
				
				
					commit
					f82c11165f
				
			| @@ -171,6 +171,7 @@ struct vhost_user { | ||||
|     CharBackend *chr; | ||||
|     int slave_fd; | ||||
|     NotifierWithReturn postcopy_notifier; | ||||
|     struct PostCopyFD  postcopy_fd; | ||||
| }; | ||||
|  | ||||
| static bool ioeventfd_enabled(void) | ||||
| @@ -796,6 +797,17 @@ out: | ||||
|     return ret; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Called back from the postcopy fault thread when a fault is received on our | ||||
|  * ufd. | ||||
|  * TODO: This is Linux specific | ||||
|  */ | ||||
| static int vhost_user_postcopy_fault_handler(struct PostCopyFD *pcfd, | ||||
|                                              void *ufd) | ||||
| { | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Called at the start of an inbound postcopy on reception of the | ||||
|  * 'advise' command. | ||||
| @@ -835,8 +847,14 @@ static int vhost_user_postcopy_advise(struct vhost_dev *dev, Error **errp) | ||||
|         error_setg(errp, "%s: Failed to get ufd", __func__); | ||||
|         return -1; | ||||
|     } | ||||
|     fcntl(ufd, F_SETFL, O_NONBLOCK); | ||||
|  | ||||
|     /* TODO: register ufd with userfault thread */ | ||||
|     /* register ufd with userfault thread */ | ||||
|     u->postcopy_fd.fd = ufd; | ||||
|     u->postcopy_fd.data = dev; | ||||
|     u->postcopy_fd.handler = vhost_user_postcopy_fault_handler; | ||||
|     u->postcopy_fd.idstr = "vhost-user"; /* Need to find unique name */ | ||||
|     postcopy_register_shared_ufd(&u->postcopy_fd); | ||||
|     return 0; | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user