All of lore.kernel.org
 help / color / mirror / Atom feed
* build breaks when checkpoint unimplemented by arch
@ 2009-07-06 21:06 Nathan Lynch
       [not found] ` <m3my7hv7w8.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Nathan Lynch @ 2009-07-06 21:06 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

Hi Oren,

With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:

In file included from include/linux/checkpoint.h:28,
                 from kernel/exit.c:53:
include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
In file included from include/linux/checkpoint.h:28,
                 from kernel/exit.c:53:
include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
make[1]: *** [kernel/exit.o] Error 1


It appears that any architecture which does not supply
asm/checkpoint_hdr.h is broken in the same way.

Either all architectures need to supply asm/checkpoint_hdr.h (and define
CKPT_ARCH_NSIG), or there needs to be some other fix which allows
as-yet-unsupported arches to build..

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found] ` <m3my7hv7w8.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
@ 2009-07-06 23:04   ` Oren Laadan
       [not found]     ` <Pine.LNX.4.64.0907061902530.15941-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Oren Laadan @ 2009-07-06 23:04 UTC (permalink / raw)
  To: Nathan Lynch; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

On Mon, 6 Jul 2009, Nathan Lynch wrote:

> Hi Oren,
> 
> With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:
> 
> In file included from include/linux/checkpoint.h:28,
>                  from kernel/exit.c:53:
> include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
> In file included from include/linux/checkpoint.h:28,
>                  from kernel/exit.c:53:
> include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
> make[1]: *** [kernel/exit.o] Error 1
> 
> 
> It appears that any architecture which does not supply
> asm/checkpoint_hdr.h is broken in the same way.
> 
> Either all architectures need to supply asm/checkpoint_hdr.h (and define
> CKPT_ARCH_NSIG), or there needs to be some other fix which allows
> as-yet-unsupported arches to build..
> 

I see... well - maybe it's time to resend the powerpc port :p

Until then, this patch worked for me to compile without c/r

Oren.


diff --git a/include/linux/checkpoint.h b/include/linux/checkpoint.h
index c47e796..b8f99be 100644
--- a/include/linux/checkpoint.h
+++ b/include/linux/checkpoint.h
@@ -19,6 +19,7 @@
 #define RESTART_TASKSELF	0x1
 
 #ifdef __KERNEL__
+#ifdef CONFIG_CHECKPOINT
 
 #include <linux/sched.h>
 #include <linux/nsproxy.h>
@@ -299,6 +300,7 @@ extern unsigned long ckpt_debug_level;
 
 #endif /* CONFIG_CHECKPOINT_DEBUG */
 
