Hello community,
here is the log from the commit of package stress-ng for openSUSE:Factory checked in at 2017-06-29 15:22:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/stress-ng (Old)
and /work/SRC/openSUSE:Factory/.stress-ng.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "stress-ng"
Thu Jun 29 15:22:12 2017 rev:15 rq:507020 version:0.08.07
Changes:
--------
--- /work/SRC/openSUSE:Factory/stress-ng/stress-ng.changes 2017-06-23 09:18:47.890760975 +0200
+++ /work/SRC/openSUSE:Factory/.stress-ng.new/stress-ng.changes 2017-06-29 15:22:23.371357876 +0200
@@ -1,0 +2,5 @@
+Thu Jun 29 09:45:32 UTC 2017 - pgeorgiadis(a)suse.com
+
+- update to version 0.08.07
+
+-------------------------------------------------------------------
Old:
----
stress-ng-0.08.06.tar.gz
New:
----
stress-ng-0.08.07.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ stress-ng.spec ++++++
--- /var/tmp/diff_new_pack.JMysHl/_old 2017-06-29 15:22:24.991128919 +0200
+++ /var/tmp/diff_new_pack.JMysHl/_new 2017-06-29 15:22:24.995128353 +0200
@@ -18,7 +18,7 @@
Name: stress-ng
-Version: 0.08.06
+Version: 0.08.07
Release: 0
Summary: Tool to load and stress a computer
License: GPL-2.0
++++++ stress-ng-0.08.06.tar.gz -> stress-ng-0.08.07.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/Makefile new/stress-ng-0.08.07/Makefile
--- old/stress-ng-0.08.06/Makefile 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/Makefile 2017-06-28 12:10:09.000000000 +0200
@@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
-VERSION=0.08.06
+VERSION=0.08.07
#
# Codename "harmful hardware harasser"
#
@@ -273,7 +273,8 @@
HAVE_VECMATH=0 HAVE_ATOMIC=0 HAVE_LIB_SCTP=0 HAVE_ASM_NOP=0 \
HAVE_ALIGNED_64K=0 HAVE_ALIGNED_64=0 HAVE_ALIGNED_128=0 \
HAVE_AFFINITY=0 HAVE_MADVISE=0 HAVE_SEM_POSIX=0 HAVE_SEM_SYSV=0 \
- HAVE_MQ_POSIX=0 HAVE_MQ_SYSV=0 HAVE_SHM_SYSV=0
+ HAVE_MQ_POSIX=0 HAVE_MQ_SYSV=0 HAVE_SHM_SYSV=0 HAVE_FANOTIFY=0 \
+ HAVE_INOTIFY=0
#
# Load in current config; use 'make clean' to clear this
@@ -523,6 +524,22 @@
endif
endif
+ifndef $(HAVE_FANOTIFY)
+HAVE_FANOTIFY = $(shell $(MAKE) --no-print-directory $(HAVE_NOT) have_fanotify)
+ifeq ($(HAVE_FANOTIFY),1)
+ CONFIG_CFLAGS += -DHAVE_FANOTIFY
+$(info autoconfig: using fanotify)
+endif
+endif
+
+ifndef $(HAVE_INOTIFY)
+HAVE_INOTIFY = $(shell $(MAKE) --no-print-directory $(HAVE_NOT) have_inotify)
+ifeq ($(HAVE_INOTIFY),1)
+ CONFIG_CFLAGS += -DHAVE_INOTIFY
+$(info autoconfig: using inotify)
+endif
+endif
+
endif
endif
@@ -905,7 +922,7 @@
#
# check if we can build using SYSV shared memory
#
-.PHONY: have_shm_sysv_
+.PHONY: have_shm_sysv
have_shm_sysv: test-shm-sysv.c
@$(CC) $(CPPFLAGS) test-shm-sysv.c -o test-shm-sysv 2> /dev/null || true
@if [ -f test-shm-sysv ]; then \
@@ -916,6 +933,32 @@
@rm -rf test-shm-sysv
#
+# check if we can build using fanotify
+#
+.PHONY: have_fanotify
+have_fanotify: test-fanotify.c
+ @$(CC) $(CPPFLAGS) test-fanotify.c -o test-fanotify 2> /dev/null || true
+ @if [ -f test-fanotify ]; then \
+ echo 1 ;\
+ else \
+ echo 0 ;\
+ fi
+ @rm -rf test-fanotify
+
+#
+# check if we can build using inotify
+#
+.PHONY: have_inotify
+have_inotify: test-inotify.c
+ @$(CC) $(CPPFLAGS) test-inotify.c -o test-inotify 2> /dev/null || true
+ @if [ -f test-inotify ]; then \
+ echo 1 ;\
+ else \
+ echo 0 ;\
+ fi
+ @rm -rf test-inotify
+
+#
# extract the PER_* personality enums
#
personality.h:
@@ -967,7 +1010,7 @@
test-aligned-128.c usr.bin.pulseaudio.eg perf-event.c \
test-affinity.c test-madvise.c test-sem-posix.c \
test-sem-sysv.c test-mq-posix.c test-mq-sysv.c \
- test-shm-sysv.c \
+ test-shm-sysv.c test-fanotify.c test-inotify.c \
snapcraft smatchify.sh config TODO \
example-jobs stress-ng-$(VERSION)
tar -zcf stress-ng-$(VERSION).tar.gz stress-ng-$(VERSION)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-cyclic.c new/stress-ng-0.08.07/stress-cyclic.c
--- old/stress-ng-0.08.06/stress-cyclic.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-cyclic.c 2017-06-28 12:10:09.000000000 +0200
@@ -79,7 +79,7 @@
uint64_t cyclic_sleep;
cyclic_sleep = get_uint64(opt);
- check_range_bytes("cyclic-sleep", cyclic_sleep,
+ check_range("cyclic-sleep", cyclic_sleep,
1, NANOSECS);
set_setting("cyclic-sleep", TYPE_ID_UINT64, &cyclic_sleep);
}
@@ -107,7 +107,7 @@
int32_t cyclic_prio;
cyclic_prio = get_int32(opt);
- check_range_bytes("cyclic-prio", cyclic_prio, 1, 100);
+ check_range("cyclic-prio", cyclic_prio, 1, 100);
set_setting("cyclic-prio", TYPE_ID_INT32, &cyclic_prio);
}
@@ -116,7 +116,7 @@
uint64_t cyclic_dist;
cyclic_dist = get_uint64(opt);
- check_range_bytes("cyclic-dist", cyclic_dist, 1, 10000000);
+ check_range("cyclic-dist", cyclic_dist, 1, 10000000);
set_setting("cyclic-dist", TYPE_ID_UINT64, &cyclic_dist);
}
@@ -262,6 +262,46 @@
return 0;
}
+#if _POSIX_C_SOURCE >= 200112L
+/*
+ * stress_cyclic_pselect()
+ * measure latencies with pselect sleep
+ */
+static int stress_cyclic_pselect(
+ const args_t *args,
+ rt_stats_t *rt_stats,
+ uint64_t cyclic_sleep)
+{
+#if defined(__linux__)
+ struct timespec t1, t2, t;
+ int ret;
+
+ (void)args;
+
+ t.tv_sec = cyclic_sleep / NANOSECS;
+ t.tv_nsec = cyclic_sleep % NANOSECS;
+ clock_gettime(CLOCK_REALTIME, &t1);
+ ret = pselect(0, NULL, NULL,NULL, &t, NULL);
+ clock_gettime(CLOCK_REALTIME, &t2);
+ if (ret == 0) {
+ int64_t delta_ns;
+
+ delta_ns = ((t2.tv_sec - t1.tv_sec) * NANOSECS) + (t2.tv_nsec - t1.tv_nsec);
+ delta_ns -= cyclic_sleep;
+
+ if (rt_stats->index < MAX_SAMPLES)
+ rt_stats->latencies[rt_stats->index++] = delta_ns;
+
+ rt_stats->ns += (double)delta_ns;
+ }
+#else
+ (void)args;
+ (void)rt_stats;
+ (void)cyclic_sleep;
+#endif
+ return 0;
+}
+#endif
#if defined(__linux__)
static struct timespec itimer_time;
@@ -435,6 +475,9 @@
{ "itimer", stress_cyclic_itimer },
{ "poll", stress_cyclic_poll },
{ "posix_ns", stress_cyclic_posix_nanosleep },
+#if _POSIX_C_SOURCE >= 200112L
+ { "pselect", stress_cyclic_pselect },
+#endif
{ NULL, NULL }
};
@@ -601,9 +644,11 @@
rlim.rlim_max = timeout;
(void)setrlimit(RLIMIT_CPU, &rlim);
+#if defined(RLIMIT_RTTIME)
rlim.rlim_cur = 1000000 * timeout;
rlim.rlim_max = 1000000 * timeout;
(void)setrlimit(RLIMIT_RTTIME, &rlim);
+#endif
if (stress_sighandler(args->name, SIGXCPU, stress_rlimit_handler, &old_action_xcpu) < 0)
goto tidy;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-dnotify.c new/stress-ng-0.08.07/stress-dnotify.c
--- old/stress-ng-0.08.06/stress-dnotify.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-dnotify.c 2017-06-28 12:10:09.000000000 +0200
@@ -23,7 +23,7 @@
*/
#include "stress-ng.h"
-#if defined(__linux__)
+#if defined(__linux__) && defined(F_NOTIFY)
#include <sys/select.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-dup.c new/stress-ng-0.08.07/stress-dup.c
--- old/stress-ng-0.08.06/stress-dup.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-dup.c 2017-06-28 12:10:09.000000000 +0200
@@ -81,6 +81,14 @@
pr_fail_err("dup2 with same fds");
break;
}
+#if defined(F_DUPFD)
+ /* POSIX.1-2001 fcntl() */
+
+ (void)close(fds[n]);
+ fds[n] = fcntl(fds[0], F_DUPFD, fds[0]);
+ if (fds[n] < 0)
+ break;
+#endif
if (!g_keep_stressing_flag)
break;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-fanotify.c new/stress-ng-0.08.07/stress-fanotify.c
--- old/stress-ng-0.08.06/stress-fanotify.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-fanotify.c 2017-06-28 12:10:09.000000000 +0200
@@ -23,7 +23,7 @@
*/
#include "stress-ng.h"
-#if defined(__linux__)
+#if defined(HAVE_FANOTIFY)
#include <mntent.h>
#include <sys/select.h>
@@ -56,7 +56,7 @@
return 0;
}
-#if defined(__linux__)
+#if defined(HAVE_FANOTIFY)
/*
* fanotify_event_init()
* initialize fanotify
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-get.c new/stress-ng-0.08.07/stress-get.c
--- old/stress-ng-0.08.06/stress-get.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-get.c 2017-06-28 12:10:09.000000000 +0200
@@ -32,9 +32,9 @@
#include <sys/timex.h>
#endif
-#define check_do_run() \
+#define check_do_run() \
if (!g_keep_stressing_flag) \
- break; \
+ break; \
#define GIDS_MAX (1024)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-inotify.c new/stress-ng-0.08.07/stress-inotify.c
--- old/stress-ng-0.08.06/stress-inotify.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-inotify.c 2017-06-28 12:10:09.000000000 +0200
@@ -26,7 +26,7 @@
*/
#include "stress-ng.h"
-#if defined(__linux__) && NEED_GLIBC(2,9,0)
+#if defined(HAVE_INOTIFY) && NEED_GLIBC(2,9,0)
#include <sys/select.h>
#include <sys/inotify.h>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-netlink-proc.c new/stress-ng-0.08.07/stress-netlink-proc.c
--- old/stress-ng-0.08.06/stress-netlink-proc.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-netlink-proc.c 2017-06-28 12:10:09.000000000 +0200
@@ -99,6 +99,9 @@
case PROC_EVENT_FORK:
case PROC_EVENT_EXEC:
case PROC_EVENT_EXIT:
+ case PROC_EVENT_UID:
+ case PROC_EVENT_SID:
+
#endif
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,9,0)
case PROC_EVENT_COREDUMP:
@@ -106,6 +109,9 @@
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
case PROC_EVENT_COMM:
#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
+ case PROC_EVENT_PTRACE:
+#endif
inc_counter(args);
break;
default:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-ng.1 new/stress-ng-0.08.07/stress-ng.1
--- old/stress-ng-0.08.06/stress-ng.1 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-ng.1 2017-06-28 12:10:09.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 "June 1, 2017"
+.TH STRESS-NG 1 "June 28, 2017"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@@ -983,7 +983,9 @@
sleep for the specified time using the POSIX nanosleep(2) high
resolution nanosleep.
T}
-
+pselect T{
+sleep for the specified time using pselect(2) with null file descriptors.
+T}
.TE
.TP
.B \-\-cyclic\-policy [ fifo | rr ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-ng.c new/stress-ng-0.08.07/stress-ng.c
--- old/stress-ng-0.08.06/stress-ng.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-ng.c 2017-06-28 12:10:09.000000000 +0200
@@ -3488,6 +3488,8 @@
int32_t ionice_level = UNDEFINED; /* ionice level */
int32_t i;
uint32_t class = 0;
+ const uint32_t cpus_online = stress_get_processors_online();
+ const uint32_t cpus_configured = stress_get_processors_configured();
/* --exec stressor uses this to exec itself and then exit early */
if ((argc == 2) && !strcmp(argv[1], "--exec-exit"))
@@ -3561,10 +3563,10 @@
log_system_info();
log_system_mem_info();
- pr_dbg("%" PRId32 " processors online, %" PRId32
- " processors configured\n",
- stress_get_processors_online(),
- stress_get_processors_configured());
+ pr_dbg("%" PRId32 " processor%s online, %" PRId32
+ " processor%s configured\n",
+ cpus_online, cpus_online == 1 ? "" : "s",
+ cpus_configured, cpus_configured == 1 ? "" : "s");
/*
* These two options enable all the stressors
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-rmap.c new/stress-ng-0.08.07/stress-rmap.c
--- old/stress-ng-0.08.06/stress-rmap.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-rmap.c 2017-06-28 12:10:09.000000000 +0200
@@ -165,7 +165,7 @@
}
/*
- * Spawn of children workers
+ * Spawn children workers
*/
for (i = 0; i < RMAP_CHILD_MAX; i++) {
pids[i] = fork();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-socket-fd.c new/stress-ng-0.08.07/stress-socket-fd.c
--- old/stress-ng-0.08.06/stress-socket-fd.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-socket-fd.c 2017-06-28 12:10:09.000000000 +0200
@@ -134,17 +134,18 @@
static void stress_socket_client(
const args_t *args,
const pid_t ppid,
- const size_t max_fd,
+ const ssize_t max_fd,
const int socket_fd_port)
{
struct sockaddr *addr;
(void)setpgid(0, g_pgrp);
stress_parent_died_alarm();
+ set_proc_name("sfd-client");
do {
int fd, retries = 0, fds[max_fd];
- size_t i;
+ ssize_t i;
socklen_t addr_len = 0;
retry:
if (!g_keep_stressing_flag) {
@@ -201,7 +202,7 @@
const args_t *args,
const pid_t pid,
const pid_t ppid,
- const size_t max_fd,
+ const ssize_t max_fd,
const int socket_fd_port)
{
int fd, status;
@@ -213,6 +214,7 @@
int rc = EXIT_SUCCESS;
(void)setpgid(pid, g_pgrp);
+ set_proc_name("sfd-server");
if (stress_sig_stop_stressing(args->name, SIGALRM)) {
rc = EXIT_FAILURE;
@@ -247,7 +249,7 @@
do {
int sfd = accept(fd, (struct sockaddr *)NULL, NULL);
if (sfd >= 0) {
- size_t i;
+ ssize_t i;
for (i = 0; i < max_fd; i++) {
int newfd;
@@ -266,6 +268,7 @@
break;
}
(void)close(newfd);
+ msgs++;
}
}
(void)close(sfd);
@@ -297,13 +300,25 @@
int stress_sockfd(const args_t *args)
{
pid_t pid, ppid = getppid();
- const size_t max_fd = stress_get_file_limit();
+ ssize_t max_fd = stress_get_file_limit();
int socket_fd_port = DEFAULT_SOCKET_FD_PORT;
(void)get_setting("sockfd-port", &socket_fd_port);
- pr_dbg("%s: process [%d] using socket port %d\n",
- args->name, args->pid, socket_fd_port + args->instance);
+ /*
+ * When run as root, we really don't want to use up all
+ * the file descriptors. Limit ourselves to a head room
+ * so that we don't ever run out of memory
+ */
+ if (geteuid() == 0) {
+ max_fd -= 64;
+ max_fd /= args->num_instances ? args->num_instances : 1;
+ if (max_fd < 0)
+ max_fd = 1;
+ }
+
+ pr_dbg("%s: process [%d] using socket port %d and %zd file descriptors\n",
+ args->name, args->pid, socket_fd_port + args->instance, max_fd);
again:
pid = fork();
if (pid < 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/stress-softlockup.c new/stress-ng-0.08.07/stress-softlockup.c
--- old/stress-ng-0.08.06/stress-softlockup.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/stress-softlockup.c 2017-06-28 12:10:09.000000000 +0200
@@ -167,9 +167,11 @@
rlim.rlim_max = timeout;
(void)setrlimit(RLIMIT_CPU, &rlim);
+#if defined(RLIMIT_RTTIME)
rlim.rlim_cur = 1000000 * timeout;
rlim.rlim_max = 1000000 * timeout;
(void)setrlimit(RLIMIT_RTTIME, &rlim);
+#endif
if (stress_sighandler(args->name, SIGXCPU, stress_rlimit_handler, &old_action_xcpu) < 0)
goto tidy;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/test-fanotify.c new/stress-ng-0.08.07/test-fanotify.c
--- old/stress-ng-0.08.06/test-fanotify.c 1970-01-01 01:00:00.000000000 +0100
+++ new/stress-ng-0.08.07/test-fanotify.c 2017-06-28 12:10:09.000000000 +0200
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2012-2017 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * This code is a complete clean re-write of the stress tool by
+ * Colin Ian King <colin.king(a)canonical.com> and attempts to be
+ * backwardly compatible with the stress tool by Amos Waterland
+ * <apw(a)rossby.metr.ou.edu> but has more stress tests and more
+ * functionality.
+ */
+#include "stress-ng.h"
+
+#if !defined(__linux__)
+#error requires linux to build
+#endif
+
+#include <mntent.h>
+#include <sys/select.h>
+#include <sys/fanotify.h>
+
+#if !defined(FAN_MARK_ADD)
+#error missing fnotify FAN_MARK_ADD flag
+#endif
+
+#if !defined(FAN_MARK_MOUNT)
+#error missing fnotify FAN_MARK_MOUNT flag
+#endif
+
+#if !defined(FAN_ACCESS)
+#error missing fnotify FAN_ACCESS flag
+#endif
+
+#if !defined(FAN_MODIFY)
+#error missing fnotify FAN_MODIFY flag
+#endif
+
+#if !defined(FAN_OPEN)
+#error missing fnotify FAN_OPEN flag
+#endif
+
+#if !defined(FAN_CLOSE)
+#error missing fnotify FAN_CLOSE flag
+#endif
+
+#if !defined(FAN_ONDIR)
+#error missing fnotify FAN_ONDIR flag
+#endif
+
+#if !defined(FAN_EVENT_ON_CHILD)
+#error missing fnotify FAN_EVENT_ON_CHILD flag
+#endif
+
+#if !defined(FAN_EVENT_OK)
+#error missing fnotify FAN_EVENT_OK macro
+#endif
+
+#if !defined(FAN_NOFD)
+#error missing fnotify FAN_NOFD macro
+#endif
+
+#define BUFFER_SIZE (4096)
+
+int main(void)
+{
+ int fan_fd, ret;
+ size_t len;
+ struct fanotify_event_metadata *metadata;
+ void *buffer;
+
+ ret = posix_memalign(&buffer, BUFFER_SIZE, BUFFER_SIZE);
+ if (ret != 0 || buffer == NULL)
+ return -1;
+
+ fan_fd = fanotify_init(0, 0);
+ if (fan_fd < 0)
+ return -1;
+
+ ret = fanotify_mark(fan_fd, FAN_MARK_ADD | FAN_MARK_MOUNT,
+ FAN_ACCESS| FAN_MODIFY | FAN_OPEN | FAN_CLOSE |
+ FAN_ONDIR | FAN_EVENT_ON_CHILD, AT_FDCWD, "/");
+ (void)ret;
+
+ len = read(fan_fd, (void *)buffer, BUFFER_SIZE);
+ metadata = (struct fanotify_event_metadata *)buffer;
+
+ while (FAN_EVENT_OK(metadata, len)) {
+ metadata = FAN_EVENT_NEXT(metadata, len);
+ }
+
+ free(buffer);
+ (void)close(fan_fd);
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/test-inotify.c new/stress-ng-0.08.07/test-inotify.c
--- old/stress-ng-0.08.06/test-inotify.c 1970-01-01 01:00:00.000000000 +0100
+++ new/stress-ng-0.08.07/test-inotify.c 2017-06-28 12:10:09.000000000 +0200
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2012-2017 Canonical, Ltd.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * This code is a complete clean re-write of the stress tool by
+ * Colin Ian King <colin.king(a)canonical.com> and attempts to be
+ * backwardly compatible with the stress tool by Amos Waterland
+ * <apw(a)rossby.metr.ou.edu> but has more stress tests and more
+ * functionality.
+ */
+#include <unistd.h>
+
+#if !defined(__linux__)
+#error requires linux to build
+#endif
+
+#include <sys/select.h>
+#include <sys/inotify.h>
+
+#if !defined(IN_DELETE_SELF)
+#error missing inotify IN_DELETE_SELF flag
+#endif
+
+#if !defined(IN_MOVE_SELF)
+#error missing inotify IN_MOVE_SELF flag
+#endif
+
+#if !defined(IN_MOVED_TO)
+#error missing inotify IN_MOVED_TO flag
+#endif
+
+#if !defined(IN_MOVED_FROM)
+#error missing inotify IN_MOVED_FROM flag
+#endif
+
+#if !defined(IN_ATTRIB)
+#error missing inotify IN_ATTRIB flag
+#endif
+
+#if !defined(IN_ACCESS)
+#error missing inotify IN_ACCESS flag
+#endif
+
+#if !defined(IN_MODIFY)
+#error missing inotify IN_MODIFY flag
+#endif
+
+#if !defined(IN_CREATE)
+#error missing inotify IN_CREATE flag
+#endif
+
+#if !defined(IN_OPEN)
+#error missing inotify IN_OPEN flag
+#endif
+
+#if !defined(IN_CLOSE_WRITE)
+#error missing inotify IN_CLOSE_WRITE flag
+#endif
+
+#if !defined(IN_CLOSE_NOWRITE)
+#error missing inotify IN_CLOSE_NOWRITE flag
+#endif
+
+#if !defined(IN_DELETE)
+#error missing inotify IN_DELETE flag
+#endif
+
+#if !defined(IN_DELETE_SELF)
+#error missing inotify IN_DELETE_SELF flag
+#endif
+
+#define BUFFER_SIZE (4096)
+
+int main(void)
+{
+ int fd, ret, wd;
+ ssize_t len, i = 0;
+ char buffer[1024];
+
+ fd = inotify_init();
+ if (fd < 0)
+ return -1;
+
+ wd = inotify_add_watch(fd, "/", IN_ACCESS);
+
+ len = read(fd, buffer, sizeof(buffer));
+ if (len < 0)
+ return -1;
+
+ while ((i >= 0) && (i <= len - (ssize_t)sizeof(struct inotify_event))) {
+ struct inotify_event *event = (struct inotify_event *)&buffer[i];
+ i += sizeof(struct inotify_event) + event->len;
+ }
+
+ (void)inotify_rm_watch(fd, wd);
+ (void)close(fd);
+ return 0;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/test-mq-sysv.c new/stress-ng-0.08.07/test-mq-sysv.c
--- old/stress-ng-0.08.06/test-mq-sysv.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/test-mq-sysv.c 2017-06-28 12:10:09.000000000 +0200
@@ -67,7 +67,7 @@
strncpy(msg.msg, "TESTMSG", sizeof(msg.msg));
msg.mtype = 1;
ret = msgsnd(msgq_id, &msg, sizeof(msg.msg), 0);
- (void)msg;
+ (void)ret;
ret = msgrcv(msgq_id, &msg, sizeof(msg.msg), 0, 0);
(void)ret;
ret = msgctl(msgq_id, IPC_STAT, &buf);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/stress-ng-0.08.06/test-sem-posix.c new/stress-ng-0.08.07/test-sem-posix.c
--- old/stress-ng-0.08.06/test-sem-posix.c 2017-06-21 18:34:24.000000000 +0200
+++ new/stress-ng-0.08.07/test-sem-posix.c 2017-06-28 12:10:09.000000000 +0200
@@ -46,11 +46,17 @@
* based code
*/
ret = sem_init(&sem, 1, 1);
+ (void)ret;
ret = sem_wait(&sem);
+ (void)ret;
ret = sem_post(&sem);
+ (void)ret;
ret = sem_trywait(&sem);
+ (void)ret;
ret = sem_timedwait(&sem, &timeout);
+ (void)ret;
ret = sem_destroy(&sem);
+ (void)ret;
return 0;
}