Hello community, here is the log from the commit of package stress-ng for openSUSE:Factory checked in at 2019-09-20 14:54:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/stress-ng (Old) and /work/SRC/openSUSE:Factory/.stress-ng.new.7948 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "stress-ng" Fri Sep 20 14:54:16 2019 rev:64 rq:731902 version:0.10.05 Changes: -------- --- /work/SRC/openSUSE:Factory/stress-ng/stress-ng.changes 2019-09-04 09:14:51.986942115 +0200 +++ /work/SRC/openSUSE:Factory/.stress-ng.new.7948/stress-ng.changes 2019-09-20 14:54:20.562868922 +0200 @@ -1,0 +2,17 @@ +Wed Sep 18 19:47:08 UTC 2019 - Martin Hauke <[email protected]> + +- Update to version 0.10.05 + * core-shim: fix typo in shim_move_mount + * core-shim: use shim_enosys for more ENOSYS returns + * Clean up shims for syslog(2) and syslog(3) + * stress-ramfs: remove it from the filesystem test + * stress-dirdeep: make inodes info into a debug message + * stress-vm: fix verification failure with gray code method + * stress-socket: make EPIPE a non-fatal error condition + * stress-udp: use correct default UDP port 7000 + * stress-ng: rescan the exclusion list for --class stressors + * core-shim: reset errno before each waitpid call + * stress-socket: handle SIGPIPE as non-fatal + * stress-physpage: don't abort on zero address physpage + +------------------------------------------------------------------- Old: ---- stress-ng-0.10.02.tar.xz New: ---- stress-ng-0.10.05.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ stress-ng.spec ++++++ --- /var/tmp/diff_new_pack.2ntdfu/_old 2019-09-20 14:54:21.662868703 +0200 +++ /var/tmp/diff_new_pack.2ntdfu/_new 2019-09-20 14:54:21.670868701 +0200 @@ -18,7 +18,7 @@ Name: stress-ng -Version: 0.10.02 +Version: 0.10.05 Release: 0 Summary: Tool to load and stress a computer License: GPL-2.0-only ++++++ stress-ng-0.10.02.tar.xz -> stress-ng-0.10.05.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/Makefile new/stress-ng-0.10.05/Makefile --- old/stress-ng-0.10.02/Makefile 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/Makefile 2019-09-12 16:26:48.000000000 +0200 @@ -16,7 +16,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -VERSION=0.10.02 +VERSION=0.10.05 # # Codename "systematic system smasher" # diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/README new/stress-ng-0.10.05/README --- old/stress-ng-0.10.02/README 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/README 2019-09-12 16:26:48.000000000 +0200 @@ -94,7 +94,7 @@ make clean CC=tcc make -For more information, see: http://kernel.ubuntu.com/~cking/stress-ng/ +For more information, see: https://kernel.ubuntu.com/~cking/stress-ng/ I am keen to add to the stress-ng project page any citations to research or projects that use stress-ng. I also appreciate information concerning kernel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/bash-completion/stress-ng new/stress-ng-0.10.05/bash-completion/stress-ng --- old/stress-ng-0.10.02/bash-completion/stress-ng 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/bash-completion/stress-ng 2019-09-12 16:26:48.000000000 +0200 @@ -99,7 +99,7 @@ case "$cur" in # # args without further options - # + # '--abort' | '--aggressive' | '--dry-run' | '--help' | '--ignite-cpu' |\ '--keep-name' | '--log-brief' | '--maximize' | '--metrics' |\ '--metrics-brief' | '--minimize' | '--no-madvise' | '--no-rand-seed' |\ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-cache.c new/stress-ng-0.10.05/core-cache.c --- old/stress-ng-0.10.02/core-cache.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-cache.c 2019-09-12 16:26:48.000000000 +0200 @@ -169,11 +169,11 @@ */ static int add_cpu_cache_detail(cpu_cache_t *cache, const char *index_path) { - const size_t index_posn = strlen(index_path); + const size_t index_posn = index_path ? strlen(index_path) : 0; const size_t path_len = index_posn + 32; - char path[path_len]; - char tmp[2048]; int ret = EXIT_FAILURE; + char tmp[2048]; + char path[path_len]; (void)memset(path, 0, sizeof(path)); if (!cache) { @@ -185,29 +185,29 @@ goto out; } - snprintf(path, sizeof(path), "%s/type", index_path); + (void)snprintf(path, sizeof(path), "%s/type", index_path); if (get_string_from_file(path, tmp, sizeof(tmp)) < 0) goto out; cache->type = (cache_type_t)get_cache_type(tmp); if (cache->type == CACHE_TYPE_UNKNOWN) goto out; - snprintf(path, sizeof(path), "%s/size", index_path); + (void)snprintf(path, sizeof(path), "%s/size", index_path); if (get_string_from_file(path, tmp, sizeof(tmp)) < 0) goto out; cache->size = size_to_bytes(tmp); - snprintf(path, sizeof(path), "%s/level", index_path); + (void)snprintf(path, sizeof(path), "%s/level", index_path); if (get_string_from_file(path, tmp, sizeof(tmp)) < 0) goto out; cache->level = (uint16_t)atoi(tmp); - snprintf(path, sizeof(path), "%s/coherency_line_size", index_path); + (void)snprintf(path, sizeof(path), "%s/coherency_line_size", index_path); if (get_string_from_file(path, tmp, sizeof(tmp)) < 0) goto out; cache->line_size = (uint32_t)atoi(tmp); - snprintf(path, sizeof(path), "%s/ways_of_associativity", index_path); + (void)snprintf(path, sizeof(path), "%s/ways_of_associativity", index_path); if (get_string_from_file(path, tmp, sizeof(tmp)) < 0) cache->ways = atoi(tmp); else @@ -325,7 +325,8 @@ */ static int get_cpu_cache_details(cpu_t *cpu, const char *cpu_path) { - char path[strlen(cpu_path) + strlen(SYS_CPU_CACHE_DIR) + 2]; + const size_t cpu_path_len = cpu_path ? strlen(cpu_path) : 0; + char path[cpu_path_len + strlen(SYS_CPU_CACHE_DIR) + 2]; int i, j, n, ret = EXIT_FAILURE; struct dirent **namelist; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-helper.c new/stress-ng-0.10.05/core-helper.c --- old/stress-ng-0.10.02/core-helper.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-helper.c 2019-09-12 16:26:48.000000000 +0200 @@ -1083,7 +1083,9 @@ */ unsigned int stress_get_cpu(void) { -#if defined(HAVE_SCHED_GETCPU) && !defined(__PPC64__) +#if defined(HAVE_SCHED_GETCPU) && \ + !defined(__PPC64__) && \ + !defined(__s390x__) const int cpu = sched_getcpu(); return (unsigned int)((cpu < 0) ? 0 : cpu); @@ -1461,7 +1463,7 @@ char *str = strdup(opt); if (!str) - fprintf(stderr, "out of memory duplicating option '%s'\n", opt); + (void)fprintf(stderr, "out of memory duplicating option '%s'\n", opt); return str; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-job.c new/stress-ng-0.10.05/core-job.c --- old/stress-ng-0.10.02/core-job.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-job.c 2019-09-12 16:26:48.000000000 +0200 @@ -92,7 +92,7 @@ const uint32_t lineno, const char *line) { - fprintf(stderr, "error in line %" PRIu32 ": '%s'\n", + (void)fprintf(stderr, "error in line %" PRIu32 ": '%s'\n", lineno, line); } @@ -186,7 +186,7 @@ /* Must check for --job -h option! */ if (!strcmp(new_argv[1], "job") || !strcmp(new_argv[1], "j")) { - fprintf(stderr, "Cannot read job file in from a job script!\n"); + (void)fprintf(stderr, "Cannot read job file in from a job script!\n"); goto err; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-sched.c new/stress-ng-0.10.05/core-sched.c --- old/stress-ng-0.10.02/core-sched.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-sched.c 2019-09-12 16:26:48.000000000 +0200 @@ -227,9 +227,9 @@ } else { (void)fprintf(stderr, "Available scheduler options are:"); for (i = 0; i < SIZEOF_ARRAY(sched_types); i++) { - fprintf(stderr, " %s", sched_types[i].name); + (void)fprintf(stderr, " %s", sched_types[i].name); } - fprintf(stderr, "\n"); + (void)fprintf(stderr, "\n"); } _exit(EXIT_FAILURE); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-shim.c new/stress-ng-0.10.05/core-shim.c --- old/stress-ng-0.10.02/core-shim.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-shim.c 2019-09-12 16:26:48.000000000 +0200 @@ -288,10 +288,10 @@ } /* - * shim_syslog() + * shim_klogctl() * wrapper for syslog(2) (NOT syslog(3)) */ -int shim_syslog(int type, char *bufp, int len) +int shim_klogctl(int type, char *bufp, int len) { #if defined(__NR_syslog) return syscall(__NR_syslog, type, bufp, len); @@ -1182,6 +1182,7 @@ pid_t ret; for (;;) { + errno = 0; ret = waitpid(pid, wstatus, options); if (ret >= 0) break; @@ -1219,11 +1220,7 @@ #if defined(__NR_fsopen) return syscall(__NR_fsopen, fsname, flags); #else - (void)fsname; - (void)flags; - - errno = ENOSYS; - return -1; + return shim_enosys(0, fsname, flags); #endif } @@ -1232,12 +1229,7 @@ #if defined(__NR_fsmount) return syscall(__NR_fsmount, fd, flags, ms_flags); #else - (void)fd; - (void)flags; - (void)ms_flags; - - errno = ENOSYS; - return -1; + return shim_enosys(0, fd, flags, ms_flags); #endif } @@ -1251,14 +1243,7 @@ #if defined(__NR_fsconfig) return syscall(__NR_fsconfig, fd, cmd, key, value, aux); #else - (void)fd; - (void)cmd; - (void)key; - (void)value; - (void)aux; - - errno = ENOSYS; - return -1; + return shim_enosys(0, fd, cmd, key, value, aux); #endif } @@ -1273,14 +1258,7 @@ return syscall(__NR_move_mount, from_dfd, from_pathname, to_dfd, to_pathname, flags); #else - (void)from_dfd; - (void)from_pathname; - (void)to_dfd; - (void)to_pathname; - (void)flags; - - errno = ENOSYS; - return -1; + return shim_enosys(0, from_dfd, from_pathname, + to_dfd, to_pathname, flags); #endif } - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-thermal-zone.c new/stress-ng-0.10.05/core-thermal-zone.c --- old/stress-ng-0.10.02/core-thermal-zone.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-thermal-zone.c 2019-09-12 16:26:48.000000000 +0200 @@ -159,7 +159,7 @@ for (tz_info = g_shared->tz_info; tz_info; tz_info = tz_info->next) { for (j = 0; j < pi->started_procs; j++) { - const uint64_t temp = + const uint64_t temp = pi->stats[j]->tz.tz_stat[tz_info->index].temperature; /* Avoid crazy temperatures. e.g. > 250 C */ if (temp <= 250000) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/core-thrash.c new/stress-ng-0.10.05/core-thrash.c --- old/stress-ng-0.10.02/core-thrash.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/core-thrash.c 2019-09-12 16:26:48.000000000 +0200 @@ -207,7 +207,7 @@ (void)ret; #endif while (g_keep_stressing_flag) { - if ((mwc8() & 0x3f) == 0) + if ((mwc8() & 0x3f) == 0) pagein_all_procs(); compact_memory(); merge_memory(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/kernel-coverage.sh new/stress-ng-0.10.05/kernel-coverage.sh --- old/stress-ng-0.10.02/kernel-coverage.sh 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/kernel-coverage.sh 2019-09-12 16:26:48.000000000 +0200 @@ -136,7 +136,7 @@ do_stress --vm 0 --vm-madvise willneed DURATION=60 - + for S in $STRESSORS do do_stress --${S} 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-af-alg.c new/stress-ng-0.10.05/stress-af-alg.c --- old/stress-ng-0.10.02/stress-af-alg.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-af-alg.c 2019-09-12 16:26:48.000000000 +0200 @@ -561,7 +561,6 @@ SIZEOF_ARRAY(algo_hash_info), &af_alg_hash_skip_sz); g_shared->af_alg_cipher_skip = stress_af_alg_skip_alloc( SIZEOF_ARRAY(algo_cipher_info), &af_alg_cipher_skip_sz); - } static void stress_af_alg_deinit(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-apparmor.c new/stress-ng-0.10.05/stress-apparmor.c --- old/stress-ng-0.10.02/stress-apparmor.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-apparmor.c 2019-09-12 16:26:48.000000000 +0200 @@ -405,10 +405,10 @@ { static size_t p = 0; - if (p > (len * sizeof(char))) + if (p > len) p = 0; - copy[p / sizeof(char)] ^= (1 << (p & 7)); + copy[p] ^= (1 << (p & 7)); p++; } @@ -421,10 +421,10 @@ { static size_t p = 0; - if (p > (len * sizeof(char))) + if (p > len) p = 0; - copy[p / sizeof(char)] &= ~(1 << (p & 7)); + copy[p] &= ~(1 << (p & 7)); p++; } @@ -437,10 +437,10 @@ { static size_t p = 0; - if (p > (len * sizeof(char))) + if (p > len) p = 0; - copy[p / sizeof(char)] |= (1 << (p & 7)); + copy[p] |= (1 << (p & 7)); p++; } @@ -520,10 +520,10 @@ size_t p = (size_t)mwc32() % (len * sizeof(char)); for (i = 0; i < 32; i++) { - if (p > (len * sizeof(char))) + if (p > len) p = 0; - copy[p / sizeof(char)] ^= (1 << (p & 7)); + copy[p] ^= (1 << (p & 7)); p++; } } @@ -679,7 +679,7 @@ } for (i = 0; i < n; i++) { - pids[i] = apparmor_spawn(args, + pids[i] = apparmor_spawn(args, ops_per_child + ((i == 0) ? ops : 0), &counters[i], apparmor_funcs[i]); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-bind-mount.c new/stress-ng-0.10.05/stress-bind-mount.c --- old/stress-ng-0.10.02/stress-bind-mount.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-bind-mount.c 2019-09-12 16:26:48.000000000 +0200 @@ -79,8 +79,8 @@ break; } /* - * The following fails with -EBUSY, but try it anyhow - ` * just to make the kernel work harder + * The following fails with -EBUSY, but try it anyhow + * just to make the kernel work harder */ (void)umount("/"); inc_counter(args); @@ -97,7 +97,7 @@ static int stress_bind_mount(const args_t *args) { int pid = 0, status; - pthread_args_t pargs = { args, NULL }; + pthread_args_t pargs = { args, NULL, 0 }; const ssize_t stack_offset = stress_get_stack_direction() * (CLONE_STACK_SIZE - 64); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-chroot.c new/stress-ng-0.10.05/stress-chroot.c --- old/stress-ng-0.10.02/stress-chroot.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-chroot.c 2019-09-12 16:26:48.000000000 +0200 @@ -178,7 +178,7 @@ * so ignore this error */ if ((ret1 >= 0) || ((errno1 != ENOTDIR) && - (errno1 != ENOENT) && + (errno1 != ENOENT) && (errno1 != EPERM))) { pr_fail("%s: chroot(\"%s\"), expected ENOTDIR" ", got instead errno=%d (%s)\n", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-clock.c new/stress-ng-0.10.05/stress-clock.c --- old/stress-ng-0.10.02/stress-clock.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-clock.c 2019-09-12 16:26:48.000000000 +0200 @@ -89,7 +89,7 @@ defined(HAVE_TIMER_DELETE) && \ defined(HAVE_TIMER_GETTIME) && \ defined(HAVE_TIMER_GETOVERRUN) && \ - defined(HAVE_TIMER_SETTIME) + defined(HAVE_TIMER_SETTIME) static const int timers[] = { #if defined(CLOCK_REALTIME) CLOCK_REALTIME, @@ -219,7 +219,7 @@ defined(HAVE_TIMER_DELETE) && \ defined(HAVE_TIMER_GETTIME) && \ defined(HAVE_TIMER_GETOVERRUN) && \ - defined(HAVE_TIMER_SETTIME) + defined(HAVE_TIMER_SETTIME) { size_t i; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-cpu.c new/stress-ng-0.10.05/stress-cpu.c --- old/stress-ng-0.10.02/stress-cpu.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-cpu.c 2019-09-12 16:26:48.000000000 +0200 @@ -577,6 +577,23 @@ } /* + * stress_cpu_collatz() + * stress test integer collatz conjecture + */ +static void HOT OPTIMIZE3 TARGET_CLONES stress_cpu_collatz(const char *name) +{ + register uint64_t n = 989345275647ULL; /* Has 1348 steps in cycle */ + register int i; + + for (i = 0; n != 1; i++) { + n = (n & 1) ? (3 * n) + 1 : n / 2; + } + if ((g_opt_flags & OPT_FLAGS_VERIFY) && (i != 1348)) + pr_fail("%s: error detected, failed collatz progression\n", + name); +} + +/* * stress_cpu_hash_generic() * stress test generic string hash function */ @@ -2115,7 +2132,10 @@ * stress_cpu_cpuid() * get CPU id info, x86 only */ -#if defined(STRESS_X86) +#if defined(HAVE_CPUID_H) && \ + defined(STRESS_X86) && \ + defined(HAVE_CPUID) && \ + NEED_GNUC(4,6,0) static void TARGET_CLONES stress_cpu_cpuid(const char *name) { register int i; @@ -2428,8 +2448,12 @@ { "cfloat", stress_cpu_complex_float }, { "clongdouble", stress_cpu_complex_long_double }, #endif + { "collatz", stress_cpu_collatz }, { "correlate", stress_cpu_correlate }, -#if defined(STRESS_X86) +#if defined(HAVE_CPUID_H) && \ + defined(STRESS_X86) && \ + defined(HAVE_CPUID) && \ + NEED_GNUC(4,6,0) { "cpuid", stress_cpu_cpuid }, #endif { "crc16", stress_cpu_crc16 }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-cyclic.c new/stress-ng-0.10.05/stress-cyclic.c --- old/stress-ng-0.10.02/stress-cyclic.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-cyclic.c 2019-09-12 16:26:48.000000000 +0200 @@ -145,7 +145,7 @@ } #if defined(HAVE_CLOCK_GETTIME) && \ - defined(HAVE_CLOCK_NANOSLEEP) + defined(HAVE_CLOCK_NANOSLEEP) /* * stress_cyclic_clock_nanosleep() * measure latencies with clock_nanosleep @@ -454,7 +454,7 @@ */ static const stress_cyclic_method_info_t cyclic_methods[] = { #if defined(HAVE_CLOCK_GETTIME) && \ - defined(HAVE_CLOCK_NANOSLEEP) + defined(HAVE_CLOCK_NANOSLEEP) { "clock_ns", stress_cyclic_clock_nanosleep }, #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-dev.c new/stress-ng-0.10.05/stress-dev.c --- old/stress-ng-0.10.02/stress-dev.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-dev.c 2019-09-12 16:26:48.000000000 +0200 @@ -1304,9 +1304,9 @@ /* * Xen clients hang on hpet when running as root * see: LP#1741409, so avoid opening /dev/hpet + */ if (!euid && !strcmp(d->d_name, "hpet")) continue; - */ len = strlen(d->d_name); /* diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-dirdeep.c new/stress-ng-0.10.05/stress-dirdeep.c --- old/stress-ng-0.10.02/stress-dirdeep.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-dirdeep.c 2019-09-12 16:26:48.000000000 +0200 @@ -309,7 +309,7 @@ (void)shim_strlcpy(linkpath, rootpath, sizeof(linkpath)); (void)shim_strlcat(linkpath, "/f", sizeof(linkpath) - 3); - pr_inf("%s: %" PRIu64 " inodes available, exercising up to %" PRIu64 " inodes\n", + pr_dbg("%s: %" PRIu64 " inodes available, exercising up to %" PRIu64 " inodes\n", args->name, inodes_avail, inodes_avail - inodes_target_free); (void)shim_strlcpy(path, rootpath, sizeof(path)); @@ -324,7 +324,7 @@ pr_tidy("%s: removing directories\n", args->name); stress_dir_tidy(args, path, path_len, sizeof(path)); - pr_inf("%s: %" PRIu64 " inodes exercised\n", args->name, inodes_avail - min_inodes_free); + pr_dbg("%s: %" PRIu64 " inodes exercised\n", args->name, inodes_avail - min_inodes_free); if ((args->instance == 0) && (inodes_target_free < min_inodes_free)) pr_inf("%s: note: specifying a larger --dirdeep setting or " "running the stressor for longer will use more " diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-get.c new/stress-ng-0.10.05/stress-get.c --- old/stress-ng-0.10.02/stress-get.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-get.c 2019-09-12 16:26:48.000000000 +0200 @@ -271,7 +271,7 @@ size_t kern_version_len; struct __sysctl_args sysctl_args; - memset(&sysctl_args, 0, sizeof(sysctl_args)); + (void)memset(&sysctl_args, 0, sizeof(sysctl_args)); sysctl_args.name = name; sysctl_args.nlen = SIZEOF_ARRAY(name); sysctl_args.oldval = kern_version; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-inode-flags.c new/stress-ng-0.10.05/stress-inode-flags.c --- old/stress-ng-0.10.02/stress-inode-flags.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-inode-flags.c 2019-09-12 16:26:48.000000000 +0200 @@ -92,7 +92,7 @@ * toggle these on and off to see if they break rather * than fail. */ -static void stress_inode_flags_stressor( +static int stress_inode_flags_stressor( const args_t *args, char *filename) { @@ -107,14 +107,14 @@ if (fddir < 0) { pr_err("%s: cannot open %s: errno=%d (%s)\n", args->name, path, errno, strerror(errno)); - return; + return -1; } fdfile = open(filename, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR); if (fdfile < 0) { pr_err("%s: cannot open %s: errno=%d (%s)\n", args->name, filename, errno, strerror(errno)); (void)close(fddir); - return; + return -1; } while (keep_running && keep_stressing()) { @@ -177,6 +177,8 @@ stress_inode_flags_ioctl_sane(fdfile); (void)close(fdfile); (void)close(fddir); + + return 0; } /* @@ -205,7 +207,7 @@ if (stress_sigaltstack(stack, SIGSTKSZ) < 0) return &nowt; - stress_inode_flags_stressor(pa->args, (char *)pa->data); + pa->pthread_ret = stress_inode_flags_stressor(pa->args, (char *)pa->data); return &nowt; } @@ -221,7 +223,7 @@ size_t i; pthread_t pthreads[MAX_INODE_FLAG_THREADS]; int rc, ret[MAX_INODE_FLAG_THREADS]; - pthread_args_t pa; + pthread_args_t pa[MAX_INODE_FLAG_THREADS]; rc = shim_pthread_spin_init(&spinlock, SHIM_PTHREAD_PROCESS_SHARED); if (rc) { @@ -235,15 +237,16 @@ (void)stress_temp_filename_args(args, filename, sizeof(filename), mwc32()); - pa.args = args; - pa.data = (void *)filename; - (void)memset(ret, 0, sizeof(ret)); keep_running = true; for (i = 0; i < MAX_INODE_FLAG_THREADS; i++) { + pa[i].args = args; + pa[i].data = (void *)filename; + pa[i].pthread_ret = 0; + ret[i] = pthread_create(&pthreads[i], NULL, - stress_inode_flags_thread, &pa); + stress_inode_flags_thread, &pa[i]); } do { @@ -251,17 +254,21 @@ } while (keep_stressing()); keep_running = false; + rc = EXIT_SUCCESS; for (i = 0; i < MAX_INODE_FLAG_THREADS; i++) { - if (ret[i] == 0) + if (ret[i] == 0) { pthread_join(pthreads[i], NULL); + if (pa[i].pthread_ret < 0) + rc = EXIT_FAILURE; + } } (void)shim_pthread_spin_destroy(&spinlock); (void)unlink(filename); stress_temp_dir_rm_args(args); - return EXIT_SUCCESS; + return rc; } stressor_info_t stress_inode_flags_info = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-ioprio.c new/stress-ng-0.10.05/stress-ioprio.c --- old/stress-ng-0.10.02/stress-ioprio.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-ioprio.c 2019-09-12 16:26:48.000000000 +0200 @@ -93,7 +93,7 @@ pr_fail("%s: ioprio_get(OPRIO_WHO_PGRP, %d), " "errno = %d (%s)\n", args->name, g_pgrp, errno, strerror(errno)); - goto cleanup_file; + goto cleanup_file; } } if (!keep_stressing()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-ipsec-mb.c new/stress-ng-0.10.05/stress-ipsec-mb.c --- old/stress-ng-0.10.02/stress-ipsec-mb.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-ipsec-mb.c 2019-09-12 16:26:48.000000000 +0200 @@ -39,7 +39,7 @@ defined(IMB_FEATURE_AESNI) && \ defined(IMB_FEATURE_AVX) && \ defined(IMB_FEATURE_AVX2) && \ - defined(IMB_FEATURE_AVX512_SKX) + defined(IMB_FEATURE_AVX512_SKX) #define FEATURE_SSE (IMB_FEATURE_SSE4_2 | IMB_FEATURE_CMOV | IMB_FEATURE_AESNI) #define FEATURE_AVX (IMB_FEATURE_AVX | IMB_FEATURE_CMOV | IMB_FEATURE_AESNI) @@ -593,7 +593,7 @@ return EXIT_NO_RESOURCE; } if (imb_get_version() < IMB_VERSION(0, 51, 0)) { - pr_inf("%s: version %s of Intel IPSEC MB library is too low, skipping\n", + pr_inf("%s: version %s of Intel IPSEC MB library is too low, skipping\n", args->name, imb_get_version_str()); free_mb_mgr(p_mgr); return EXIT_NOT_IMPLEMENTED; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-klog.c new/stress-ng-0.10.05/stress-klog.c --- old/stress-ng-0.10.02/stress-klog.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-klog.c 2019-09-12 16:26:48.000000000 +0200 @@ -53,7 +53,7 @@ char *buffer; ssize_t len; - len = shim_syslog(SYSLOG_ACTION_SIZE_BUFFER, NULL, 0); + len = shim_klogctl(SYSLOG_ACTION_SIZE_BUFFER, NULL, 0); if (len < 0) { if (!args->instance) pr_err("%s: cannot determine syslog buffer " @@ -80,7 +80,7 @@ do { int ret, buflen = (mwc32() % len) + 1; - ret = shim_syslog(SYSLOG_ACTION_READ_ALL, buffer, buflen); + ret = shim_klogctl(SYSLOG_ACTION_READ_ALL, buffer, buflen); if (ret < 0) pr_fail_err("syslog ACTION_READ_ALL"); if (ret > buflen) @@ -88,16 +88,16 @@ "data than was requested.\n", args->name); /* open, no-op, ignore failure */ - (void)shim_syslog(SYSLOG_ACTION_OPEN, NULL, 0); + (void)shim_klogctl(SYSLOG_ACTION_OPEN, NULL, 0); /* close, no-op, ignore failure */ - (void)shim_syslog(SYSLOG_ACTION_CLOSE, NULL, 0); + (void)shim_klogctl(SYSLOG_ACTION_CLOSE, NULL, 0); /* get unread size, ignore failure */ - (void)shim_syslog(SYSLOG_ACTION_SIZE_UNREAD, NULL, 0); + (void)shim_klogctl(SYSLOG_ACTION_SIZE_UNREAD, NULL, 0); /* get size of kernel buffer, ignore return */ - (void)shim_syslog(SYSLOG_ACTION_SIZE_BUFFER, NULL, 0); + (void)shim_klogctl(SYSLOG_ACTION_SIZE_BUFFER, NULL, 0); inc_counter(args); } while (keep_stressing()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-lockbus.c new/stress-ng-0.10.05/stress-lockbus.c --- old/stress-ng-0.10.02/stress-lockbus.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-lockbus.c 2019-09-12 16:26:48.000000000 +0200 @@ -40,7 +40,7 @@ #define LOCK(ptr) __atomic_add_fetch(ptr, inc, __ATOMIC_SEQ_CST); #else -#define LOCK(ptr) asm volatile("lock addl %1,%0" : "+m" (*ptr) : "ir" (inc)); +#define LOCK(ptr) asm volatile("lock addl %1,%0" : "+m" (*ptr) : "ir" (inc)); #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-matrix-3d.c new/stress-ng-0.10.05/stress-matrix-3d.c --- old/stress-ng-0.10.02/stress-matrix-3d.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-matrix-3d.c 2019-09-12 16:26:48.000000000 +0200 @@ -229,7 +229,7 @@ for (j = 0; j < n; j++) { register size_t i; - + for (i = 0; i < n; i++) { r[i][j][k] = a[k][j][i]; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-membarrier.c new/stress-ng-0.10.05/stress-membarrier.c --- old/stress-ng-0.10.02/stress-membarrier.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-membarrier.c 2019-09-12 16:26:48.000000000 +0200 @@ -99,7 +99,7 @@ pthread_t pthreads[MAX_MEMBARRIER_THREADS]; size_t i; int pthread_ret[MAX_MEMBARRIER_THREADS]; - pthread_args_t pargs = { args, NULL }; + pthread_args_t pargs = { args, NULL, 0 }; ret = shim_membarrier(MEMBARRIER_CMD_QUERY, 0); if (ret < 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-ng.1 new/stress-ng-0.10.05/stress-ng.1 --- old/stress-ng-0.10.02/stress-ng.1 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-ng.1 2019-09-12 16:26:48.000000000 +0200 @@ -2,7 +2,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH STRESS-NG 1 "August 21, 2019" +.TH STRESS-NG 1 "September 2, 2019" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -735,6 +735,10 @@ clongdouble T{ 1000 iterations of a mix of long double floating point complex operations T} +collatz T{ +compute the 1348 steps in the collatz sequence from starting number 989345275647. +Where f(n) = n / 2 (for even n) and f(n) = 3n + 1 (for odd n). +T} correlate T{ perform a 16384 \(mu 1024 correlation of random doubles T} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-ng.c new/stress-ng-0.10.05/stress-ng.c --- old/stress-ng-0.10.02/stress-ng.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-ng.c 2019-09-12 16:26:48.000000000 +0200 @@ -1482,9 +1482,9 @@ case SIGSEGV: case SIGFPE: case SIGBUS: - fprintf(stderr, "%s: info: [%d] terminated with unexpected signal %s\n", + (void)fprintf(stderr, "%s: info: [%d] terminated with unexpected signal %s\n", g_app_name, (int)getpid(), stress_strsignal(signum)); - fflush(stderr); + (void)fflush(stderr); _exit(EXIT_SIGNALED); break; default: @@ -1935,9 +1935,7 @@ (void)shim_strlcat(buf + len, argv[i], arglen[i]); len += arglen[i]; } -#if defined(HAVE_SYSLOG_H) - syslog(LOG_INFO, "invoked with '%s' by user %d", buf, getuid()); -#endif + shim_syslog(LOG_INFO, "invoked with '%s' by user %d", buf, getuid()); free(buf); } @@ -1953,7 +1951,7 @@ struct sysinfo info; if (sysinfo(&info) == 0) { - syslog(LOG_INFO, "memory (MB): total %.2f, " + shim_syslog(LOG_INFO, "memory (MB): total %.2f, " "free %.2f, " "shared %.2f, " "buffer %.2f, " @@ -1981,7 +1979,7 @@ struct utsname buf; if (uname(&buf) == 0) { - syslog(LOG_INFO, "system: '%s' %s %s %s %s\n", + shim_syslog(LOG_INFO, "system: '%s' %s %s %s %s\n", buf.nodename, buf.sysname, buf.release, @@ -2753,9 +2751,7 @@ */ if (get_setting("log-file", &log_filename)) pr_openlog(log_filename); -#if defined(HAVE_SYSLOG_H) - openlog("stress-ng", 0, LOG_USER); -#endif + shim_openlog("stress-ng", 0, LOG_USER); log_args(argc, argv); log_system_info(); log_system_mem_info(); @@ -2844,6 +2840,12 @@ } else { stress_setup_parallel(class); } + /* + * Seq/parallel modes may have added in + * excluded stressors, so exclude check again + */ + exclude_unsupported(); + exclude_pathological(); set_proc_limits(); @@ -2984,9 +2986,7 @@ /* * Close logs */ -#if defined(HAVE_SYSLOG_H) - closelog(); -#endif + shim_closelog(); pr_closelog(); if (yaml) { pr_yaml(yaml, "...\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-ng.h new/stress-ng-0.10.05/stress-ng.h --- old/stress-ng-0.10.02/stress-ng.h 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-ng.h 2019-09-12 16:26:48.000000000 +0200 @@ -917,8 +917,9 @@ /* pthread wrapped args_t */ typedef struct { - const args_t *args; - void *data; + const args_t *args; /* Stress test args */ + void *data; /* Per thread private data */ + int pthread_ret; /* Per thread return value */ } pthread_args_t; /* gcc 4.7 and later support vector ops */ @@ -1124,6 +1125,18 @@ #define pr_fail_errno(msg, err) pr_fail_errno__(args, msg, err) #define pr_fail_dbg(msg) pr_fail_dbg__(args, msg) +#if defined(HAVE_SYSLOG_H) +#define shim_syslog(priority, format, ...) \ + syslog(priority, format, __VA_ARGS__) +#define shim_openlog(ident, option, facility) \ + openlog(ident, option, facility) +#define shim_closelog() closelog() +#else +#define shim_syslog(priority, format, ...) +#define shim_openlog(ident, option, facility) +#define shim_closelog() +#endif + /* Memory size constants */ #define KB (1ULL << 10) #define MB (1ULL << 20) @@ -3435,6 +3448,8 @@ uint64_t sched_runtime; /* runtime SCHED_DEADLINE, ns */ uint64_t sched_deadline; /* deadline time, ns */ uint64_t sched_period; /* period, ns */ + uint32_t sched_util_min; /* utilization hint, min */ + uint32_t sched_util_max; /* utilization hint, max */ }; /* shim'd STATX flags */ @@ -3560,7 +3575,7 @@ extern int shim_sync_file_range(int fd, shim_off64_t offset, shim_off64_t nbytes, unsigned int flags); extern int shim_sysfs(int option, ...); -extern int shim_syslog(int type, char *bufp, int len); +extern int shim_klogctl(int type, char *bufp, int len); extern int shim_unshare(int flags); extern int shim_userfaultfd(int flags); extern int shim_usleep(uint64_t usec); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-numa.c new/stress-ng-0.10.05/stress-numa.c --- old/stress-ng-0.10.02/stress-numa.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-numa.c 2019-09-12 16:26:48.000000000 +0200 @@ -106,9 +106,9 @@ FILE *fp; unsigned long n = 0, node_id = 0; node_t *tail = NULL; - *node_ptr = NULL; char buffer[8192], *str = NULL, *ptr; + *node_ptr = NULL; fp = fopen("/proc/self/status", "r"); if (!fp) return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-physpage.c new/stress-ng-0.10.05/stress-physpage.c --- old/stress-ng-0.10.02/stress-physpage.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-physpage.c 2019-09-12 16:26:48.000000000 +0200 @@ -80,12 +80,8 @@ phys_addr |= (virt_addr & (page_size - 1)); offset = pfn * sizeof(uint64_t); - if (phys_addr == 0) { - pr_err("%s: got zero physical address from virtual address %p\n", - args->name, (void *)virt_addr); - goto err; - } - + if (phys_addr == 0) + return 0; if (fd_pc < 0) return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-pidfd.c new/stress-ng-0.10.05/stress-pidfd.c --- old/stress-ng-0.10.02/stress-pidfd.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-pidfd.c 2019-09-12 16:26:48.000000000 +0200 @@ -35,7 +35,7 @@ static int stress_pidfd_open_fd(pid_t pid) { char buffer[1024]; - + (void)snprintf(buffer, sizeof(buffer), "/proc/%d", pid); return open(buffer, O_DIRECTORY | O_CLOEXEC); } @@ -98,7 +98,7 @@ } else { /* Parent */ int pidfd, ret; - + pidfd = stress_pidfd_open_fd(pid); if (pidfd < 0) { /* Process not found, try again */ @@ -113,7 +113,7 @@ args->name); stress_pidfd_reap(pid, pidfd); return EXIT_NOT_IMPLEMENTED; - } + } pr_err("%s: pidfd_send_signal failed: errno=%d (%s)\n", args->name, errno, strerror(errno)); stress_pidfd_reap(pid, pidfd); @@ -149,7 +149,7 @@ pr_inf("pidfd stressor will be skipped, system call not supported at build time\n"); return -1; } - + stressor_info_t stress_pidfd_info = { .stressor = stress_not_implemented, .class = CLASS_INTERRUPT | CLASS_OS, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-pkey.c new/stress-ng-0.10.05/stress-pkey.c --- old/stress-ng-0.10.02/stress-pkey.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-pkey.c 2019-09-12 16:26:48.000000000 +0200 @@ -93,7 +93,7 @@ int rights; rights = shim_pkey_get(pkey); - if (rights > -1) + if (rights > -1) (void)shim_pkey_set(pkey, rights); (void)shim_pkey_free(pkey); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-pthread.c new/stress-ng-0.10.05/stress-pthread.c --- old/stress-ng-0.10.02/stress-pthread.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-pthread.c 2019-09-12 16:26:48.000000000 +0200 @@ -257,7 +257,7 @@ uint64_t limited = 0, attempted = 0; uint64_t pthread_max = DEFAULT_PTHREAD; int ret; - pthread_args_t pargs = { args, NULL }; + pthread_args_t pargs = { args, NULL, 0 }; sigset_t set; keep_running_flag = true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-quota.c new/stress-ng-0.10.05/stress-quota.c --- old/stress-ng-0.10.02/stress-quota.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-quota.c 2019-09-12 16:26:48.000000000 +0200 @@ -306,7 +306,7 @@ rc = EXIT_SUCCESS; goto tidy; } - + /* All failed, then give up */ if (failed == n_devs) goto tidy; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-ramfs.c new/stress-ng-0.10.05/stress-ramfs.c --- old/stress-ng-0.10.02/stress-ramfs.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-ramfs.c 2019-09-12 16:26:48.000000000 +0200 @@ -177,7 +177,7 @@ int fd, mfd; #endif - snprintf(opt, sizeof(opt), "size=%" PRIu64, ramfs_size); + (void)snprintf(opt, sizeof(opt), "size=%" PRIu64, ramfs_size); rc = mount("", realpathname, "tmpfs", 0, opt); if (rc < 0) { if ((errno != ENOSPC) && (errno != ENOMEM)) @@ -202,7 +202,7 @@ pr_fail("%s: fsopen failed: errno=%d (%s)\n", args->name, errno, strerror(errno)); } - snprintf(opt, sizeof(opt), "%" PRIu64, ramfs_size); + (void)snprintf(opt, sizeof(opt), "%" PRIu64, ramfs_size); if (shim_fsconfig(fd, FSCONFIG_SET_STRING, "size", opt, 0) < 0) { if (errno == ENOSYS) goto cleanup_fd; @@ -320,7 +320,7 @@ stressor_info_t stress_ramfs_info = { .stressor = stress_ramfs_mount, - .class = CLASS_FILESYSTEM | CLASS_OS, + .class = CLASS_OS, .opt_set_funcs = opt_set_funcs, .supported = stress_ramfs_supported, .help = help @@ -328,7 +328,7 @@ #else stressor_info_t stress_ramfs_info = { .stressor = stress_not_implemented, - .class = CLASS_FILESYSTEM | CLASS_OS, + .class = CLASS_OS, .supported = stress_ramfs_supported, .help = help }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-rdrand.c new/stress-ng-0.10.05/stress-rdrand.c --- old/stress-ng-0.10.02/stress-rdrand.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-rdrand.c 2019-09-12 16:26:48.000000000 +0200 @@ -253,7 +253,7 @@ #else static int stress_rdrand_supported(void) -{ +{ pr_inf("rdrand stressor will be skipped, CPU " "does not support the rdrand instruction.\n"); return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-seccomp.c new/stress-ng-0.10.05/stress-seccomp.c --- old/stress-ng-0.10.02/stress-seccomp.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-seccomp.c 2019-09-12 16:26:48.000000000 +0200 @@ -182,7 +182,7 @@ const size_t n_max = ((size_t)1 << bits) - 1; size_t i, j, n = 32, max = 1; - memset(&huge_prog, 0, sizeof(huge_prog)); + (void)memset(&huge_prog, 0, sizeof(huge_prog)); if (prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) < 0) { pr_fail_err("prctl PR_SET_NEW_PRIVS"); return -1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-sigfpe.c new/stress-ng-0.10.05/stress-sigfpe.c --- old/stress-ng-0.10.02/stress-sigfpe.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-sigfpe.c 2019-09-12 16:26:48.000000000 +0200 @@ -32,7 +32,7 @@ #if !defined(__UCLIBC__) && \ defined(HAVE_FENV_H) && \ - defined(HAVE_FLOAT_H) + defined(HAVE_FLOAT_H) #define SNG_INTDIV (0x40000000) #define SNG_FLTDIV (0x80000000) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-sleep.c new/stress-ng-0.10.05/stress-sleep.c --- old/stress-ng-0.10.02/stress-sleep.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-sleep.c 2019-09-12 16:26:48.000000000 +0200 @@ -78,7 +78,7 @@ static void *nowt = NULL; ctxt_t *ctxt = (ctxt_t *)c; const args_t *args = ctxt->args; - const uint64_t max_ops = + const uint64_t max_ops = args->max_ops ? (args->max_ops / ctxt->sleep_max) + 1 : 0; /* * According to POSIX.1 a thread should have @@ -90,7 +90,7 @@ if (stress_sigaltstack(stack, SIGSTKSZ) < 0) goto die; - while (keep_stressing() && + while (keep_stressing() && !thread_terminate && (!max_ops || ctxt->counter < max_ops)) { struct timespec tv; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-socket.c new/stress-ng-0.10.05/stress-socket.c --- old/stress-ng-0.10.02/stress-socket.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-socket.c 2019-09-12 16:26:48.000000000 +0200 @@ -391,7 +391,7 @@ for (i = 16; i < sizeof(buf); i += 16) { ssize_t ret = send(sfd, buf, i, 0); if (ret < 0) { - if (errno != EINTR) + if ((errno != EINTR) && (errno != EPIPE)) pr_fail_dbg("send"); break; } else @@ -407,7 +407,7 @@ msg.msg_iov = vec; msg.msg_iovlen = j; if (sendmsg(sfd, &msg, 0) < 0) { - if (errno != EINTR) + if ((errno != EINTR) && (errno != EPIPE)) pr_fail_dbg("sendmsg"); } else msgs += j; @@ -425,7 +425,7 @@ msgvec[i].msg_hdr.msg_iovlen = j; } if (sendmmsg(sfd, msgvec, MSGVEC_SIZE, 0) < 0) { - if (errno != EINTR) + if ((errno != EINTR) && (errno != EPIPE)) pr_fail_dbg("sendmmsg"); } else msgs += (MSGVEC_SIZE * j); @@ -466,6 +466,13 @@ return rc; } +static void stress_sock_sigpipe_handler(int signum) +{ + (void)signum; + + g_keep_stressing_flag = false; +} + /* * stress_sock * stress by heavy socket I/O @@ -486,6 +493,8 @@ pr_dbg("%s: process [%d] using socket port %d\n", args->name, (int)args->pid, socket_port + args->instance); + if (stress_sighandler(args->name, SIGPIPE, stress_sock_sigpipe_handler, NULL) < 0) + return EXIT_NO_RESOURCE; again: pid = fork(); if (pid < 0) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-stack.c new/stress-ng-0.10.05/stress-stack.c --- old/stress-ng-0.10.02/stress-stack.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-stack.c 2019-09-12 16:26:48.000000000 +0200 @@ -93,22 +93,41 @@ */ static int stress_stack(const args_t *args) { - uint8_t stack[SIGSTKSZ + STACK_ALIGNMENT]; + uint8_t *altstack; pid_t pid; bool stack_fill = false; + ssize_t altstack_size = (SIGSTKSZ + + STACK_ALIGNMENT + + args->page_size) & ~(args->page_size -1); (void)get_setting("stack-fill", &stack_fill); /* + * Allocate altstack on heap rather than an + * autoexpanding stack that may trip a segfault + * if there is no memory to back it later. + */ + altstack = mmap(NULL, altstack_size, PROT_READ | PROT_WRITE, + MAP_SHARED | MAP_ANONYMOUS, -1, 0); + if (altstack == MAP_FAILED) { + pr_inf("%s: cannot allocate stack for signal handler, " + "skipping test\n", args->name); + return EXIT_NO_RESOURCE; + } + (void)mincore_touch_pages(altstack, altstack_size); + + /* * We need to create an alternative signal * stack so when a segfault occurs we use * this already allocated signal stack rather * than try to push onto an already overflowed * stack */ - (void)memset(stack, 0, sizeof(stack)); - if (stress_sigaltstack(stack, SIGSTKSZ) < 0) + if (stress_sigaltstack(altstack, SIGSTKSZ) < 0) { + (void)munmap(altstack, altstack_size); return EXIT_FAILURE; + } + again: pid = fork(); @@ -196,6 +215,7 @@ } _exit(0); } + (void)munmap(altstack, altstack_size); return EXIT_SUCCESS; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-udp.c new/stress-ng-0.10.05/stress-udp.c --- old/stress-ng-0.10.02/stress-udp.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-udp.c 2019-09-12 16:26:48.000000000 +0200 @@ -82,7 +82,7 @@ */ static int stress_udp(const args_t *args) { - int udp_port = DEFAULT_SOCKET_PORT; + int udp_port = DEFAULT_UDP_PORT; int udp_domain = AF_INET; pid_t pid, ppid = getppid(); int rc = EXIT_SUCCESS; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-vm-rw.c new/stress-ng-0.10.05/stress-vm-rw.c --- old/stress-ng-0.10.02/stress-vm-rw.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-vm-rw.c 2019-09-12 16:26:48.000000000 +0200 @@ -64,7 +64,7 @@ } static const opt_set_func_t opt_set_funcs[] = { - { OPT_vm_rw_bytes, stress_set_vm_rw_bytes }, + { OPT_vm_rw_bytes, stress_set_vm_rw_bytes }, { 0, NULL } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-vm-segv.c new/stress-ng-0.10.05/stress-vm-segv.c --- old/stress-ng-0.10.02/stress-vm-segv.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-vm-segv.c 2019-09-12 16:26:48.000000000 +0200 @@ -107,7 +107,7 @@ inc_counter(args); break; } - if (signum & 0x80) + if (signum & 0x80) continue; } if (WIFEXITED(status)) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-vm.c new/stress-ng-0.10.05/stress-vm.c --- old/stress-ng-0.10.02/stress-vm.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-vm.c 2019-09-12 16:26:48.000000000 +0200 @@ -664,9 +664,10 @@ uint8_t v, *buf_end = buf + sz; volatile uint8_t *ptr; size_t bit_errors = 0; - uint64_t c = get_counter(args); + const uint64_t c_orig = get_counter(args); + uint64_t c; - for (v = val, ptr = buf; ptr < buf_end; ptr++, v++) { + for (c = c_orig, v = val, ptr = buf; ptr < buf_end; ptr++, v++) { if (UNLIKELY(!g_keep_stressing_flag)) return 0; *ptr = (v >> 1) ^ v; @@ -677,11 +678,14 @@ (void)mincore_touch_pages(buf, sz); inject_random_bit_errors(buf, sz); - for (v = val, ptr = buf; ptr < buf_end; ptr++, v++) { + for (c = c_orig, v = val, ptr = buf; ptr < buf_end; ptr++, v++) { if (UNLIKELY(!g_keep_stressing_flag)) break; if (UNLIKELY(*ptr != ((v >> 1) ^ v))) bit_errors++; + c++; + if (UNLIKELY(max_ops && c >= max_ops)) + break; } val++; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-watchdog.c new/stress-ng-0.10.05/stress-watchdog.c --- old/stress-ng-0.10.02/stress-watchdog.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-watchdog.c 2019-09-12 16:26:48.000000000 +0200 @@ -30,7 +30,7 @@ { NULL, NULL, NULL } }; -#if defined(HAVE_LINUX_WATCHDOG_H) +#if defined(HAVE_LINUX_WATCHDOG_H) static sigjmp_buf jmp_env; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-wcstr.c new/stress-ng-0.10.05/stress-wcstr.c --- old/stress-ng-0.10.02/stress-wcstr.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-wcstr.c 2019-09-12 16:26:48.000000000 +0200 @@ -702,7 +702,7 @@ stress_set_wcs_method("all"); } -static const opt_set_func_t opt_set_funcs[] = { +static const opt_set_func_t opt_set_funcs[] = { { OPT_wcs_method, stress_set_wcs_method }, { 0, NULL } }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/stress-zlib.c new/stress-ng-0.10.05/stress-zlib.c --- old/stress-ng-0.10.02/stress-zlib.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/stress-zlib.c 2019-09-12 16:26:48.000000000 +0200 @@ -57,7 +57,7 @@ bool pipe_broken; bool interrupted; } xsum_t; - + static stress_zlib_rand_data_info_t zlib_rand_data_methods[]; static volatile bool pipe_broken = false; static sigjmp_buf jmpbuf; @@ -156,7 +156,7 @@ while (ptr < end) { uint8_t ch = mwc8(); - + if (ch <= 0x7f) *ptr++ = ch; else { @@ -371,7 +371,7 @@ /* * stress_rand_data_gray() - * fill buffer with gray code of incrementing 16 bit values + * fill buffer with gray code of incrementing 16 bit values * */ static void stress_rand_data_gray(const args_t *args, uint32_t *data, const int size) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/syscalls.txt new/stress-ng-0.10.05/syscalls.txt --- old/stress-ng-0.10.02/syscalls.txt 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/syscalls.txt 2019-09-12 16:26:48.000000000 +0200 @@ -235,7 +235,7 @@ recvmmsg remap_file_pages remap removexattr -rename rename +rename rename renameat rename renameat2 rename request_key key diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.10.02/test/test-copy-file-range.c new/stress-ng-0.10.05/test/test-copy-file-range.c --- old/stress-ng-0.10.02/test/test-copy-file-range.c 2019-08-21 12:02:30.000000000 +0200 +++ new/stress-ng-0.10.05/test/test-copy-file-range.c 2019-09-12 16:26:48.000000000 +0200 @@ -31,4 +31,4 @@ int main(void) { return copy_file_range(0, NULL, 0, NULL, 1024, 0); -} +}
