From: "Serge E. Hallyn" <serue@us.ibm.com>
To: Andrey Mirkin <major@openvz.org>
Cc: linux-kernel@vger.kernel.org, containers@lists.linux-foundation.org
Subject: Re: [PATCH 4/9] Introduce container dump function
Date: Wed, 3 Sep 2008 09:23:08 -0500 [thread overview]
Message-ID: <20080903142308.GB13425@us.ibm.com> (raw)
In-Reply-To: <1220439476-16465-5-git-send-email-major@openvz.org>
Quoting Andrey Mirkin (major@openvz.org):
> Actually right now we are going to dump only one process.
> Function for dumping head of image file are added.
>
> Signed-off-by: Andrey Mirkin <major@openvz.org>
> ---
> cpt/Makefile | 2 +-
> cpt/checkpoint.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> cpt/cpt.h | 3 ++
> cpt/sys.c | 3 +-
> kernel/fork.c | 2 +
> 5 files changed, 82 insertions(+), 2 deletions(-)
> create mode 100644 cpt/checkpoint.c
>
> diff --git a/cpt/Makefile b/cpt/Makefile
> index bfe75d5..173346b 100644
> --- a/cpt/Makefile
> +++ b/cpt/Makefile
> @@ -2,4 +2,4 @@ obj-y += sys_core.o
>
> obj-$(CONFIG_CHECKPOINT) += cptrst.o
>
> -cptrst-objs := sys.o
> +cptrst-objs := sys.o checkpoint.o
> diff --git a/cpt/checkpoint.c b/cpt/checkpoint.c
> new file mode 100644
> index 0000000..b4d9686
> --- /dev/null
> +++ b/cpt/checkpoint.c
> @@ -0,0 +1,74 @@
> +/*
> + * Copyright (C) 2008 Parallels, Inc.
> + *
> + * Author: Andrey Mirkin <major@openvz.org>
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation, version 2 of the
> + * License.
> + *
> + */
> +
> +#include <linux/sched.h>
> +#include <linux/fs.h>
> +#include <linux/file.h>
> +#include <linux/version.h>
> +
> +#include "cpt.h"
> +
> +static int cpt_write_head(struct cpt_context *ctx)
> +{
> + struct cpt_head hdr;
> +
> + memset(&hdr, 0, sizeof(hdr));
> + hdr.cpt_signature[0] = CPT_SIGNATURE0;
> + hdr.cpt_signature[1] = CPT_SIGNATURE1;
> + hdr.cpt_signature[2] = CPT_SIGNATURE2;
> + hdr.cpt_signature[3] = CPT_SIGNATURE3;
> + hdr.cpt_hdrlen = sizeof(hdr);
> + hdr.cpt_image_major = (LINUX_VERSION_CODE >> 16) & 0xff;
> + hdr.cpt_image_minor = (LINUX_VERSION_CODE >> 8) & 0xff;
> + hdr.cpt_image_sublevel = (LINUX_VERSION_CODE) & 0xff;
> + hdr.cpt_image_extra = 0;
> +#if defined(CONFIG_X86_32)
> + hdr.cpt_arch = CPT_ARCH_I386;
> +#else
> +#error Arch is not supported
> +#endif
> + return ctx->write(&hdr, sizeof(hdr), ctx);
> +}
> +
> +int dump_container(struct cpt_context *ctx)
> +{
> + int err;
> + struct task_struct *root;
> +
> + read_lock(&tasklist_lock);
> + root = find_task_by_vpid(ctx->pid);
> + if (root)
> + get_task_struct(root);
> + read_unlock(&tasklist_lock);
> +
> + err = -ESRCH;
> + if (!root) {
> + eprintk("can not find root task\n");
> + return err;
> + }
> + ctx->nsproxy = root->nsproxy;
> + if (!ctx->nsproxy) {
> + eprintk("nsproxy is null\n");
> + goto out;
> + }
The get_task_struct() above won't pin the tsk->nsproxy
though, will it? So should you be doing a
rcu_read_lock();
nsproxy = get_task_nsproxy(root);
rcu_read_unlock();
to make sure the nsproxy doesn't disappear out from under
you?
(Maybe you do it in a later patch...)
thanks,
-serge
> + err = cpt_write_head(ctx);
> +
> + /* Dump task here */
> + if (!err)
> + err = -ENOSYS;
> +
> +out:
> + ctx->nsproxy = NULL;
> + put_task_struct(root);
> + return err;
> +}
> diff --git a/cpt/cpt.h b/cpt/cpt.h
> index 607ac1b..b421a11 100644
> --- a/cpt/cpt.h
> +++ b/cpt/cpt.h
> @@ -33,6 +33,7 @@ typedef struct cpt_context
> int refcount;
> int ctx_state;
> struct semaphore main_sem;
> + struct nsproxy *nsproxy;
>
> int errno;
>
> @@ -54,3 +55,5 @@ extern int debug_level;
>
> #define eprintk(a...) cpt_printk(1, "CPT ERR: " a)
> #define dprintk(a...) cpt_printk(1, "CPT DBG: " a)
> +
> +int dump_container(struct cpt_context *ctx);
> diff --git a/cpt/sys.c b/cpt/sys.c
> index 8334c4c..6801c22 100644
> --- a/cpt/sys.c
> +++ b/cpt/sys.c
> @@ -109,9 +109,10 @@ static int checkpoint(pid_t pid, int fd, unsigned long flags)
>
> ctx->file = file;
> ctx->ctx_state = CPT_CTX_DUMPING;
> + ctx->pid = pid;
>
> /* checkpoint */
> - err = -ENOSYS;
> + err = dump_container(ctx);
>
> context_put(ctx);
>
> diff --git a/kernel/fork.c b/kernel/fork.c
> index 52b5037..f38b43d 100644
> --- a/kernel/fork.c
> +++ b/kernel/fork.c
> @@ -77,6 +77,7 @@ int max_threads; /* tunable limit on nr_threads */
> DEFINE_PER_CPU(unsigned long, process_counts) = 0;
>
> __cacheline_aligned DEFINE_RWLOCK(tasklist_lock); /* outer */
> +EXPORT_SYMBOL(tasklist_lock);
>
> int nr_processes(void)
> {
> @@ -153,6 +154,7 @@ void __put_task_struct(struct task_struct *tsk)
> if (!profile_handoff_task(tsk))
> free_task(tsk);
> }
> +EXPORT_SYMBOL(__put_task_struct);
>
> /*
> * macro override instead of weak attribute alias, to workaround
> --
> 1.5.6
>
> _______________________________________________
> Containers mailing list
> Containers@lists.linux-foundation.org
> https://lists.linux-foundation.org/mailman/listinfo/containers
next prev parent reply other threads:[~2008-09-03 14:23 UTC|newest]
Thread overview: 138+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-03 10:57 [PATCH 0/9] OpenVZ kernel based checkpointing/restart Andrey Mirkin
2008-09-03 10:57 ` Andrey Mirkin
2008-09-03 10:57 ` [PATCH 1/9] Introduce trivial sys_checkpoint and sys_restore system calls Andrey Mirkin
[not found] ` <1220439476-16465-2-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 2/9] Make checkpoint/restart functionality modular Andrey Mirkin
2008-09-03 11:44 ` [PATCH 1/9] Introduce trivial sys_checkpoint and sys_restore system calls Cedric Le Goater
2008-09-03 10:57 ` [PATCH 2/9] Make checkpoint/restart functionality modular Andrey Mirkin
[not found] ` <1220439476-16465-3-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 3/9] Introduce context structure needed during checkpointing/restart Andrey Mirkin
2008-09-03 14:27 ` [PATCH 2/9] Make checkpoint/restart functionality modular Serge E. Hallyn
2008-09-03 10:57 ` [PATCH 3/9] Introduce context structure needed during checkpointing/restart Andrey Mirkin
2008-09-03 10:57 ` [PATCH 4/9] Introduce container dump function Andrey Mirkin
[not found] ` <1220439476-16465-5-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 5/9] Introduce function to dump process Andrey Mirkin
2008-09-03 10:57 ` Andrey Mirkin
[not found] ` <1220439476-16465-6-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 6/9] Introduce functions to dump mm Andrey Mirkin
2008-09-03 10:57 ` Andrey Mirkin
[not found] ` <1220439476-16465-7-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 7/9] Introduce function for restarting a container Andrey Mirkin
2008-09-03 10:57 ` Andrey Mirkin
[not found] ` <1220439476-16465-8-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 8/9] Introduce functions to restart a process Andrey Mirkin
2008-09-03 10:57 ` Andrey Mirkin
[not found] ` <1220439476-16465-9-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 9/9] Introduce functions to restore mm Andrey Mirkin
2008-09-03 10:57 ` Andrey Mirkin
2008-09-03 14:32 ` [PATCH 8/9] Introduce functions to restart a process Louis Rilling
2008-09-03 14:32 ` Louis Rilling
2008-09-13 17:34 ` Pavel Machek
[not found] ` <20080903143248.GU14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-13 17:34 ` Pavel Machek
2008-09-03 14:17 ` [PATCH 6/9] Introduce functions to dump mm Louis Rilling
2008-09-03 14:17 ` Louis Rilling
2008-09-03 14:23 ` [PATCH 4/9] Introduce container dump function Serge E. Hallyn
2008-09-03 14:23 ` Serge E. Hallyn [this message]
[not found] ` <20080903142308.GB13425-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-03 14:45 ` Andrey Mirkin
2008-09-03 14:45 ` Andrey Mirkin
2008-09-03 13:56 ` [PATCH 3/9] Introduce context structure needed during checkpointing/restart Louis Rilling
[not found] ` <20080903135616.GR14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-03 14:07 ` Andrey Mirkin
2008-09-03 14:07 ` Andrey Mirkin
[not found] ` <1220439476-16465-4-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 4/9] Introduce container dump function Andrey Mirkin
2008-09-03 12:29 ` [PATCH 3/9] Introduce context structure needed during checkpointing/restart Matthieu Fertré
2008-09-03 12:29 ` Matthieu Fertré
[not found] ` <48BE8315.6030907-7Ky3UMAtGjA@public.gmane.org>
2008-09-03 14:11 ` Andrey Mirkin
2008-09-03 14:11 ` Andrey Mirkin
2008-09-03 13:56 ` Louis Rilling
2008-09-03 14:13 ` Cedric Le Goater
2008-09-03 14:13 ` Cedric Le Goater
[not found] ` <48BE9B74.7010600-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 14:29 ` Andrey Mirkin
2008-09-03 14:29 ` Andrey Mirkin
2008-09-03 14:27 ` [PATCH 2/9] Make checkpoint/restart functionality modular Serge E. Hallyn
[not found] ` <20080903142720.GC13425-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-09-03 14:51 ` Andrey Mirkin
2008-09-03 14:51 ` Andrey Mirkin
2008-09-03 11:44 ` [PATCH 1/9] Introduce trivial sys_checkpoint and sys_restore system calls Cedric Le Goater
2008-09-03 13:05 ` [Devel] " Andrey Mirkin
[not found] ` <48BE7885.3070609-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 13:05 ` Andrey Mirkin
2008-09-03 12:28 ` [PATCH 0/9] OpenVZ kernel based checkpointing/restart Cedric Le Goater
2008-09-03 13:59 ` [Devel] " Andrey Mirkin
2008-09-04 22:55 ` Dave Hansen
[not found] ` <200809031759.29132.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-04 22:55 ` Dave Hansen
2008-09-03 14:18 ` Serge E. Hallyn
[not found] ` <48BE82F9.4020808-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 13:59 ` [Devel] " Andrey Mirkin
2008-09-03 14:18 ` Serge E. Hallyn
2008-09-03 13:49 ` Louis Rilling
[not found] ` <20080903134951.GQ14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-03 14:06 ` Louis Rilling
2008-09-03 14:06 ` Louis Rilling
2008-09-03 14:19 ` Andrey Mirkin
[not found] ` <20080903140636.GS14473-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-09-03 14:19 ` Andrey Mirkin
2008-09-03 14:26 ` Cedric Le Goater
2008-09-03 14:26 ` Cedric Le Goater
[not found] ` <48BE9E95.3020706-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-09-03 14:53 ` Andrey Mirkin
2008-09-03 14:53 ` Andrey Mirkin
2008-09-04 8:14 ` Oren Laadan
[not found] ` <1220439476-16465-1-git-send-email-major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-09-03 10:57 ` [PATCH 1/9] Introduce trivial sys_checkpoint and sys_restore system calls Andrey Mirkin
2008-09-03 12:28 ` [PATCH 0/9] OpenVZ kernel based checkpointing/restart Cedric Le Goater
2008-09-03 13:49 ` Louis Rilling
2008-09-04 8:14 ` Oren Laadan
2008-09-04 14:05 ` Dave Hansen
2008-10-17 23:33 ` Dave Hansen
2008-09-04 14:05 ` Dave Hansen
2008-10-17 23:33 ` Dave Hansen
2008-10-20 11:10 ` Louis Rilling
2008-10-20 11:10 ` Louis Rilling
[not found] ` <20081020111002.GQ15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-20 13:25 ` Daniel Lezcano
2008-10-20 16:36 ` Dave Hansen
2008-10-20 13:25 ` Daniel Lezcano
[not found] ` <48FC86B2.8000606-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-20 13:48 ` Cedric Le Goater
2008-10-20 13:48 ` Cedric Le Goater
2008-10-20 13:49 ` Daniel Lezcano
[not found] ` <48FC8C30.6040409-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-20 13:49 ` Daniel Lezcano
2008-10-20 15:53 ` Oren Laadan
2008-10-20 15:53 ` Oren Laadan
2008-10-20 16:51 ` Serge E. Hallyn
[not found] ` <48FCA97C.1040108-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-20 16:37 ` Daniel Lezcano
2008-10-20 16:37 ` Daniel Lezcano
[not found] ` <48FCB3CC.9030804-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-20 17:23 ` Serge E. Hallyn
2008-10-20 17:23 ` Serge E. Hallyn
2008-10-21 0:18 ` Oren Laadan
2008-10-21 0:58 ` Serge E. Hallyn
2008-10-21 13:24 ` Daniel Lezcano
[not found] ` <48FD1FBC.5050408-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-21 0:58 ` Serge E. Hallyn
2008-10-21 13:24 ` Daniel Lezcano
[not found] ` <20081020172358.GA29092-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2008-10-21 0:18 ` Oren Laadan
2008-10-27 14:45 ` [Devel] " Andrey Mirkin
2008-10-27 14:45 ` Andrey Mirkin
2008-10-20 16:51 ` Serge E. Hallyn
2008-10-21 9:36 ` Cedric Le Goater
2008-10-21 9:36 ` Cedric Le Goater
2008-10-20 16:36 ` Dave Hansen
2008-10-20 12:14 ` [Devel] " Andrey Mirkin
2008-10-20 12:14 ` Andrey Mirkin
2008-10-20 15:55 ` Dave Hansen
2008-10-27 14:07 ` Andrey Mirkin
2008-10-27 14:07 ` Andrey Mirkin
[not found] ` <200810271707.13580.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-27 14:39 ` Oren Laadan
2008-11-03 19:35 ` Oren Laadan
2008-10-27 14:39 ` Oren Laadan
2008-10-30 6:02 ` Andrey Mirkin
2008-10-30 11:47 ` Louis Rilling
2008-10-30 17:08 ` Dave Hansen
2008-10-30 18:01 ` Louis Rilling
2008-10-30 18:01 ` Louis Rilling
2008-10-30 18:28 ` Oren Laadan
[not found] ` <20081030180133.GN15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-30 18:28 ` Oren Laadan
2008-10-30 17:45 ` Oren Laadan
[not found] ` <4909F2B5.7040907-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-30 18:14 ` Louis Rilling
2008-10-30 18:14 ` Louis Rilling
2008-10-30 18:32 ` Oren Laadan
2008-10-31 10:37 ` Louis Rilling
[not found] ` <4909FDD3.5090806-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-31 10:37 ` Louis Rilling
[not found] ` <20081030181418.GO15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-30 18:32 ` Oren Laadan
[not found] ` <20081030114747.GL15171-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2008-10-30 17:08 ` Dave Hansen
2008-10-30 17:45 ` Oren Laadan
[not found] ` <200810300902.47067.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-30 11:47 ` Louis Rilling
2008-10-30 14:08 ` Serge E. Hallyn
2008-10-30 17:03 ` Dave Hansen
2008-10-30 17:03 ` Dave Hansen
2008-10-30 14:08 ` Serge E. Hallyn
[not found] ` <4905D2AD.1070309-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-30 6:02 ` Andrey Mirkin
2008-11-03 19:35 ` Oren Laadan
[not found] ` <200810201614.36911.major-GEFAQzZX7r8dnm+yROfE0A@public.gmane.org>
2008-10-20 15:55 ` Dave Hansen
2008-10-20 17:17 ` Oren Laadan
2008-10-20 17:17 ` Oren Laadan
2008-10-27 14:38 ` Andrey Mirkin
[not found] ` <48FCBD24.7070902-eQaUEPhvms7ENvBUuze7eA@public.gmane.org>
2008-10-27 14:38 ` Andrey Mirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080903142308.GB13425@us.ibm.com \
--to=serue@us.ibm.com \
--cc=containers@lists.linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=major@openvz.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.