Use the new checkpoint/restart file functions to query
and report on each fd in the /proc/$$/fdinfo/X file.

This should provide an easy way to examine processes
at runtime to see what exactly is causing their inability
to checkpoint.

Signed-off-by: Dave Hansen <[email protected]>
---

 linux-2.6.git-dave/fs/proc/base.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff -puN fs/proc/base.c~add-cr-part-to-fdinfo fs/proc/base.c
--- linux-2.6.git/fs/proc/base.c~add-cr-part-to-fdinfo  2009-02-27 
12:07:40.000000000 -0800
+++ linux-2.6.git-dave/fs/proc/base.c   2009-02-27 12:07:40.000000000 -0800
@@ -80,6 +80,7 @@
 #include <linux/oom.h>
 #include <linux/elf.h>
 #include <linux/pid_namespace.h>
+#include <linux/checkpoint.h>
 #include "internal.h"
 
 /* NOTE:
@@ -1636,6 +1637,7 @@ out:
 
 static void proc_fd_write_info(struct file *file, char *info)
 {
+       int checkpointable;
        int max = PROC_FDINFO_MAX;
        int p = 0;
        if (!info)
@@ -1643,6 +1645,12 @@ static void proc_fd_write_info(struct fi
 
        p += snprintf(info+p, max-p, "pos:\t%lli\n", (long long) file->f_pos);
        p += snprintf(info+p, max-p, "flags:\t0%o\n", file->f_flags);
+
+       checkpointable = cr_file_supported(file);
+       p += snprintf(info+p, max-p, "checkpointable:\t%d", checkpointable);
+       if (!checkpointable)
+               p += cr_explain_file(file, info+p, max-p);
+       p += snprintf(info+p, max-p, "\n");
 }
 
 static int proc_fd_info(struct inode *inode, struct path *path, char *info)
_
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to