[CRIU] [PATCH] files: don't create a transport socket for each file ++

Pavel Emelyanov xemul at virtuozzo.com
Wed Aug 10 09:28:55 PDT 2016


The same thing as in e46ba88614 exists in pipes, unix sockets and
ttys, so let's re-use the service transport fd there as well.

Signed-off-by: Pavel Emelyanov <xemul at virtuozzo.com>

---

diff --git a/criu/pipes.c b/criu/pipes.c
index fa59071..5761847 100644
--- a/criu/pipes.c
+++ b/criu/pipes.c
@@ -301,11 +301,7 @@ static int open_pipe(struct file_desc *d)
 	if (ret)
 		return -1;
 
-	sock = socket(PF_UNIX, SOCK_DGRAM, 0);
-	if (sock < 0) {
-		pr_perror("Can't create socket");
-		return -1;
-	}
+	sock = get_service_fd(TRANSPORT_FD_OFF);
 
 	list_for_each_entry(p, &pi->pipe_list, pipe_list) {
 		struct fdinfo_list_entry *fle;
@@ -320,8 +316,6 @@ static int open_pipe(struct file_desc *d)
 		}
 	}
 
-	close(sock);
-
 	close(pfd[!(pi->pe->flags & O_WRONLY)]);
 	tmp = pfd[pi->pe->flags & O_WRONLY];
 
diff --git a/criu/sk-unix.c b/criu/sk-unix.c
index 2bab17f..99f0b08 100644
--- a/criu/sk-unix.c
+++ b/criu/sk-unix.c
@@ -1080,11 +1080,7 @@ static int open_unixsk_pair_master(struct unix_sk_info *ui)
 	if (shutdown_unix_sk(sk[0], ui))
 		return -1;
 
-	tsk = socket(PF_UNIX, SOCK_DGRAM, 0);
-	if (tsk < 0) {
-		pr_perror("Can't make transport socket");
-		return -1;
-	}
+	tsk = get_service_fd(TRANSPORT_FD_OFF);
 
 	fle = file_master(&peer->d);
 	if (send_fd_to_peer(sk[1], fle, tsk)) {
@@ -1092,7 +1088,6 @@ static int open_unixsk_pair_master(struct unix_sk_info *ui)
 		return -1;
 	}
 
-	close(tsk);
 	close(sk[1]);
 
 	return sk[0];
diff --git a/criu/tty.c b/criu/tty.c
index ec09f30..b21b45a 100644
--- a/criu/tty.c
+++ b/criu/tty.c
@@ -864,11 +864,7 @@ static int pty_open_slaves(struct tty_info *info)
 	struct fdinfo_list_entry *fle;
 	struct tty_info *slave;
 
-	sock = socket(PF_UNIX, SOCK_DGRAM, 0);
-	if (sock < 0) {
-		pr_perror("Can't create socket");
-		goto err;
-	}
+	sock = get_service_fd(TRANSPORT_FD_OFF);
 
 	list_for_each_entry(slave, &info->sibling, sibling) {
 		BUG_ON(tty_is_master(slave));
@@ -900,7 +896,6 @@ static int pty_open_slaves(struct tty_info *info)
 
 err:
 	close_safe(&fd);
-	close_safe(&sock);
 	return ret;
 }
 


More information about the CRIU mailing list