+#endif /* CONFIG_CHECKPOINT */
 #endif /* __KERNEL__ */
 
 #endif /* _LINUX_CHECKPOINT_H_ */

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]     ` <Pine.LNX.4.64.0907061902530.15941-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
@ 2009-07-06 23:29       ` Serge E. Hallyn
  2009-07-06 23:54       ` Nathan Lynch
  1 sibling, 0 replies; 12+ messages in thread
From: Serge E. Hallyn @ 2009-07-06 23:29 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg, Nathan Lynch

Quoting Oren Laadan (orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org):
> On Mon, 6 Jul 2009, Nathan Lynch wrote:
> 
> > Hi Oren,
> > 
> > With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:
> > 
> > In file included from include/linux/checkpoint.h:28,
> >                  from kernel/exit.c:53:
> > include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
> > In file included from include/linux/checkpoint.h:28,
> >                  from kernel/exit.c:53:
> > include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
> > make[1]: *** [kernel/exit.o] Error 1
> > 
> > 
> > It appears that any architecture which does not supply
> > asm/checkpoint_hdr.h is broken in the same way.
> > 
> > Either all architectures need to supply asm/checkpoint_hdr.h (and define
> > CKPT_ARCH_NSIG), or there needs to be some other fix which allows
> > as-yet-unsupported arches to build..
> > 
> 
> I see... well - maybe it's time to resend the powerpc port :p

arm, sh, etc.

> Until then, this patch worked for me to compile without c/r

That isn't enough bc a lot of files are including <linux/checkpoint_hdr.h> and
_types.h.

The following patch enables compilation on powerpc, and it still works on
s390.

-serge

From 14eb1922d4bb3b01aa5f729022edf843b354ec97 Mon Sep 17 00:00:00 2001
From: root <root-JJi412eHaPLkOmf+N4b0O9FgqiXiwxn+0E9HWUfgJXw@public.gmane.org>
Date: Mon, 6 Jul 2009 16:22:29 -0700
Subject: [PATCH] cr: enable compile on architectures without asm/checkpoint_hdr.h

ifdef out the contents of linux/checkpoint.h if !CONFIG_CHECKPOINT.
For all files which were including one of the other checkpoint*.h
files, include linux/checkpoint.h instead, which will #include
those.

Signed-off-by: Serge Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
 fs/pipe.c                  |    1 -
 include/linux/checkpoint.h |    2 ++
 ipc/shm.c                  |    1 -
 ipc/util.h                 |    2 +-
 kernel/capability.c        |    4 +++-
 mm/filemap.c               |    2 --
 mm/mmap.c                  |    2 --
 mm/shmem.c                 |    2 --
 8 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/fs/pipe.c b/fs/pipe.c
index 5d4c1c8..18c22eb 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -24,7 +24,6 @@
 #include <asm/ioctls.h>
 
 #include <linux/checkpoint.h>
-#include <linux/checkpoint_hdr.h>
 
 /*
  * We use a start+len construction, which provides full use of the 
diff --git a/include/linux/checkpoint.h b/include/linux/checkpoint.h
index c47e796..9d82082 100644
--- a/include/linux/checkpoint.h
+++ b/include/linux/checkpoint.h
@@ -10,6 +10,7 @@
  *  distribution for more details.
  */
 
+#ifdef CONFIG_CHECKPOINT
 #define CHECKPOINT_VERSION  1
 
 /* checkpoint user flags */
@@ -301,4 +302,5 @@ extern unsigned long ckpt_debug_level;
 
 #endif /* __KERNEL__ */
 
+#endif
 #endif /* _LINUX_CHECKPOINT_H_ */
diff --git a/ipc/shm.c b/ipc/shm.c
index 0991134..516b179 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -40,7 +40,6 @@
 #include <linux/mount.h>
 #include <linux/ipc_namespace.h>
 #include <linux/ima.h>
-#include <linux/checkpoint_hdr.h>
 #include <linux/checkpoint.h>
 
 #include <asm/uaccess.h>
diff --git a/ipc/util.h b/ipc/util.h
index 48de0a9..1ddfd90 100644
--- a/ipc/util.h
+++ b/ipc/util.h
@@ -12,7 +12,7 @@
 
 #include <linux/unistd.h>
 #include <linux/err.h>
-#include <linux/checkpoint_hdr.h>
+#include <linux/checkpoint.h>
 
 #define SEQ_MULTIPLIER	(IPCMNI)
 
diff --git a/kernel/capability.c b/kernel/capability.c
index 90cc7b4..94328c9 100644
--- a/kernel/capability.c
+++ b/kernel/capability.c
@@ -15,7 +15,7 @@
 #include <linux/syscalls.h>
 #include <linux/pid_namespace.h>
 #include <linux/securebits.h>
-#include <linux/checkpoint_hdr.h>
+#include <linux/checkpoint.h>
 #include <asm/uaccess.h>
 #include "cred-internals.h"
 
@@ -375,6 +375,7 @@ static inline int restore_cap_bset(kernel_cap_t bset, struct cred *cred)
 }
 #endif /* CONFIG_SECURITY_FILE_CAPABILITIES */
 
+#ifdef CONFIG_CHECKPOINT
 static int do_restore_caps(struct ckpt_capabilities *h, struct cred *cred)
 {
 	kernel_cap_t effective, inheritable, permitted, bset;
@@ -428,6 +429,7 @@ int restore_capabilities(struct ckpt_capabilities *h, struct cred *new)
 
 	return ret;
 }
+#endif
 
 /**
  * capable - Determine if the current task has a superior capability in effect
diff --git a/mm/filemap.c b/mm/filemap.c
index 782664d..cd8556d 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -36,8 +36,6 @@
 #include <linux/mm_inline.h> /* for page_is_file_cache() */
 #include "internal.h"
 
-#include <linux/checkpoint_types.h>
-#include <linux/checkpoint_hdr.h>
 #include <linux/checkpoint.h>
 
 /*
diff --git a/mm/mmap.c b/mm/mmap.c
index e60424b..ba0b039 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -35,8 +35,6 @@
 #include <asm/tlb.h>
 #include <asm/mmu_context.h>
 
-#include <linux/checkpoint_types.h>
-#include <linux/checkpoint_hdr.h>
 #include <linux/checkpoint.h>
 
 #include "internal.h"
diff --git a/mm/shmem.c b/mm/shmem.c
index e123ec2..7d80ef8 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -31,8 +31,6 @@
 #include <linux/swap.h>
 #include <linux/ima.h>
 
-#include <linux/checkpoint_types.h>
-#include <linux/checkpoint_hdr.h>
 #include <linux/checkpoint.h>
 
 static struct vfsmount *shm_mnt;
-- 
1.6.2.3

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]     ` <Pine.LNX.4.64.0907061902530.15941-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
  2009-07-06 23:29       ` Serge E. Hallyn
@ 2009-07-06 23:54       ` Nathan Lynch
       [not found]         ` <m3bpnxv03k.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
  1 sibling, 1 reply; 12+ messages in thread
From: Nathan Lynch @ 2009-07-06 23:54 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:

> On Mon, 6 Jul 2009, Nathan Lynch wrote:
>
>> Hi Oren,
>> 
>> With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:
>> 
>> In file included from include/linux/checkpoint.h:28,
>>                  from kernel/exit.c:53:
>> include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
>> In file included from include/linux/checkpoint.h:28,
>>                  from kernel/exit.c:53:
>> include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
>> make[1]: *** [kernel/exit.o] Error 1
>> 
>> 
>> It appears that any architecture which does not supply
>> asm/checkpoint_hdr.h is broken in the same way.
>> 
>> Either all architectures need to supply asm/checkpoint_hdr.h (and define
>> CKPT_ARCH_NSIG), or there needs to be some other fix which allows
>> as-yet-unsupported arches to build..
>> 
>
> I see... well - maybe it's time to resend the powerpc port :p

I'm working on that, but the powerpc port won't be of any help to the
twenty-odd other architectures that are broken.


> Until then, this patch worked for me to compile without c/r
>
> diff --git a/include/linux/checkpoint.h b/include/linux/checkpoint.h
> index c47e796..b8f99be 100644
> --- a/include/linux/checkpoint.h
> +++ b/include/linux/checkpoint.h
> @@ -19,6 +19,7 @@
>  #define RESTART_TASKSELF	0x1
>  
>  #ifdef __KERNEL__
> +#ifdef CONFIG_CHECKPOINT
>  
>  #include <linux/sched.h>
>  #include <linux/nsproxy.h>
> @@ -299,6 +300,7 @@ extern unsigned long ckpt_debug_level;
>  
>  #endif /* CONFIG_CHECKPOINT_DEBUG */
>  
> +#endif /* CONFIG_CHECKPOINT */
>  #endif /* __KERNEL__ */

I think something like the following could be a better approach.

It needs to be split into separate patches with good commit messages,
but the gist is that asm/checkpoint_hdr.h should be included only by
files built when CONFIG_CHECKPOINT=y.

And linux/checkpoint_hdr.h doesn't really need it: all architectures
provide a sigset_t definition.

 arch/x86/mm/checkpoint.c       |    1 +
 checkpoint/checkpoint.c        |    1 +
 checkpoint/restart.c           |    1 +
 include/linux/checkpoint_hdr.h |    6 ++----
 4 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/x86/mm/checkpoint.c b/arch/x86/mm/checkpoint.c
index 68432c8..3d21989 100644
--- a/arch/x86/mm/checkpoint.c
+++ b/arch/x86/mm/checkpoint.c
@@ -17,6 +17,7 @@
 
 #include <linux/checkpoint.h>
 #include <linux/checkpoint_hdr.h>
+#include <asm/checkpoint_hdr.h>
 
 /*
  * helpers to encode/decode/validate registers/segments/eflags
diff --git a/checkpoint/checkpoint.c b/checkpoint/checkpoint.c
index 2d4923c..6e90755 100644
--- a/checkpoint/checkpoint.c
+++ b/checkpoint/checkpoint.c
@@ -26,6 +26,7 @@
 #include <linux/hrtimer.h>
 #include <linux/checkpoint.h>
 #include <linux/checkpoint_hdr.h>
+#include <asm/checkpoint_hdr.h>
 
 /* unique checkpoint identifier (FIXME: should be per-container ?) */
 static atomic_t ctx_count = ATOMIC_INIT(0);
diff --git a/checkpoint/restart.c b/checkpoint/restart.c
index 7982a03..afe2e1c 100644
--- a/checkpoint/restart.c
+++ b/checkpoint/restart.c
@@ -22,6 +22,7 @@
 #include <linux/elf.h>
 #include <linux/checkpoint.h>
 #include <linux/checkpoint_hdr.h>
+#include <asm/checkpoint_hdr.h>
 
 /**
  * _ckpt_read_objref - dispatch handling of a shared object
diff --git a/include/linux/checkpoint_hdr.h b/include/linux/checkpoint_hdr.h
index b5243e1..a2872a4 100644
--- a/include/linux/checkpoint_hdr.h
+++ b/include/linux/checkpoint_hdr.h
@@ -12,6 +12,7 @@
 
 #include <linux/types.h>
 #include <linux/utsname.h>
+#include <asm/signal.h>
 
 /*
  * To maintain compatibility between 32-bit and 64-bit architecture flavors,
@@ -39,9 +40,6 @@ struct ckpt_hdr {
 } __attribute__((aligned(8)));
 
 
-#include <asm/checkpoint_hdr.h>
-
-
 /* header types */
 enum {
 	CKPT_HDR_HEADER = 1,
@@ -407,7 +405,7 @@ struct ckpt_hdr_pgarr {
 
 /* signals */
 struct ckpt_hdr_sigset {
-	__u8 sigset[CKPT_ARCH_NSIG / 8];
+	sigset_t sigset;
 } __attribute__((aligned(8)));
 
 struct ckpt_hdr_sigaction {

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]         ` <m3bpnxv03k.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
@ 2009-07-07  4:44           ` Oren Laadan
       [not found]             ` <Pine.LNX.4.64.0907070039360.22105-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Oren Laadan @ 2009-07-07  4:44 UTC (permalink / raw)
  To: Nathan Lynch; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

