[CRIU] [PATCH 7/8] files: add ability to set callbacks for character devices

Christopher Covington cov at codeaurora.org
Tue Dec 10 08:44:56 PST 2013


Hi Andrey,

On 12/10/2013 11:26 AM, Andrey Vagin wrote:
> The difference in compare with unix sockets is that dump callbacks
> for character devices can be executed to test, which callback can be
> used for a given fd.
[...]
> --- a/files.c
> +++ b/files.c
> @@ -39,6 +39,8 @@
>  #include "protobuf.h"
>  #include "protobuf/fs.pb-c.h"
>  
> +#include "plugin.h"
> +
>  #define FDESC_HASH_SIZE	64
>  static struct hlist_head file_desc_hash[FDESC_HASH_SIZE];
>  
> @@ -276,7 +278,19 @@ static int dump_chrdev(struct fd_parms *p, int lfd, const int fdinfo)
>  			break;
>  		/* fallthrough */
>  	default: {
> +		cr_plugin_dump_file_t *cb;
>  		char more[32];
> +		int ret;
> +
> +		ret = cr_plugin_dump_file(lfd, 0, true, &cb);
> +		if (ret < 0 && ret != CRIU_CB_SKIP)
> +			return -1;
> +
> +		if (ret == 0) {
> +			p->cb = cb;
> +			ops = &regfile_dump_ops;
> +			break;
> +		}
>  
>  		sprintf(more, "%d:%d", maj, minor(p->stat.st_dev));
>  		return dump_unsupp_fd(p, "chr", more);

Could calling the callback be done in dump_unsupp_fd, allowing all file types,
rather than just character devices, to be handled by callbacks? (I'm
particularly interested in special handling of perf event file descriptors.)

Thanks,
Christopher

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.


More information about the CRIU mailing list