[CRIU] [PATCH v4 11/15] files: Add file_desc_ops::receive method

Kirill Tkhai ktkhai at virtuozzo.com
Thu Jun 9 06:31:38 PDT 2016



On 09.06.2016 16:15, Pavel Emelyanov wrote:
> On 06/01/2016 07:03 PM, Kirill Tkhai wrote:
>> Currently, nothing is done for master files in receive_fd().
>> Add a receive method, which may be useful for subsystems,
>> which need it (for queuer-less dgram sockets, going in following
>> patches).
>>
>> Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
>> ---
>>  criu/files.c         |    3 ++-
>>  criu/include/files.h |   10 +++++++++-
>>  2 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/criu/files.c b/criu/files.c
>> index bb3b142..22668ec 100644
>> --- a/criu/files.c
>> +++ b/criu/files.c
>> @@ -1053,12 +1053,13 @@ static int open_fd(int pid, struct fdinfo_list_entry *fle)
>>  
>>  static int receive_fd(int pid, struct fdinfo_list_entry *fle)
>>  {
>> +	struct file_desc *d = fle->desc;
>>  	int tmp;
>>  	struct fdinfo_list_entry *flem;
>>  
>>  	flem = file_master(fle->desc);
>>  	if (flem->pid == pid)
>> -		return 0;
>> +		return d->ops->receive ? d->ops->receive(d, fle->fe->fd) : 0;
> 
> Erm... This path is not receiving an fd, it's just us who's the
> file master.

I don't understand your comment. Could you please explain what you mean?
 
>>  
>>  	pr_info("\tReceive fd for %d\n", fle->fe->fd);
>>  
>> diff --git a/criu/include/files.h b/criu/include/files.h
>> index 5e3d6dc..f0d5f23 100644
>> --- a/criu/include/files.h
>> +++ b/criu/include/files.h
>> @@ -90,7 +90,15 @@ struct file_desc_ops {
>>  	int			(*open)(struct file_desc *d);
>>  	/*
>>  	 * Called on a file when all files of that type are opened
>> -	 * and with the fd being the "restored" one.
>> +	 * and with the fd being the "restored" one. This may be used
>> +	 * to receive some additional file descriptors that are needed
>> +	 * at post_open stage.
>> +	 */
>> +	int			(*receive)(struct file_desc *d, int fd);
>> +	/*
>> +	 * Called on a file when all files of that type are opened
>> +	 * and with the fd being the "restored" one and all data need
>> +	 * to complete restore is received.
>>  	 */
>>  	int			(*post_open)(struct file_desc *d, int fd);
>>  	/*
>>
>> _______________________________________________
>> CRIU mailing list
>> CRIU at openvz.org
>> https://lists.openvz.org/mailman/listinfo/criu
>> .
>>
> 


More information about the CRIU mailing list