From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oren Laadan Subject: Re: [PATCH 3/6] c/r: [pty 2/2] support for pseudo terminals Date: Tue, 08 Sep 2009 09:19:58 -0400 Message-ID: <4AA659FE.6040808@librato.com> References: <1252074054-22241-1-git-send-email-orenl@librato.com> <1252074054-22241-4-git-send-email-orenl@librato.com> <20090908085013.GQ12824@hawkmoon.kerlabs.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20090908085013.GQ12824-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Oren Laadan , containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org List-Id: containers.vger.kernel.org Louis Rilling wrote: > On 04/09/09 10:20 -0400, Oren Laadan wrote: >> This patch adds support for checkpoint and restart of pseudo terminals >> (PTYs). Since PTYs are shared (pointed to by file, and signal), they >> are managed via objhash. >> >> PTYs are master/slave pairs; The code arranges for the master to >> always be checkpointed first, followed by the slave. This is important >> since during restart both ends are created when restoring the master. >> >> In this patch only UNIX98 style PTYs are supported. >> >> Currently only PTYs that are referenced by open files are handled. >> Thus PTYs checkpoint starts with a file in tty_file_checkpoint(). It >> will first checkpoint the master and slave PTYs via tty_checkpoint(), >> and then complete the saving of the file descriptor. This means that >> in the image file, the order of objects is: master-tty, slave-tty, >> file-desc. >> >> During restart, to restore the master side, we open the /dev/ptmx >> device and get a file handle. But at this point we don't know the >> designated objref for this file, because the file is due later on in >> the image stream. On the other hand, we can't just fput() the file >> because it will close the PTY too. >> >> Instead, when we checkpoint the master PTY, we _reserve_ an objref >> for the file (which won't be further used in checkpoint). Then at >> restart, use it to insert the file to objhash. >> >> TODO: >> >> * Better sanitize input from checkpoint image on restore >> * Check the locking when saving/restoring tty_struct state >> * Echo position/buffer isn't saved (is it needed ?) >> * Handle multiple devpts mounts (namespaces) >> * Paths of ptmx and slaves are hard coded (/dev/ptmx, /dev/pts/...) >> >> Changelog[v1]: >> - Adjust include/asm/checkpoint_hdr.h for s390 architecture >> - Add NCC to kernel constants header (ckpt_hdr_const) >> - [Serge Hallyn] fix calculation of canon_datalen >> >> Signed-off-by: Oren Laadan > > [...] > >> diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c >> index a3afa0c..b8f8d79 100644 >> --- a/drivers/char/tty_io.c >> +++ b/drivers/char/tty_io.c >> @@ -570,7 +582,9 @@ static void do_tty_hangup(struct work_struct *work) >> set_bit(TTY_HUPPED, &tty->flags); >> spin_unlock_irqrestore(&tty->ctrl_lock, flags); >> >> - /* Account for the p->signal references we killed */ >> + /* Account >> + >> + for the p->signal references we killed */ >> while (refs--) >> tty_kref_put(tty); >> > > Nit: this hunk is certainly not needed ;) Hmm... lemme think about it ... :p Oren.