On Mon, 6 Jul 2009, Nathan Lynch wrote:

> Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
> 
> > On Mon, 6 Jul 2009, Nathan Lynch wrote:
> >
> >> Hi Oren,
> >> 
> >> With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:
> >> 
> >> In file included from include/linux/checkpoint.h:28,
> >>                  from kernel/exit.c:53:
> >> include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
> >> In file included from include/linux/checkpoint.h:28,
> >>                  from kernel/exit.c:53:
> >> include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
> >> make[1]: *** [kernel/exit.o] Error 1
> >> 
> >> 
> >> It appears that any architecture which does not supply
> >> asm/checkpoint_hdr.h is broken in the same way.
> >> 
> >> Either all architectures need to supply asm/checkpoint_hdr.h (and define
> >> CKPT_ARCH_NSIG), or there needs to be some other fix which allows
> >> as-yet-unsupported arches to build..
> >> 
> >
> > I see... well - maybe it's time to resend the powerpc port :p
> 
> I'm working on that, but the powerpc port won't be of any help to the
> twenty-odd other architectures that are broken.
> 

[...]

That's what I tried initially, but the problem is that sigset_t may
be defined differently for userspace - see /usr/include/asm/sigset_t.h.
In fact, for x86_32, it it is different, defined as 'unsigned long' 
(and NSIG defined as 32, so only 32 bits).

Moreover, if you include <asm/sigset.h> in checkpoint_hdr.h, which is
also included by userspace, you get lots of compilations warnings,
because of other stuff included from the kernel's asm/sigset.h that
isn't supposed to be included by userspace.

So the introduction of CKPT_ARCH_NSIG is a workaround that.

And back to the other problem - I agree, kernel should only include
<linux/checkpoint.h>, which in turn will include <checkpoint_hdr.h>
if defined CONFIG_CHECKPOINT.

Can you try this patch:

