diff --git a/0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch b/0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch index 474e4c9..7ccdd8c 100644 --- a/0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch +++ b/0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch @@ -1,7 +1,7 @@ -From 4a49af49be378835b65016d5465eae44107a52e1 Mon Sep 17 00:00:00 2001 -From: "fu.lin" -Date: Tue, 13 Apr 2021 10:39:45 +0800 -Subject: [PATCH 4/6] criu: dump and restore cpu affinity of each thread +From f700bf90e9339d41132a62c24dde9b1c0fa8a9ee Mon Sep 17 00:00:00 2001 +From: snoweay +Date: Thu, 25 Apr 2024 17:36:32 +0800 +Subject: [PATCH] criu: dump and restore cpu affinity of each thread Criu should dump and restore threads' or processes' cpu affinity. @@ -38,40 +38,43 @@ Signed-off-by: Sang Yan create mode 100644 test/zdtm/static/cpu-affinity0.desc diff --git a/compel/arch/arm/plugins/std/syscalls/syscall.def b/compel/arch/arm/plugins/std/syscalls/syscall.def -index e6508ed..1b877d1 100644 +index 7489ee0..9403fc2 100644 --- a/compel/arch/arm/plugins/std/syscalls/syscall.def +++ b/compel/arch/arm/plugins/std/syscalls/syscall.def -@@ -116,5 +116,6 @@ fsopen 430 430 (char *fsname, unsigned int flags) +@@ -118,6 +118,7 @@ fsopen 430 430 (char *fsname, unsigned int flags) fsconfig 431 431 (int fd, unsigned int cmd, const char *key, const char *value, int aux) fsmount 432 432 (int fd, unsigned int flags, unsigned int attr_flags) clone3 435 435 (struct clone_args *uargs, size_t size) +sched_setaffinity 122 241 (int fd, size_t cpusetsize, const cpu_set_t *mask) pidfd_open 434 434 (pid_t pid, unsigned int flags) + openat2 437 437 (int dirfd, char *pathname, struct open_how *how, size_t size) pidfd_getfd 438 438 (int pidfd, int targetfd, unsigned int flags) diff --git a/compel/arch/ppc64/plugins/std/syscalls/syscall-ppc64.tbl b/compel/arch/ppc64/plugins/std/syscalls/syscall-ppc64.tbl -index 1bb626b..dd79187 100644 +index 4c9b75c..43ecc40 100644 --- a/compel/arch/ppc64/plugins/std/syscalls/syscall-ppc64.tbl +++ b/compel/arch/ppc64/plugins/std/syscalls/syscall-ppc64.tbl -@@ -112,5 +112,6 @@ __NR_fsopen 430 sys_fsopen (char *fsname, unsigned int flags) +@@ -114,6 +114,7 @@ __NR_fsopen 430 sys_fsopen (char *fsname, unsigned int flags) __NR_fsconfig 431 sys_fsconfig (int fd, unsigned int cmd, const char *key, const char *value, int aux) __NR_fsmount 432 sys_fsmount (int fd, unsigned int flags, unsigned int attr_flags) __NR_clone3 435 sys_clone3 (struct clone_args *uargs, size_t size) +__NR_sched_setaffinity 222 sys_sched_setaffinity (int fd, size_t cpusetsize, const cpu_set_t *mask) __NR_pidfd_open 434 sys_pidfd_open (pid_t pid, unsigned int flags) + __NR_openat2 437 sys_openat2 (int dirfd, char *pathname, struct open_how *how, size_t size) __NR_pidfd_getfd 438 sys_pidfd_getfd (int pidfd, int targetfd, unsigned int flags) diff --git a/compel/arch/s390/plugins/std/syscalls/syscall-s390.tbl b/compel/arch/s390/plugins/std/syscalls/syscall-s390.tbl -index 7178bf4..282adaf 100644 +index af7d550..ef72a2f 100644 --- a/compel/arch/s390/plugins/std/syscalls/syscall-s390.tbl +++ b/compel/arch/s390/plugins/std/syscalls/syscall-s390.tbl -@@ -112,5 +112,6 @@ __NR_fsopen 430 sys_fsopen (char *fsname, unsigned int flags) +@@ -114,6 +114,7 @@ __NR_fsopen 430 sys_fsopen (char *fsname, unsigned int flags) __NR_fsconfig 431 sys_fsconfig (int fd, unsigned int cmd, const char *key, const char *value, int aux) __NR_fsmount 432 sys_fsmount (int fd, unsigned int flags, unsigned int attr_flags) __NR_clone3 435 sys_clone3 (struct clone_args *uargs, size_t size) +__NR_sched_setaffinity 239 sys_sched_setaffinity (int fd, size_t cpusetsize, const cpu_set_t *mask) __NR_pidfd_open 434 sys_pidfd_open (pid_t pid, unsigned int flags) + __NR_openat2 437 sys_openat2 (int dirfd, char *pathname, struct open_how *how, size_t size) __NR_pidfd_getfd 438 sys_pidfd_getfd (int pidfd, int targetfd, unsigned int flags) diff --git a/compel/arch/x86/plugins/std/syscalls/syscall_32.tbl b/compel/arch/x86/plugins/std/syscalls/syscall_32.tbl -index 7e456cd..3fe3194 100644 +index ab36a5c..6c6522a 100644 --- a/compel/arch/x86/plugins/std/syscalls/syscall_32.tbl +++ b/compel/arch/x86/plugins/std/syscalls/syscall_32.tbl @@ -63,6 +63,7 @@ __NR_mincore 218 sys_mincore (void *addr, unsigned long size, unsigned char * @@ -83,7 +86,7 @@ index 7e456cd..3fe3194 100644 __NR_get_thread_area 244 sys_get_thread_area (user_desc_t *info) __NR_io_setup 245 sys_io_setup (unsigned nr_reqs, aio_context_t *ctx32p) diff --git a/compel/arch/x86/plugins/std/syscalls/syscall_64.tbl b/compel/arch/x86/plugins/std/syscalls/syscall_64.tbl -index 2dfcc6e..c1d119d 100644 +index 57681b7..4746bd2 100644 --- a/compel/arch/x86/plugins/std/syscalls/syscall_64.tbl +++ b/compel/arch/x86/plugins/std/syscalls/syscall_64.tbl @@ -73,6 +73,7 @@ __NR_mount 165 sys_mount (char *dev_nmae, char *dir_name, char *type, unsign @@ -95,22 +98,22 @@ index 2dfcc6e..c1d119d 100644 __NR_io_setup 206 sys_io_setup (unsigned nr_events, aio_context_t *ctx) __NR_io_getevents 208 sys_io_getevents (aio_context_t ctx, long min_nr, long nr, struct io_event *evs, struct timespec *tmo) diff --git a/criu/config.c b/criu/config.c -index 91fb0b6..71f99c9 100644 +index 1322a49..f3f4666 100644 --- a/criu/config.c +++ b/criu/config.c -@@ -695,6 +695,7 @@ int parse_options(int argc, char **argv, bool *usage_error, bool *has_exec_cmd, - { "cgroup-yard", required_argument, 0, 1096 }, +@@ -698,6 +698,7 @@ int parse_options(int argc, char **argv, bool *usage_error, bool *has_exec_cmd, { "pre-dump-mode", required_argument, 0, 1097 }, { "file-validation", required_argument, 0, 1098 }, + BOOL_OPT("skip-file-rwx-check", &opts.skip_file_rwx_check), + BOOL_OPT("with-cpu-affinity", &opts.with_cpu_affinity), { "lsm-mount-context", required_argument, 0, 1099 }, { "network-lock", required_argument, 0, 1100 }, - {}, + BOOL_OPT("mntns-compat-mode", &opts.mntns_compat_mode), diff --git a/criu/cr-dump.c b/criu/cr-dump.c -index 940f622..f07fe6e 100644 +index ee5974a..eb540b0 100644 --- a/criu/cr-dump.c +++ b/criu/cr-dump.c -@@ -139,6 +139,7 @@ static int dump_sched_info(int pid, ThreadCoreEntry *tc) +@@ -140,6 +140,7 @@ static int dump_sched_info(int pid, ThreadCoreEntry *tc) { int ret; struct sched_param sp; @@ -118,7 +121,7 @@ index 940f622..f07fe6e 100644 BUILD_BUG_ON(SCHED_OTHER != 0); /* default in proto message */ -@@ -183,6 +184,18 @@ static int dump_sched_info(int pid, ThreadCoreEntry *tc) +@@ -184,6 +185,18 @@ static int dump_sched_info(int pid, ThreadCoreEntry *tc) pr_info("\tdumping %d nice for %d\n", ret, pid); tc->has_sched_nice = true; tc->sched_nice = ret; @@ -138,10 +141,10 @@ index 940f622..f07fe6e 100644 return 0; } diff --git a/criu/cr-restore.c b/criu/cr-restore.c -index 9d2d957..5b645c1 100644 +index 2700497..9855a3d 100644 --- a/criu/cr-restore.c +++ b/criu/cr-restore.c -@@ -118,6 +118,7 @@ static int prepare_restorer_blob(void); +@@ -120,6 +120,7 @@ static int prepare_restorer_blob(void); static int prepare_rlimits(int pid, struct task_restore_args *, CoreEntry *core); static int prepare_posix_timers(int pid, struct task_restore_args *ta, CoreEntry *core); static int prepare_signals(int pid, struct task_restore_args *, CoreEntry *core); @@ -149,7 +152,7 @@ index 9d2d957..5b645c1 100644 /* * Architectures can overwrite this function to restore registers that are not -@@ -899,6 +900,9 @@ static int restore_one_alive_task(int pid, CoreEntry *core) +@@ -921,6 +922,9 @@ static int restore_one_alive_task(int pid, CoreEntry *core) if (prepare_signals(pid, ta, core)) return -1; @@ -159,7 +162,7 @@ index 9d2d957..5b645c1 100644 if (prepare_posix_timers(pid, ta, core)) return -1; -@@ -3153,6 +3157,24 @@ out: +@@ -3298,6 +3302,24 @@ out: return ret; } @@ -184,7 +187,7 @@ index 9d2d957..5b645c1 100644 extern void __gcov_flush(void) __attribute__((weak)); void __gcov_flush(void) { -@@ -3603,6 +3625,7 @@ static int sigreturn_restore(pid_t pid, struct task_restore_args *task_args, uns +@@ -3762,6 +3784,7 @@ static int sigreturn_restore(pid_t pid, struct task_restore_args *task_args, uns RST_MEM_FIXUP_PPTR(task_args->timerfd); RST_MEM_FIXUP_PPTR(task_args->posix_timers); RST_MEM_FIXUP_PPTR(task_args->siginfo); @@ -193,33 +196,33 @@ index 9d2d957..5b645c1 100644 RST_MEM_FIXUP_PPTR(task_args->helpers); RST_MEM_FIXUP_PPTR(task_args->zombies); diff --git a/criu/crtools.c b/criu/crtools.c -index 6a75cd1..b5a36b9 100644 +index 94657f4..a8df89d 100644 --- a/criu/crtools.c +++ b/criu/crtools.c -@@ -445,6 +445,8 @@ usage: +@@ -509,6 +509,8 @@ usage: " --file-validation METHOD\n" " pass the validation method to be used; argument\n" " can be 'filesize' or 'buildid' (default).\n" + " --with-cpu-affinity Allow to restore cpu affinity. Only for hosts with\n" + " same cpu quantity.\n" - "\n" - "Check options:\n" - " Without options, \"criu check\" checks availability of absolutely required\n" + " --skip-file-rwx-check\n" + " Skip checking file permissions\n" + " (r/w/x for u/g/o) on restore.\n" diff --git a/criu/include/cr_options.h b/criu/include/cr_options.h -index a34f8db..3b50e59 100644 +index 60cf943..db7484a 100644 --- a/criu/include/cr_options.h +++ b/criu/include/cr_options.h -@@ -188,6 +188,8 @@ struct cr_options { +@@ -212,6 +212,8 @@ struct cr_options { /* This stores which method to use for file validation. */ int file_validation_method; + /* restore cpu affinity */ + int with_cpu_affinity; - }; - extern struct cr_options opts; + /* Shows the mode criu is running at the moment: dump/pre-dump/restore/... */ + enum criu_mode mode; diff --git a/criu/include/restorer.h b/criu/include/restorer.h -index 934d60c..c2ef8f0 100644 +index f398d8d..668aa65 100644 --- a/criu/include/restorer.h +++ b/criu/include/restorer.h @@ -1,6 +1,7 @@ @@ -230,7 +233,7 @@ index 934d60c..c2ef8f0 100644 #include #include #include -@@ -162,6 +163,8 @@ struct task_restore_args { +@@ -170,6 +171,8 @@ struct task_restore_args { siginfo_t *siginfo; unsigned int siginfo_n; @@ -240,10 +243,10 @@ index 934d60c..c2ef8f0 100644 unsigned int tcp_socks_n; diff --git a/criu/pie/restorer.c b/criu/pie/restorer.c -index 4304691..fbc89fe 100644 +index 0297165..d8e7d41 100644 --- a/criu/pie/restorer.c +++ b/criu/pie/restorer.c -@@ -425,6 +425,40 @@ static int restore_signals(siginfo_t *ptr, int nr, bool group) +@@ -477,6 +477,40 @@ static int restore_signals(siginfo_t *ptr, int nr, bool group) return 0; } @@ -281,10 +284,10 @@ index 4304691..fbc89fe 100644 + return 0; +} + - static int restore_seccomp_filter(pid_t tid, struct thread_restore_args *args) + static int restore_rseq(struct rst_rseq_param *rseq) { - unsigned int flags = args->seccomp_force_tsync ? SECCOMP_FILTER_FLAG_TSYNC : 0; -@@ -1856,6 +1890,10 @@ long __export_restore_task(struct task_restore_args *args) + int ret; +@@ -2139,6 +2173,10 @@ __visible long __export_restore_task(struct task_restore_args *args) if (ret) goto core_restore_end; @@ -296,7 +299,7 @@ index 4304691..fbc89fe 100644 rst_tcp_socks_all(args); diff --git a/criu/pstree.c b/criu/pstree.c -index d5080e5..778c884 100644 +index 8c44e71..efc52c0 100644 --- a/criu/pstree.c +++ b/criu/pstree.c @@ -58,11 +58,13 @@ CoreEntry *core_entry_alloc(int th, int tsk) @@ -326,10 +329,10 @@ index d5080e5..778c884 100644 xfree(core); core = NULL; diff --git a/images/core.proto b/images/core.proto -index b713119..39e7f32 100644 +index 5b07b5c..e4ca389 100644 --- a/images/core.proto +++ b/images/core.proto -@@ -83,6 +83,10 @@ message thread_sas_entry { +@@ -90,6 +90,10 @@ message thread_sas_entry { required uint32 ss_flags = 3; } @@ -340,19 +343,19 @@ index b713119..39e7f32 100644 message thread_core_entry { required uint64 futex_rla = 1; required uint32 futex_rla_len = 2; -@@ -101,6 +105,7 @@ message thread_core_entry { - - optional string comm = 13; +@@ -110,6 +114,7 @@ message thread_core_entry { optional uint64 blk_sigset_extended = 14; -+ required thread_allowedcpus_entry allowed_cpus = 15; + optional rseq_entry rseq_entry = 15; + optional uint32 cg_set = 16; ++ required thread_allowedcpus_entry allowed_cpus = 17; } message task_rlimits_entry { diff --git a/test/zdtm/static/Makefile b/test/zdtm/static/Makefile -index c9e6589..70123cf 100644 +index 07d3bc6..c25a46f 100644 --- a/test/zdtm/static/Makefile +++ b/test/zdtm/static/Makefile -@@ -246,6 +246,7 @@ TST_NOFILE := \ +@@ -266,6 +266,7 @@ TST_NOFILE := \ timens_nested \ timens_for_kids \ zombie_leader \ @@ -416,5 +419,5 @@ index 0000000..0d0b8ae @@ -0,0 +1 @@ +{'dopts': '', 'ropts': '--with-cpu-affinity', 'flags': 'reqrst '} -- -2.27.0 +2.33.0 diff --git a/1000-backport-page-pipe-fix-limiting-a-pipe-size.patch b/1000-backport-page-pipe-fix-limiting-a-pipe-size.patch deleted file mode 100644 index 98e96e7..0000000 --- a/1000-backport-page-pipe-fix-limiting-a-pipe-size.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 51533d98ac389711a704266a1a5d7afc9b267f2d Mon Sep 17 00:00:00 2001 -From: Andrei Vagin -Date: Wed, 27 Apr 2022 06:51:47 +0300 -Subject: [PATCH] page-pipe: fix limiting a pipe size - -But actually, 5a92f100b88e probably has to be reverted as a whole. -PIPE_MAX_SIZE is the hard limit to avoid PAGE_ALLOC_COSTLY_ORDER -allocations in the kernel. But F_SETPIPE_SZ rounds up a requested pipe -size to a power-of-2 pages. It means that when we request PIPE_MAX_SIZE -that isn't a power-of-2 number, we actually request a pipe size greater -than PIPE_MAX_SIZE. - -Fixes: 5a92f100b88e ("page-pipe: Resize up to PIPE_MAX_SIZE") - -Signed-off-by: Andrei Vagin -Signed-off-by: He Wenliang ---- - criu/page-pipe.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/criu/page-pipe.c b/criu/page-pipe.c -index 5a7e50bc1..54dc3ccc4 100644 ---- a/criu/page-pipe.c -+++ b/criu/page-pipe.c -@@ -56,7 +56,7 @@ static inline int ppb_resize_pipe(struct page_pipe_buf *ppb) - - if (new_size > PIPE_MAX_SIZE) { - if (ppb->pipe_size < PIPE_MAX_SIZE) -- ppb->pipe_size = PIPE_MAX_SIZE; -+ new_size = PIPE_MAX_SIZE; - else - return 1; - } --- -2.33.0 - diff --git a/1001-backport-tty-fix-the-null-pointer-of-get_tty_driver.patch b/1001-backport-tty-fix-the-null-pointer-of-get_tty_driver.patch deleted file mode 100644 index 86cf844..0000000 --- a/1001-backport-tty-fix-the-null-pointer-of-get_tty_driver.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 485a83c110bef1b2700acec0bd63bad4518aa62f Mon Sep 17 00:00:00 2001 -From: "fu.lin" -Date: Fri, 17 Sep 2021 17:16:48 +0800 -Subject: [PATCH] tty: fix the null pointer of get_tty_driver - -v2: split error checking from index variable initialization -v3: use PRIx64 for printing dev_t - -Signed-off-by: fu.lin -Signed-off-by: Pavel Tikhomirov -Signed-off-by: He Wenliang ---- - criu/tty.c | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/criu/tty.c b/criu/tty.c -index 1598ad956..1462193c5 100644 ---- a/criu/tty.c -+++ b/criu/tty.c -@@ -1977,6 +1977,12 @@ static int dump_one_tty(int lfd, u32 id, const struct fd_parms *p) - pr_info("Dumping tty %d with id %#x\n", lfd, id); - - driver = get_tty_driver(p->stat.st_rdev, p->stat.st_dev); -+ if (driver == NULL) { -+ pr_err("Unable to find a tty driver (rdev %#" PRIx64 " dev %#" PRIx64 ")\n", p->stat.st_rdev, -+ p->stat.st_dev); -+ return -1; -+ } -+ - if (driver->fd_get_index) - index = driver->fd_get_index(lfd, p); - else --- -2.33.0 - diff --git a/1002-backport-criu-files-Don-t-cache-fd-ids-for-device-files.patch b/1002-backport-criu-files-Don-t-cache-fd-ids-for-device-files.patch deleted file mode 100644 index 88c49a9..0000000 --- a/1002-backport-criu-files-Don-t-cache-fd-ids-for-device-files.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 74d1233b596c52ae8dc5da4730e6e3e48152023e Mon Sep 17 00:00:00 2001 -From: Rajneesh Bhardwaj -Date: Tue, 27 Apr 2021 19:08:57 -0400 -Subject: [PATCH] criu/files: Don't cache fd ids for device files - -Restore operation fails when we perform CR operation of multiple -independent proceses that have device files because criu caches -the ids for the device files with same mnt_ids, inode pair. This -change ensures that even in case of a cached id found for a device, a -unique subid is generated and returned which is used for dumping. - -Suggested-by: Andrei Vagin -Signed-off-by: Rajneesh Bhardwaj -Signed-off-by: He Wenliang ---- - criu/file-ids.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/criu/file-ids.c b/criu/file-ids.c -index 1b9d68888..772bd92cf 100644 ---- a/criu/file-ids.c -+++ b/criu/file-ids.c -@@ -77,8 +77,14 @@ int fd_id_generate_special(struct fd_parms *p, u32 *id) - - fi = fd_id_cache_lookup(p); - if (fi) { -- *id = fi->id; -- return 0; -+ if (p->stat.st_mode & (S_IFCHR | S_IFBLK)) { -+ /* Don't cache the id for mapped devices */ -+ *id = fd_tree.subid++; -+ return 1; -+ } else { -+ *id = fi->id; -+ return 0; -+ } - } - } - --- -2.33.0 - diff --git a/1003-backport-pre-dump-call-vmsplice-with-SPLICE_F_GIFT.patch b/1003-backport-pre-dump-call-vmsplice-with-SPLICE_F_GIFT.patch deleted file mode 100644 index 1ef7f3b..0000000 --- a/1003-backport-pre-dump-call-vmsplice-with-SPLICE_F_GIFT.patch +++ /dev/null @@ -1,28 +0,0 @@ -From efeedf3912df4a9a13d5ac719700ca06a9dad327 Mon Sep 17 00:00:00 2001 -From: Andrei Vagin -Date: Wed, 27 Apr 2022 07:02:58 +0300 -Subject: [PATCH] pre-dump: call vmsplice with SPLICE_F_GIFT - -In this case, vmplice attaches pages without coping them. - -Signed-off-by: Andrei Vagin ---- - criu/page-xfer.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/criu/page-xfer.c b/criu/page-xfer.c -index 3d29fbf78..2a9f6e2cc 100644 ---- a/criu/page-xfer.c -+++ b/criu/page-xfer.c -@@ -822,7 +822,7 @@ int page_xfer_predump_pages(int pid, struct page_xfer *xfer, struct page_pipe *p - - bufvec.iov_base = userbuf; - bufvec.iov_len = bytes_read; -- ret = vmsplice(ppb->p[1], &bufvec, 1, SPLICE_F_NONBLOCK); -+ ret = vmsplice(ppb->p[1], &bufvec, 1, SPLICE_F_NONBLOCK | SPLICE_F_GIFT); - - if (ret == -1 || ret != bytes_read) { - pr_err("vmsplice: Failed to splice user buffer to pipe %ld\n", ret); --- -2.33.0 - diff --git a/criu-3.16.1.tar.gz b/criu-3.16.1.tar.gz deleted file mode 100644 index b4767a3..0000000 Binary files a/criu-3.16.1.tar.gz and /dev/null differ diff --git a/criu-3.19.tar.gz b/criu-3.19.tar.gz new file mode 100644 index 0000000..7a57acb Binary files /dev/null and b/criu-3.19.tar.gz differ diff --git a/criu.spec b/criu.spec index ff4fe1f..c5b8066 100644 --- a/criu.spec +++ b/criu.spec @@ -1,29 +1,23 @@ Name: criu -Version: 3.16.1 -Release: 9 +Version: 3.19 +Release: 1 Provides: crtools = %{version}-%{release} Obsoletes: crtools <= 1.0-2 Summary: A tool of Checkpoint/Restore in User-space License: GPL-2.0-or-later or LGPL-2.1-only URL: http://criu.org/ Source0: http://github.com/checkpoint-restore/criu/archive/v%{version}/%{name}-%{version}.tar.gz -BuildRequires: systemd libnet-devel asciidoc xmlto perl-interpreter libselinux-devel gcc +BuildRequires: systemd libnet-devel asciidoc xmlto perl-interpreter libselinux-devel gcc make BuildRequires: protobuf-devel protobuf-c-devel python3-devel libnl3-devel libcap-devel +BuildRequires: python3-pip python3-setuptools python3-wheel python3-protobuf Recommends: tar ExclusiveArch: x86_64 %{arm} ppc64le aarch64 s390x Requires: %{name} = %{version}-%{release} Provides: %{name}-libs = %{version}-%{release} Obsoletes: %{name}-libs < %{version}-%{release} -Patch1: 0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch -Patch2: 0002-mm-add-pin-memory-method-for-criu.patch -Patch3: revert-fix-BUG-at-criu-pstree.c-452.patch +Patch1: 0001-criu-dump-and-restore-cpu-affinity-of-each-thread.patch -Patch1000: 1000-backport-page-pipe-fix-limiting-a-pipe-size.patch -Patch1001: 1001-backport-tty-fix-the-null-pointer-of-get_tty_driver.patch -Patch1002: 1002-backport-criu-files-Don-t-cache-fd-ids-for-device-files.patch -Patch1003: 1003-backport-pre-dump-call-vmsplice-with-SPLICE_F_GIFT.patch - %description Checkpoint/Restore in Userspace(CRIU),is a software tool for the linux operating system. Using this tool,it is possible to freeze a running application (or part of it) and @@ -72,6 +66,7 @@ CFLAGS+=`echo %{optflags}` make V=1 WERROR=0 PREFIX=%{_prefix} RUNDIR=/run/criu %install make install-criu DESTDIR=%{buildroot} PREFIX=%{_prefix} LIBDIR=%{_libdir} +make install-crit DESTDIR=%{buildroot} PREFIX=%{_prefix} LIBDIR=%{_libdir} make install-lib DESTDIR=%{buildroot} PREFIX=%{_prefix} LIBDIR=%{_libdir} PYTHON=python3 make install-man DESTDIR=%{buildroot} PREFIX=%{_prefix} LIBDIR=%{_libdir} @@ -91,10 +86,12 @@ chmod 0755 %{buildroot}/run/%{name}/ %exclude %{_libdir}/libcriu.a %files -n python3-criu -%{python3_sitelib}/{pycriu/*,*egg-info} +%{python3_sitelib}/{pycriu*/*,*egg-info} %files -n crit %{_bindir}/crit +%{python3_sitelib}/crit-%{version}.dist-info/ +%{python3_sitelib}/crit %files -n criu-ns %{_sbindir}/criu-ns @@ -102,9 +99,12 @@ chmod 0755 %{buildroot}/run/%{name}/ %files help %doc README.md COPYING %doc %{_mandir}/man8/criu.8* -%doc %{_mandir}/man1/{compel.1*,crit.1*,criu-ns.1*} +%doc %{_mandir}/man1/{compel.1*,crit.1*,criu-ns.1*,criu-amdgpu-plugin.1*} %changelog +* Thu Apr 25 2024 snoweay - 3.19-1 +- update to version 3.19 from criu.org + * Mon Jun 19 2023 hewenliang <314264452@qq.com> - 3.16.1-9 - revert: fix BUG at criu/pstree.c:452 diff --git a/revert-fix-BUG-at-criu-pstree.c-452.patch b/revert-fix-BUG-at-criu-pstree.c-452.patch deleted file mode 100644 index 077e35b..0000000 --- a/revert-fix-BUG-at-criu-pstree.c-452.patch +++ /dev/null @@ -1,90 +0,0 @@ -Subject: [PATCH 1/1] revert: fix BUG at criu/pstree.c:452 - -Not all the process which is dumped by criu is session leader, the -enhancing verification is annoying, because it causes many problems in -some testcases. Therefore, revert this bugfix. - -If the bugfix is resumed, using `setsid` to start process is necessary, -and using `stdbuf -oL` to redirect standard output at the same time. - -This bug detail sees #1332. - -Revert "pstree: don't change sid/gid-s if current sid/gid is the same" -This reverts commit 90e03b1a1142ca40fb78de9eb04944ab51d06eeb. - -Revert "pstree: check for pid collision before switching to new sid/gid" -This reverts commit 7e6a1a7011b404fbf0108b062bda118e9a696b60. ---- - criu/pstree.c | 37 ++++++++++--------------------------- - 1 file changed, 10 insertions(+), 27 deletions(-) - -diff --git a/criu/pstree.c b/criu/pstree.c -index d5080e515..bf09c761c 100644 ---- a/criu/pstree.c -+++ b/criu/pstree.c -@@ -340,7 +340,6 @@ static int prepare_pstree_for_shell_job(pid_t pid) - pid_t current_gid = getpgid(pid); - - struct pstree_item *pi; -- struct pid *tmp; - - pid_t old_sid; - pid_t old_gid; -@@ -348,7 +347,6 @@ static int prepare_pstree_for_shell_job(pid_t pid) - if (!opts.shell_job) - return 0; - -- /* root_item is a session leader */ - if (root_item->sid == vpid(root_item)) - return 0; - -@@ -370,37 +368,22 @@ static int prepare_pstree_for_shell_job(pid_t pid) - */ - - old_sid = root_item->sid; -- if (old_sid != current_sid) { -- pr_info("Migrating process tree (SID %d->%d)\n", old_sid, current_sid); - -- tmp = pstree_pid_by_virt(current_sid); -- if (tmp) { -- pr_err("Current sid %d intersects with pid (%d) in images\n", current_sid, tmp->state); -- return -1; -- } -+ pr_info("Migrating process tree (SID %d->%d)\n", -+ old_sid, current_sid); - -- for_each_pstree_item(pi) { -- if (pi->sid == old_sid) -- pi->sid = current_sid; -- } -- -- if (lookup_create_item(current_sid) == NULL) -- return -1; -+ for_each_pstree_item(pi) { -+ if (pi->sid == old_sid) -+ pi->sid = current_sid; - } - -- /* root_item is a group leader */ -- if (root_item->pgid == vpid(root_item)) -- return 0; -- - old_gid = root_item->pgid; -- if (old_gid != current_gid) { -- pr_info("Migrating process tree (GID %d->%d)\n", old_gid, current_gid); -- -- tmp = pstree_pid_by_virt(current_gid); -- if (tmp) { -- pr_err("Current gid %d intersects with pid (%d) in images\n", current_gid, tmp->state); -+ if (old_gid != vpid(root_item)) { -+ if (lookup_create_item(current_sid) == NULL) - return -1; -- } -+ -+ pr_info("Migrating process tree (GID %d->%d)\n", -+ old_gid, current_gid); - - for_each_pstree_item(pi) { - if (pi->pgid == old_gid) --- -2.35.1 \ No newline at end of file