[CRIU] Re: [PATCH 1/2] sockets: add debug messages ro restore process

Pavel Emelyanov xemul at parallels.com
Mon Mar 5 10:55:56 EST 2012


On 03/02/2012 06:36 PM, Kinsbursky Stanislav wrote:
> 

You can use getpid() safely in all the places you've patched here.

> Signed-off-by: Stanislav Kinsbursky <skinsbursky at openvz.org>
> 
> ---
>  sockets.c |   25 +++++++++++++++----------
>  1 files changed, 15 insertions(+), 10 deletions(-)
> 
> diff --git a/sockets.c b/sockets.c
> index 7d0e887..1902d20 100644
> --- a/sockets.c
> +++ b/sockets.c
> @@ -718,6 +718,7 @@ struct sk_packet {
>  struct sk_packets_pool {
>  	struct list_head packets_list;
>  	int img_fd;
> +	int pid;
>  };
>  
>  static int read_sockets_queues(struct sk_packets_pool *pool)
> @@ -725,8 +726,7 @@ static int read_sockets_queues(struct sk_packets_pool *pool)
>  	struct sk_packet *pkt;
>  	int ret;
>  
> -	pr_info("Trying to read socket queues image\n");
> -
> +	pr_info("%d: Trying to read socket queues image\n", pool->pid);
>  	lseek(pool->img_fd, MAGIC_OFFSET, SEEK_SET);
>  	while (1) {
>  		struct sk_packet_entry tmp;
> @@ -757,7 +757,7 @@ static int restore_socket_queue(struct sk_packets_pool *pool, int fd,
>  	struct sk_packet *pkt, *tmp;
>  	int ret;
>  
> -	pr_info("Trying to restore recv queue for %u\n", peer_id);
> +	pr_info("%d: Restoring recv queue for %u: ", pool->pid, peer_id);
>  
>  	list_for_each_entry_safe(pkt, tmp, &pool->packets_list, list) {
>  		struct sk_packet_entry *entry = &pkt->entry;
> @@ -770,17 +770,20 @@ static int restore_socket_queue(struct sk_packets_pool *pool, int fd,
>  
>  		ret = sendfile(fd, pool->img_fd, &pkt->img_off, entry->length);
>  		if (ret < 0) {
> -			pr_perror("Failed to sendfile packet");
> +			pr_perror("\n%d: Failed to sendfile packet", pool->pid);
>  			return -1;
>  		}
>  		if (ret != entry->length) {
> -			pr_err("Restored skb trimmed to %d/%d\n",
> -					ret, entry->length);
> +			pr_err("%d: Restored skb trimmed to %d/%d\n",
> +					pool->pid, ret, entry->length);
>  			return -1;
>  		}
> +		pr_info("\t%d: Restored %d-bytes skb\n", pool->pid,
> +				entry->length);
>  		list_del(&pkt->list);
>  		xfree(pkt);
>  	}
> +	pr_info("%d: Queue restored for %u\n", pool->pid, peer_id);
>  	return 0;
>  }
>  
> @@ -840,6 +843,7 @@ static int run_connect_jobs(struct sk_packets_pool *pool)
>  	struct unix_conn_job *cj, *next;
>  	int i;
>  
> +	pr_info("%d: Run connect jobs\n", pool->pid);
>  	cj = conn_jobs;
>  	while (cj) {
>  		int attempts = 8;
> @@ -860,8 +864,8 @@ static int run_connect_jobs(struct sk_packets_pool *pool)
>  				e = lookup_unix_listen(cj->peer, SOCK_DGRAM);
>  
>  			if (!e) {
> -				pr_err("Bad in-flight socket peer %d\n",
> -						cj->peer);
> +				pr_err("%d: Bad in-flight socket peer %d\n",
> +						pool->pid, cj->peer);
>  				return -1;
>  			}
>  
> @@ -877,7 +881,7 @@ try_again:
>  				attempts--;
>  				goto try_again; /* FIXME use avagin@ waiters */
>  			}
> -			pr_perror("Can't restore connection (c)");
> +			pr_perror("%d: Can't restore connection (c)", pool->pid);
>  			return -1;
>  		}
>  
> @@ -1137,7 +1141,8 @@ static int prepare_unix_sockets(int pid)
>  {
>  	int usk_fd, ret = -1;
>  	struct sk_packets_pool unix_pool = {
> -		.packets_list = LIST_HEAD_INIT(unix_pool.packets_list),
> +		.packets_list	= LIST_HEAD_INIT(unix_pool.packets_list),
> +		.pid		= pid,
>  	};
>  
>  	usk_fd = open_image_ro(CR_FD_UNIXSK, pid);
> 



More information about the CRIU mailing list