[CRIU] [PATCH 1/3] tty: Use separate tty_info::inherit member to track ttys being borrowed from a parent
Cyrill Gorcunov
gorcunov at openvz.org
Mon May 6 11:12:32 EDT 2013
This is easier for debugging, the former SID/PGID remains untouched
and printed out in logs.
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
tty.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tty.c b/tty.c
index ecc5eff..8b2e0f3 100644
--- a/tty.c
+++ b/tty.c
@@ -80,6 +80,7 @@ struct tty_info {
int major;
bool create;
+ bool inherit;
};
struct tty_dump_info {
@@ -95,8 +96,6 @@ struct tty_dump_info {
static LIST_HEAD(all_tty_info_entries);
static LIST_HEAD(all_ttys);
-#define INHERIT_SID (-1)
-
/*
* Usually an application has not that many ttys opened.
* If this won't be enough in future we simply need to
@@ -411,9 +410,9 @@ static bool tty_has_active_pair(struct tty_info *info)
static void tty_show_pty_info(char *prefix, struct tty_info *info)
{
- pr_info("%s type %s id %#x index %d (master %d sid %d pgrp %d)\n",
+ pr_info("%s type %s id %#x index %d (master %d sid %d pgrp %d inherit %d)\n",
prefix, tty_type(info->major), info->tfe->id, info->tie->pty->index,
- pty_is_master(info), info->tie->sid, info->tie->pgrp);
+ pty_is_master(info), info->tie->sid, info->tie->pgrp, info->inherit);
}
static int restore_tty_params(int fd, struct tty_info *info)
@@ -535,7 +534,7 @@ static int pty_open_unpaired_slave(struct file_desc *d, struct tty_info *slave)
* be inherited, either it requires a fake master.
*/
- if (likely(slave->tie->sid == INHERIT_SID)) {
+ if (likely(slave->inherit)) {
fd = dup(get_service_fd(SELF_STDIN_OFF));
if (fd < 0) {
pr_perror("Can't dup SELF_STDIN_OFF");
@@ -577,7 +576,7 @@ static int pty_open_unpaired_slave(struct file_desc *d, struct tty_info *slave)
* be already restored properly thus we can simply
* use syscalls instead of lookup via process tree.
*/
- if (likely(slave->tie->sid == INHERIT_SID)) {
+ if (likely(slave->inherit)) {
if (tty_set_prgp(fd, getpgid(getppid())))
goto err;
}
@@ -763,7 +762,7 @@ static int tty_find_restoring_task(struct tty_info *info)
shell_job:
if (opts.shell_job) {
pr_info("Inherit terminal for id %x\n", info->tfe->id);
- info->tie->sid = info->tie->pgrp = INHERIT_SID;
+ info->inherit = true;
return 0;
}
@@ -944,6 +943,7 @@ static int collect_one_tty(void *obj, ProtobufCMessage *msg)
INIT_LIST_HEAD(&info->sibling);
info->major = major(info->tie->rdev);
info->create = (info->major == TTYAUX_MAJOR);
+ info->inherit = false;
if (verify_info(info))
return -1;
--
1.8.1.4
More information about the CRIU
mailing list