(Hallyn: note that there is some checkpoint-related code within
kerbel/capability.c that should be inside #ifdef CONFIG_CHECKPOINT).

Oren.


diff --git a/fs/pipe.c b/fs/pipe.c
index 5d4c1c8..68fdab4 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -19,12 +19,11 @@
 #include <linux/pagemap.h>
 #include <linux/audit.h>
 #include <linux/syscalls.h>
+#include <linux/checkpoint.h>
 
 #include <asm/uaccess.h>
 #include <asm/ioctls.h>
 
-#include <linux/checkpoint.h>
-#include <linux/checkpoint_hdr.h>
 
 /*
  * We use a start+len construction, which provides full use of the 
diff --git a/include/linux/checkpoint.h b/include/linux/checkpoint.h
index c47e796..b8f99be 100644
--- a/include/linux/checkpoint.h
+++ b/include/linux/checkpoint.h
@@ -19,6 +19,7 @@
 #define RESTART_TASKSELF	0x1
 
 #ifdef __KERNEL__
+#ifdef CONFIG_CHECKPOINT
 
 #include <linux/sched.h>
 #include <linux/nsproxy.h>
@@ -299,6 +300,7 @@ extern unsigned long ckpt_debug_level;
 
 #endif /* CONFIG_CHECKPOINT_DEBUG */
 
+#endif /* CONFIG_CHECKPOINT */
 #endif /* __KERNEL__ */
 
 #endif /* _LINUX_CHECKPOINT_H_ */
diff --git a/ipc/shm.c b/ipc/shm.c
index 0991134..516b179 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -40,7 +40,6 @@
 #include <linux/mount.h>
 #include <linux/ipc_namespace.h>
 #include <linux/ima.h>
-#include <linux/checkpoint_hdr.h>
 #include <linux/checkpoint.h>
 
 #include <asm/uaccess.h>
diff --git a/kernel/capability.c b/kernel/capability.c
index 90cc7b4..4f58454 100644
--- a/kernel/capability.c
+++ b/kernel/capability.c
@@ -15,7 +15,7 @@
 #include <linux/syscalls.h>
 #include <linux/pid_namespace.h>
 #include <linux/securebits.h>
-#include <linux/checkpoint_hdr.h>
+#include <linux/checkpoint.h>
 #include <asm/uaccess.h>
 #include "cred-internals.h"
 
@@ -375,6 +375,7 @@ static inline int restore_cap_bset(kernel_cap_t bset, struct cred *cred)
 }
 #endif /* CONFIG_SECURITY_FILE_CAPABILITIES */
 
+#ifdef CONFIG_CHECKPOINT
 static int do_restore_caps(struct ckpt_capabilities *h, struct cred *cred)
 {
 	kernel_cap_t effective, inheritable, permitted, bset;
@@ -428,6 +429,7 @@ int restore_capabilities(struct ckpt_capabilities *h, struct cred *new)
 
 	return ret;
 }
+#endif /* CONFIG_CHECKPOINT */
 
 /**
  * capable - Determine if the current task has a superior capability in effect
diff --git a/mm/filemap.c b/mm/filemap.c
index 782664d..202bd74 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -34,11 +34,9 @@
 #include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
 #include <linux/memcontrol.h>
 #include <linux/mm_inline.h> /* for page_is_file_cache() */
+#include <linux/checkpoint.h>
 #include "internal.h"
 
