[CRIU] [PATCH 06/16] dump: use open instead of openat

Kinsbursky Stanislav skinsbursky at openvz.org
Thu Mar 1 12:56:55 EST 2012



Signed-off-by: Stanislav Kinsbursky <skinsbursky at openvz.org>

---
 cr-dump.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/cr-dump.c b/cr-dump.c
index 9c1bf36..5af391c 100644
--- a/cr-dump.c
+++ b/cr-dump.c
@@ -313,29 +313,31 @@ static int read_fd_params(pid_t pid, char *fd, struct fd_parms *p)
 	return 0;
 }
 
-static int dump_one_fd(pid_t pid, int pid_fd_dir, char *d_name, struct cr_fdset *cr_fdset,
+static int dump_one_fd(pid_t pid, char *d_name, struct cr_fdset *cr_fdset,
 		       struct sk_queue *sk_queue)
 {
 	struct stat fd_stat;
 	int err = -1;
 	struct fd_parms p;
 	int lfd;
+	char file_path[128];
 
+	snprintf(file_path, sizeof(file_path), "/proc/%d/fd/%s", pid, d_name);
 	if (read_fd_params(pid, d_name, &p))
 		return -1;
 
-	lfd = openat(pid_fd_dir, d_name, O_RDONLY);
+	lfd = open(file_path, O_RDONLY);
 	if (lfd < 0) {
 		err = try_dump_socket(pid, p.fd_name, cr_fdset, sk_queue);
 		if (err != 1)
 			return err;
 
-		pr_perror("Failed to open %d/%ld", pid_fd_dir, p.fd_name);
+		pr_perror("Failed to open '%s'", file_path);
 		return -1;
 	}
 
-	if (fstat(lfd, &fd_stat) < 0) {
-		pr_perror("Can't get stat on %ld", p.fd_name);
+	if (stat(file_path, &fd_stat)) {
+		pr_perror("Can't stat %s", file_path);
 		goto out_close;
 	}
 
@@ -345,8 +347,8 @@ static int dump_one_fd(pid_t pid, int pid_fd_dir, char *d_name, struct cr_fdset
 		/* skip only standard destriptors */
 		if (p.fd_name < 3) {
 			err = 0;
-			pr_info("... Skipping tty ... %d/%ld\n",
-				pid_fd_dir, p.fd_name);
+			pr_info("... Skipping tty ... '%s'\n",
+				file_path);
 			goto out_close;
 		}
 		goto err;
@@ -404,8 +406,7 @@ static int dump_task_files(pid_t pid, struct cr_fdset *cr_fdset,
 			continue;
 		if (!strcmp(de->d_name, ".."))
 			continue;
-		if (dump_one_fd(pid, dirfd(fd_dir), de->d_name, cr_fdset,
-				sk_queue))
+		if (dump_one_fd(pid, de->d_name, cr_fdset, sk_queue))
 			return -1;
 	}
 



More information about the CRIU mailing list