-#include <linux/checkpoint_types.h>
-#include <linux/checkpoint_hdr.h>
-#include <linux/checkpoint.h>
 
 /*
  * FIXME: remove all knowledge of the buffer layer from the core VM
diff --git a/mm/mmap.c b/mm/mmap.c
index e60424b..4c01a90 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -29,16 +29,13 @@
 #include <linux/rmap.h>
 #include <linux/mmu_notifier.h>
 #include <linux/perf_counter.h>
+#include <linux/checkpoint.h>
 
 #include <asm/uaccess.h>
 #include <asm/cacheflush.h>
 #include <asm/tlb.h>
 #include <asm/mmu_context.h>
 
-#include <linux/checkpoint_types.h>
-#include <linux/checkpoint_hdr.h>
-#include <linux/checkpoint.h>
-
 #include "internal.h"
 
 #ifndef arch_mmap_check
diff --git a/mm/shmem.c b/mm/shmem.c
index e123ec2..9334810 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -30,9 +30,6 @@
 #include <linux/module.h>
 #include <linux/swap.h>
 #include <linux/ima.h>
-
-#include <linux/checkpoint_types.h>
-#include <linux/checkpoint_hdr.h>
 #include <linux/checkpoint.h>
 
 static struct vfsmount *shm_mnt;

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]             ` <Pine.LNX.4.64.0907070039360.22105-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
@ 2009-07-07  6:22               ` Nathan Lynch
       [not found]                 ` <m2eist3tcr.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
  2009-07-07 13:33               ` Serge E. Hallyn
  1 sibling, 1 reply; 12+ messages in thread
From: Nathan Lynch @ 2009-07-07  6:22 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
> That's what I tried initially, but the problem is that sigset_t may
> be defined differently for userspace - see /usr/include/asm/sigset_t.h.
> In fact, for x86_32, it it is different, defined as 'unsigned long' 
> (and NSIG defined as 32, so only 32 bits).

I noticed this, but I figured only the kernel definition was salient.
Apart from debugging checkpoint/restart, why would userspace need the
definition of struct ckpt_hdr_sigset?

For that matter, why would userspace need the definitions of most of the
structures in checkpoint_hdr.h?  (Again, debugging purposes don't count:
ckptinfo or similar developer utilities can be included with the
kernel.)


> Moreover, if you include <asm/sigset.h> in checkpoint_hdr.h, which is
> also included by userspace, you get lots of compilations warnings,
> because of other stuff included from the kernel's asm/sigset.h that
> isn't supposed to be included by userspace.

Can you provide examples of such warnings?  Are you building against
"sanitized" kernel headers (make headers_install) or using them in
place?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]             ` <Pine.LNX.4.64.0907070039360.22105-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
  2009-07-07  6:22               ` Nathan Lynch
@ 2009-07-07 13:33               ` Serge E. Hallyn
       [not found]                 ` <20090707133335.GA7686-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
  1 sibling, 1 reply; 12+ messages in thread
From: Serge E. Hallyn @ 2009-07-07 13:33 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg, Nathan Lynch

Quoting Oren Laadan (orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org):
> On Mon, 6 Jul 2009, Nathan Lynch wrote:
> 
> > Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
> > 
> > > On Mon, 6 Jul 2009, Nathan Lynch wrote:
> > >
> > >> Hi Oren,
> > >> 
> > >> With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:
> > >> 
> > >> In file included from include/linux/checkpoint.h:28,
> > >>                  from kernel/exit.c:53:
> > >> include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
> > >> In file included from include/linux/checkpoint.h:28,
> > >>                  from kernel/exit.c:53:
> > >> include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
> > >> make[1]: *** [kernel/exit.o] Error 1
> > >> 
> > >> 
> > >> It appears that any architecture which does not supply
> > >> asm/checkpoint_hdr.h is broken in the same way.
> > >> 
> > >> Either all architectures need to supply asm/checkpoint_hdr.h (and define
> > >> CKPT_ARCH_NSIG), or there needs to be some other fix which allows
> > >> as-yet-unsupported arches to build..
> > >> 
> > >
> > > I see... well - maybe it's time to resend the powerpc port :p
> > 
> > I'm working on that, but the powerpc port won't be of any help to the
> > twenty-odd other architectures that are broken.
> > 
> 
> [...]
> 
> That's what I tried initially, but the problem is that sigset_t may
> be defined differently for userspace - see /usr/include/asm/sigset_t.h.
> In fact, for x86_32, it it is different, defined as 'unsigned long' 
> (and NSIG defined as 32, so only 32 bits).
> 
> Moreover, if you include <asm/sigset.h> in checkpoint_hdr.h, which is
> also included by userspace, you get lots of compilations warnings,
> because of other stuff included from the kernel's asm/sigset.h that
> isn't supposed to be included by userspace.
> 
> So the introduction of CKPT_ARCH_NSIG is a workaround that.
> 
> And back to the other problem - I agree, kernel should only include
> <linux/checkpoint.h>, which in turn will include <checkpoint_hdr.h>
> if defined CONFIG_CHECKPOINT.
> 
> Can you try this patch:

(Which looks exactly like my patch from yesterday.)

> (Hallyn: note that there is some checkpoint-related code within
> kerbel/capability.c that should be inside #ifdef CONFIG_CHECKPOINT).

Yup, the patch i sent yesterday took care of that.

So if that's the route we want to take, then again I can
confirm it did compile on ppc, and compile and boot on
s390.

> Oren.
> 
> 
> diff --git a/fs/pipe.c b/fs/pipe.c
> index 5d4c1c8..68fdab4 100644
> --- a/fs/pipe.c
> +++ b/fs/pipe.c
> @@ -19,12 +19,11 @@
>  #include <linux/pagemap.h>
>  #include <linux/audit.h>
>  #include <linux/syscalls.h>
> +#include <linux/checkpoint.h>
> 
>  #include <asm/uaccess.h>
>  #include <asm/ioctls.h>
> 
> -#include <linux/checkpoint.h>
> -#include <linux/checkpoint_hdr.h>
> 
>  /*
>   * We use a start+len construction, which provides full use of the 
> diff --git a/include/linux/checkpoint.h b/include/linux/checkpoint.h
> index c47e796..b8f99be 100644
> --- a/include/linux/checkpoint.h
> +++ b/include/linux/checkpoint.h
> @@ -19,6 +19,7 @@
>  #define RESTART_TASKSELF	0x1
> 
>  #ifdef __KERNEL__
> +#ifdef CONFIG_CHECKPOINT
> 
>  #include <linux/sched.h>
>  #include <linux/nsproxy.h>
> @@ -299,6 +300,7 @@ extern unsigned long ckpt_debug_level;
> 
>  #endif /* CONFIG_CHECKPOINT_DEBUG */
> 
> +#endif /* CONFIG_CHECKPOINT */
>  #endif /* __KERNEL__ */
> 
>  #endif /* _LINUX_CHECKPOINT_H_ */
> diff --git a/ipc/shm.c b/ipc/shm.c
> index 0991134..516b179 100644
> --- a/ipc/shm.c
> +++ b/ipc/shm.c
> @@ -40,7 +40,6 @@
>  #include <linux/mount.h>
>  #include <linux/ipc_namespace.h>
>  #include <linux/ima.h>
> -#include <linux/checkpoint_hdr.h>
>  #include <linux/checkpoint.h>
> 
>  #include <asm/uaccess.h>
> diff --git a/kernel/capability.c b/kernel/capability.c
> index 90cc7b4..4f58454 100644
> --- a/kernel/capability.c
> +++ b/kernel/capability.c
> @@ -15,7 +15,7 @@
>  #include <linux/syscalls.h>
>  #include <linux/pid_namespace.h>
>  #include <linux/securebits.h>
> -#include <linux/checkpoint_hdr.h>
> +#include <linux/checkpoint.h>
>  #include <asm/uaccess.h>
>  #include "cred-internals.h"
> 
> @@ -375,6 +375,7 @@ static inline int restore_cap_bset(kernel_cap_t bset, struct cred *cred)
>  }
>  #endif /* CONFIG_SECURITY_FILE_CAPABILITIES */
> 
> +#ifdef CONFIG_CHECKPOINT
>  static int do_restore_caps(struct ckpt_capabilities *h, struct cred *cred)
>  {
>  	kernel_cap_t effective, inheritable, permitted, bset;
> @@ -428,6 +429,7 @@ int restore_capabilities(struct ckpt_capabilities *h, struct cred *new)
> 
>  	return ret;
>  }
> +#endif /* CONFIG_CHECKPOINT */
> 
>  /**
>   * capable - Determine if the current task has a superior capability in effect
> diff --git a/mm/filemap.c b/mm/filemap.c
> index 782664d..202bd74 100644
> --- a/mm/filemap.c
> +++ b/mm/filemap.c
> @@ -34,11 +34,9 @@
>  #include <linux/hardirq.h> /* for BUG_ON(!in_atomic()) only */
>  #include <linux/memcontrol.h>
>  #include <linux/mm_inline.h> /* for page_is_file_cache() */
> +#include <linux/checkpoint.h>
>  #include "internal.h"
> 
> -#include <linux/checkpoint_types.h>
> -#include <linux/checkpoint_hdr.h>
> -#include <linux/checkpoint.h>
> 
>  /*
>   * FIXME: remove all knowledge of the buffer layer from the core VM
> diff --git a/mm/mmap.c b/mm/mmap.c
> index e60424b..4c01a90 100644
> --- a/mm/mmap.c
> +++ b/mm/mmap.c
> @@ -29,16 +29,13 @@
>  #include <linux/rmap.h>
>  #include <linux/mmu_notifier.h>
>  #include <linux/perf_counter.h>
> +#include <linux/checkpoint.h>
> 
>  #include <asm/uaccess.h>
>  #include <asm/cacheflush.h>
>  #include <asm/tlb.h>
>  #include <asm/mmu_context.h>
> 
> -#include <linux/checkpoint_types.h>
> -#include <linux/checkpoint_hdr.h>
> -#include <linux/checkpoint.h>
> -
>  #include "internal.h"
> 
>  #ifndef arch_mmap_check
> diff --git a/mm/shmem.c b/mm/shmem.c
> index e123ec2..9334810 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -30,9 +30,6 @@
>  #include <linux/module.h>
>  #include <linux/swap.h>
>  #include <linux/ima.h>
> -
> -#include <linux/checkpoint_types.h>
> -#include <linux/checkpoint_hdr.h>
>  #include <linux/checkpoint.h>
> 
>  static struct vfsmount *shm_mnt;
> _______________________________________________
> Containers mailing list
> Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
> https://lists.linux-foundation.org/mailman/listinfo/containers

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]                 ` <m2eist3tcr.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
@ 2009-07-07 14:58                   ` Oren Laadan
       [not found]                     ` <Pine.LNX.4.64.0907071049540.24765-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Oren Laadan @ 2009-07-07 14:58 UTC (permalink / raw)
  To: Nathan Lynch; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

On Tue, 7 Jul 2009, Nathan Lynch wrote:

> Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
> > That's what I tried initially, but the problem is that sigset_t may
> > be defined differently for userspace - see /usr/include/asm/sigset_t.h.
> > In fact, for x86_32, it it is different, defined as 'unsigned long' 
> > (and NSIG defined as 32, so only 32 bits).
> 
> I noticed this, but I figured only the kernel definition was salient.
> Apart from debugging checkpoint/restart, why would userspace need the
> definition of struct ckpt_hdr_sigset?

I expect user space tools to at least:

- Assist in debugging c/r

- Assist users in reporting problems with c/r (especially since they
  themselves do not debug or hack)

- Convert checkpoint images from one kernel version to another

- Provide information about a checkpoint image, and even allow its
  manipulation.  This can assist developers in debugging their programs
  (e.g. to debug a crash you need to run a program for 30 minutes so it 
  ets up its state; instead of repeatedly running it, you run it once, 
  checkpoint, and then debug from a restarted version. A tool could 
  allow you to peek/poke inside the checkpoint and even modify data in 
  it).

- Or a tool that converts a checkpoint image to a core dump so it
  can be inspected with gdb.

I'm pretty sure others will find other uses to it...

> 
> For that matter, why would userspace need the definitions of most of the
> structures in checkpoint_hdr.h?  (Again, debugging purposes don't count:
> ckptinfo or similar developer utilities can be included with the
> kernel.)

Keeping the checkpoint header format understandable by user space (and 
immune to 32-64 variations) has been a requirement since day 1.

> 
> > Moreover, if you include <asm/sigset.h> in checkpoint_hdr.h, which is
> > also included by userspace, you get lots of compilations warnings,
> > because of other stuff included from the kernel's asm/sigset.h that
						      ^^^^^^^^^^^^^
					I meant:      asm/siginfo.h

> > isn't supposed to be included by userspace.
> 
> Can you provide examples of such warnings?  Are you building against
> "sanitized" kernel headers (make headers_install) or using them in
> place?
> 

Both.

Oren.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]                 ` <20090707133335.GA7686-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
@ 2009-07-07 14:59                   ` Oren Laadan
       [not found]                     ` <Pine.LNX.4.64.0907071058340.24765-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Oren Laadan @ 2009-07-07 14:59 UTC (permalink / raw)
  To: Serge E. Hallyn; +Cc: containers-qjLDD68F18O7TbgM5vRIOg, Nathan Lynch

On Tue, 7 Jul 2009, Serge E. Hallyn wrote:

> Quoting Oren Laadan (orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org):
> > On Mon, 6 Jul 2009, Nathan Lynch wrote:
> > 
> > > Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
> > > 
> > > > On Mon, 6 Jul 2009, Nathan Lynch wrote:
> > > >
> > > >> Hi Oren,
> > > >> 
> > > >> With ckpt-v17-rc1 (as well as ckpt-v16-dev) the powerpc build is broken:
> > > >> 
> > > >> In file included from include/linux/checkpoint.h:28,
> > > >>                  from kernel/exit.c:53:
> > > >> include/linux/checkpoint_hdr.h:42:32: error: asm/checkpoint_hdr.h: No such file or directory
> > > >> In file included from include/linux/checkpoint.h:28,
> > > >>                  from kernel/exit.c:53:
> > > >> include/linux/checkpoint_hdr.h:410: error: 'CKPT_ARCH_NSIG' undeclared here (not in a function)
> > > >> make[1]: *** [kernel/exit.o] Error 1
> > > >> 
> > > >> 
> > > >> It appears that any architecture which does not supply
> > > >> asm/checkpoint_hdr.h is broken in the same way.
> > > >> 
> > > >> Either all architectures need to supply asm/checkpoint_hdr.h (and define
> > > >> CKPT_ARCH_NSIG), or there needs to be some other fix which allows
> > > >> as-yet-unsupported arches to build..
> > > >> 
> > > >
> > > > I see... well - maybe it's time to resend the powerpc port :p
> > > 
> > > I'm working on that, but the powerpc port won't be of any help to the
> > > twenty-odd other architectures that are broken.
> > > 
> > 
> > [...]
> > 
> > That's what I tried initially, but the problem is that sigset_t may
> > be defined differently for userspace - see /usr/include/asm/sigset_t.h.
> > In fact, for x86_32, it it is different, defined as 'unsigned long' 
> > (and NSIG defined as 32, so only 32 bits).
> > 
> > Moreover, if you include <asm/sigset.h> in checkpoint_hdr.h, which is
> > also included by userspace, you get lots of compilations warnings,
> > because of other stuff included from the kernel's asm/sigset.h that
> > isn't supposed to be included by userspace.
> > 
> > So the introduction of CKPT_ARCH_NSIG is a workaround that.
> > 
> > And back to the other problem - I agree, kernel should only include
> > <linux/checkpoint.h>, which in turn will include <checkpoint_hdr.h>
> > if defined CONFIG_CHECKPOINT.
> > 
> > Can you try this patch:
> 
> (Which looks exactly like my patch from yesterday.)

... great minds, eh ?  (and one was really tired ;)

> 
> > (Hallyn: note that there is some checkpoint-related code within
> > kerbel/capability.c that should be inside #ifdef CONFIG_CHECKPOINT).
> 
> Yup, the patch i sent yesterday took care of that.
> 
> So if that's the route we want to take, then again I can
> confirm it did compile on ppc, and compile and boot on
> s390.
> 

Sound good. 

Oren.

[...]

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]                     ` <Pine.LNX.4.64.0907071058340.24765-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
@ 2009-07-07 15:06                       ` Serge E. Hallyn
  0 siblings, 0 replies; 12+ messages in thread
From: Serge E. Hallyn @ 2009-07-07 15:06 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg, Nathan Lynch

Quoting Oren Laadan (orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org):
> > So if that's the route we want to take, then again I can
> > confirm it did compile on ppc, and compile and boot on
> > s390.
> > 
> 
> Sound good. 

Cool, so feel free to add my Signed-off-by to your patch.

Nathan, this doesn't mean that I don't think it's worthwhile to
try and get rid of the #include where it's not needed, so if you
want to keep looking into any which can be replaced by a function
or struct prototype, all the better.

thanks,
-serge

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]                     ` <Pine.LNX.4.64.0907071049540.24765-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
@ 2009-07-07 16:31                       ` Nathan Lynch
       [not found]                         ` <m33a98v4j0.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 12+ messages in thread
From: Nathan Lynch @ 2009-07-07 16:31 UTC (permalink / raw)
  To: Oren Laadan; +Cc: containers-qjLDD68F18O7TbgM5vRIOg

Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
> On Tue, 7 Jul 2009, Nathan Lynch wrote:
>
>> Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
>> > That's what I tried initially, but the problem is that sigset_t may
>> > be defined differently for userspace - see /usr/include/asm/sigset_t.h.
>> > In fact, for x86_32, it it is different, defined as 'unsigned long' 
>> > (and NSIG defined as 32, so only 32 bits).
>> 
>> I noticed this, but I figured only the kernel definition was salient.
>> Apart from debugging checkpoint/restart, why would userspace need the
>> definition of struct ckpt_hdr_sigset?
>
> I expect user space tools to at least:
>
> - Assist in debugging c/r
>
> - Assist users in reporting problems with c/r (especially since they
>   themselves do not debug or hack)
>
> - Convert checkpoint images from one kernel version to another
>
> - Provide information about a checkpoint image, and even allow its
>   manipulation.  This can assist developers in debugging their programs
>   (e.g. to debug a crash you need to run a program for 30 minutes so it 
>   ets up its state; instead of repeatedly running it, you run it once, 
>   checkpoint, and then debug from a restarted version. A tool could 
>   allow you to peek/poke inside the checkpoint and even modify data in 
>   it).
>
> - Or a tool that converts a checkpoint image to a core dump so it
>   can be inspected with gdb.
>
> I'm pretty sure others will find other uses to it...

But I asked specifically about ckpt_hdr_sigset.


>> For that matter, why would userspace need the definitions of most of the
>> structures in checkpoint_hdr.h?  (Again, debugging purposes don't count:
>> ckptinfo or similar developer utilities can be included with the
>> kernel.)
>
> Keeping the checkpoint header format understandable by user space (and 
> immune to 32-64 variations) has been a requirement since day 1.

I guess I wasn't around that day.  It seems backwards to expose the
format of every checkpoint record in the ABI regardless of whether
plausible use cases exist.  Linux has a well-established pattern of
introducing interfaces without sufficient testing or documentation[1],
and I expect C/R will adhere to tradition.  Making the ABI obese in the
hope of anticipating every conceivable use will just provide more
opportunities to screw up.

[1] http://userweb.kernel.org/~mtk/papers/lce2007/What_we_lose_without_words.pdf

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: build breaks when checkpoint unimplemented by arch
       [not found]                         ` <m33a98v4j0.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
@ 2009-07-07 19:03                           ` Oren Laadan
  0 siblings, 0 replies; 12+ messages in thread
From: Oren Laadan @ 2009-07-07 19:03 UTC (permalink / raw)
  To: Nathan Lynch; +Cc: containers-qjLDD68F18O7TbgM5vRIOg



Nathan Lynch wrote:
> Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
>> On Tue, 7 Jul 2009, Nathan Lynch wrote:
>>
>>> Oren Laadan <orenl-eQaUEPhvms7ENvBUuze7eA@public.gmane.org> writes:
>>>> That's what I tried initially, but the problem is that sigset_t may
>>>> be defined differently for userspace - see /usr/include/asm/sigset_t.h.
>>>> In fact, for x86_32, it it is different, defined as 'unsigned long' 
>>>> (and NSIG defined as 32, so only 32 bits).
>>> I noticed this, but I figured only the kernel definition was salient.
>>> Apart from debugging checkpoint/restart, why would userspace need the
>>> definition of struct ckpt_hdr_sigset?
>> I expect user space tools to at least:
>>
>> - Assist in debugging c/r
>>
>> - Assist users in reporting problems with c/r (especially since they
>>   themselves do not debug or hack)
>>
>> - Convert checkpoint images from one kernel version to another
>>
>> - Provide information about a checkpoint image, and even allow its
>>   manipulation.  This can assist developers in debugging their programs
>>   (e.g. to debug a crash you need to run a program for 30 minutes so it 
>>   ets up its state; instead of repeatedly running it, you run it once, 
>>   checkpoint, and then debug from a restarted version. A tool could 
>>   allow you to peek/poke inside the checkpoint and even modify data in 
>>   it).
>>
>> - Or a tool that converts a checkpoint image to a core dump so it
>>   can be inspected with gdb.
>>
>> I'm pretty sure others will find other uses to it...
> 
> But I asked specifically about ckpt_hdr_sigset.
> 
> 
>>> For that matter, why would userspace need the definitions of most of the
>>> structures in checkpoint_hdr.h?  (Again, debugging purposes don't count:
>>> ckptinfo or similar developer utilities can be included with the
>>> kernel.)
>> Keeping the checkpoint header format understandable by user space (and 
>> immune to 32-64 variations) has been a requirement since day 1.
> 
> I guess I wasn't around that day.  It seems backwards to expose the
> format of every checkpoint record in the ABI regardless of whether
> plausible use cases exist.  Linux has a well-established pattern of
> introducing interfaces without sufficient testing or documentation[1],
> and I expect C/R will adhere to tradition.  Making the ABI obese in the
> hope of anticipating every conceivable use will just provide more
> opportunities to screw up.
> 
> [1] http://userweb.kernel.org/~mtk/papers/lce2007/What_we_lose_without_words.pdf

I could not agree more !

The intent of exposure to userspace is not to establish an ABI, but
solely to allow *specialized* c/r-related user tools to understand
such data, per kernel version.

On the contrary: it is expected to change between kernel versions
and break compatibility with older version, on a regular basis.
That is why we plan to do conversion of checkpoint images between
kernel version in userspace.

I view it as a "window" for userspace to glance at how checkpoint
image for a specific kernel version is defined. And it comes as is,
no-strings-attached, with nothing but a promise to likely break it
on the next release.

This begs the question: how to make sure that this message is clear
and is not misinterpreted ?   Or (and I'm no API expert) - perhaps
there is a better way...

Oren.

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2009-07-07 19:03 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-06 21:06 build breaks when checkpoint unimplemented by arch Nathan Lynch
     [not found] ` <m3my7hv7w8.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2009-07-06 23:04   ` Oren Laadan
     [not found]     ` <Pine.LNX.4.64.0907061902530.15941-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2009-07-06 23:29       ` Serge E. Hallyn
2009-07-06 23:54       ` Nathan Lynch
     [not found]         ` <m3bpnxv03k.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2009-07-07  4:44           ` Oren Laadan
     [not found]             ` <Pine.LNX.4.64.0907070039360.22105-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2009-07-07  6:22               ` Nathan Lynch
     [not found]                 ` <m2eist3tcr.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2009-07-07 14:58                   ` Oren Laadan
     [not found]                     ` <Pine.LNX.4.64.0907071049540.24765-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2009-07-07 16:31                       ` Nathan Lynch
     [not found]                         ` <m33a98v4j0.fsf-e+AXbWqSrlAAvxtiuMwx3w@public.gmane.org>
2009-07-07 19:03                           ` Oren Laadan
2009-07-07 13:33               ` Serge E. Hallyn
     [not found]                 ` <20090707133335.GA7686-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-07-07 14:59                   ` Oren Laadan
     [not found]                     ` <Pine.LNX.4.64.0907071058340.24765-CXF6herHY6ykSYb+qCZC/1i27PF6R63G9nwVQlTi/Pw@public.gmane.org>
2009-07-07 15:06                       ` Serge E. Hallyn

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.