From owner-svn-src-user@freebsd.org Thu Jun 22 07:35:07 2017 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DCD5FDA83BC for ; Thu, 22 Jun 2017 07:35:07 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9235D710B2; Thu, 22 Jun 2017 07:35:07 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v5M7Z6O4092978; Thu, 22 Jun 2017 07:35:06 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v5M7Z6UL092977; Thu, 22 Jun 2017 07:35:06 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201706220735.v5M7Z6UL092977@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Thu, 22 Jun 2017 07:35:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r320225 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 22 Jun 2017 07:35:08 -0000 Author: pho Date: Thu Jun 22 07:35:05 2017 New Revision: 320225 URL: https://svnweb.freebsd.org/changeset/base/320225 Log: Preserve stdout and stderr for debugging. Fix style while here. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/syscall4.sh Modified: user/pho/stress2/misc/syscall4.sh ============================================================================== --- user/pho/stress2/misc/syscall4.sh Thu Jun 22 07:14:37 2017 (r320224) +++ user/pho/stress2/misc/syscall4.sh Thu Jun 22 07:35:05 2017 (r320225) @@ -61,39 +61,34 @@ kldstat -v | grep -q sysvshm || $stress2tools/kldload kldstat -v | grep -q aio || $stress2tools/kldload.sh aio kldstat -v | grep -q mqueuefs || $stress2tools/kldload.sh mqueuefs -mount | grep $mntpoint | grep -q /dev/md && umount -f $mntpoint -mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart +mount | grep -q "on $mntpoint " && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart mdconfig -a -t swap -s 2g -u $mdstart || exit 1 bsdlabel -w md$mdstart auto -newfs $newfs_flags md${mdstart}$part > /dev/null +newfs $newfs_flags -n md${mdstart}$part > /dev/null mount /dev/md${mdstart}$part $mntpoint chmod 777 $mntpoint -daemon sh -c "(cd $odir/../testcases/swap; ./swap -t 10m -i 20 -k)" > \ +[ -z "$noswap" ] && + daemon sh -c "(cd $odir/../testcases/swap; ./swap -t 10m -i 20 -k)" > \ /dev/null sleeptime=${sleeptime:-12} st=`date '+%s'` while [ $((`date '+%s'` - st)) -lt $((10 * sleeptime)) ]; do - (cd $mntpoint; /tmp/syscall4 $* ) & + (cd $mntpoint; /tmp/syscall4 $* 1>>stdout 2>>stderr) & start=`date '+%s'` while [ $((`date '+%s'` - start)) -lt $sleeptime ]; do pgrep syscall4 > /dev/null || break sleep .5 done - while pkill -9 syscall4; do - : - done + while pkill -9 syscall4; do :; done wait ipcs | grep nobody | awk '/^(q|m|s)/ {print " -" $1, $2}' | xargs -L 1 ipcrm done -while pkill -9 swap; do - : -done -while pkill -9 syscall4; do - : -done +while pkill -9 swap; do :; done +while pkill -9 syscall4; do :; done for i in `jot 10`; do mount | grep -q md${mdstart}$part && \ @@ -106,9 +101,9 @@ if mount | grep -q md${mdstart}$part; then exit 1 fi rm -f /tmp/syscall4 -exit +exit 0 EOF -#include +#include #include #include #include @@ -122,6 +117,10 @@ EOF #include #include #include +#if defined(__FreeBSD__) +#include +#define __NP__ +#endif #include #include #include @@ -150,17 +149,17 @@ static int ignore[] = { SYS_sigwaitinfo, }; -int fd[900], fds[2], kq, socketpr[2]; +static int fd[900], fds[2], kq, socketpr[2]; #ifndef nitems #define nitems(x) (sizeof((x)) / sizeof((x)[0])) #endif -#define N (128 * 1024 / (int)sizeof(u_int32_t)) +#define N 4096 #define MAGIC 1664 #define RUNTIME 120 #define THREADS 50 -u_int32_t r[N]; -int magic1, syscallno, magic2; +static uint32_t r[N]; +static int magic1, syscallno, magic2; static int random_int(int mi, int ma) @@ -170,10 +169,10 @@ random_int(int mi, int ma) static void hand(int i __unused) { /* handler */ - _exit(1); + exit(1); } -unsigned long +static unsigned long makearg(void) { unsigned int i; @@ -198,27 +197,37 @@ makearg(void) return(val); } -void * +static void * test(void *arg __unused) { - - FTS *fts; - FTSENT *p; - int ftsoptions, i; + FTS *fts; + FTSENT *p; + time_t start; + int ftsoptions, i, numfiles; char *args[] = { "/dev", "/proc", - "/compat/linux/proc", - "/media", + "mnt2", ".", NULL, }; +#ifdef __NP__ + pthread_set_name_np(pthread_self(), __func__); +#endif + numfiles = 0; ftsoptions = FTS_PHYSICAL; - - for (;;) { + start = time(NULL); + while (time(NULL) - start < 2) { for (i = 0; i < N; i++) r[i] = arc4random(); + + if (pipe(fds) == -1) + err(1, "pipe()"); + if (socketpair(PF_UNIX, SOCK_SEQPACKET, 0, socketpr) == -1) + err(1, "socketpair()"); + kq = kqueue(); + if ((fts = fts_open(args, ftsoptions, NULL)) == NULL) err(1, "fts_open"); @@ -227,20 +236,21 @@ test(void *arg __unused) if (fd[i] > 0) close(fd[i]); if ((fd[i] = open(p->fts_path, O_RDWR)) == -1) - if ((fd[i] = open(p->fts_path, O_WRONLY)) == -1) - if ((fd[i] = open(p->fts_path, O_RDONLY)) == -1) + if ((fd[i] = open(p->fts_path, O_WRONLY)) == + -1) + if ((fd[i] = open(p->fts_path, + O_RDONLY)) == -1) continue; i++; i = i % nitems(fd); + if (numfiles++ < 10) { + fprintf(stderr, "%d: pts_path = %s\n", + numfiles, p->fts_path); + } } if (fts_close(fts) == -1) - err(1, "fts_close()"); - if (pipe(fds) == -1) - err(1, "pipe()"); - if (socketpair(PF_UNIX, SOCK_SEQPACKET, 0, socketpr) == -1) - err(1, "socketpair()"); - kq = kqueue(); + warn("fts_close()"); sleep(1); close(socketpr[0]); close(socketpr[1]); @@ -248,18 +258,21 @@ test(void *arg __unused) close(fds[1]); close(kq); } - return(0); + return(NULL); } -void * +static void * calls(void *arg __unused) { + time_t start; int i, j, num; unsigned long arg1, arg2, arg3, arg4, arg5, arg6, arg7; - for (i = 0;; i++) { - if (i == 0) - usleep(1000); +#ifdef __NP__ + pthread_set_name_np(pthread_self(), __func__); +#endif + start = time(NULL); + for (i = 0; time(NULL) - start < 10; i++) { num = syscallno; while (num == 0) { num = random_int(0, SYS_MAXSYSCALL); @@ -278,7 +291,8 @@ calls(void *arg __unused) arg7 = makearg(); #if 0 /* Debug mode */ - fprintf(stderr, "%2d : syscall(%3d, %lx, %lx, %lx, %lx, %lx, %lx, %lx)\n", + fprintf(stderr, "%2d : syscall(%3d, %lx, %lx, %lx, %lx, %lx," + " %lx, %lx)\n", i, num, arg1, arg2, arg3, arg4, arg5, arg6, arg7); sleep(2); #endif @@ -286,10 +300,10 @@ calls(void *arg __unused) syscall(num, arg1, arg2, arg3, arg4, arg5, arg6, arg7); num = 0; if (magic1 != MAGIC || magic2 != MAGIC) - _exit(1); + exit(1); } - return (0); + return (NULL); } int @@ -301,7 +315,6 @@ main(int argc, char **argv) time_t start; int e, j; - magic1 = magic2 = MAGIC; if ((pw = getpwnam("nobody")) == NULL) err(1, "failed to resolve nobody"); @@ -340,27 +353,32 @@ main(int argc, char **argv) syscallno = atoi(argv[1]); for (j = 0; j < (int)nitems(ignore); j++) if (syscallno == ignore[j]) - errx(0, "syscall #%d is on the ignore list.", syscallno); + errx(0, "syscall #%d is on the ignore list.", + syscallno); } - if (daemon(0, 0) == -1) + if (daemon(1, 1) == -1) err(1, "daemon()"); start = time(NULL); while ((time(NULL) - start) < RUNTIME) { if (fork() == 0) { - arc4random_stir(); if ((e = pthread_create(&rp, NULL, test, NULL)) != 0) errc(1, e, "pthread_create"); usleep(1000); for (j = 0; j < THREADS; j++) - if ((e = pthread_create(&cp[j], NULL, calls, NULL)) != 0) + if ((e = pthread_create(&cp[j], NULL, calls, + NULL)) != 0) errc(1, e, "pthread_create"); for (j = 0; j < THREADS; j++) pthread_join(cp[j], NULL); - _exit(0); + + if ((e = pthread_kill(rp, SIGINT)) != 0) + errc(1, e, "pthread_kill"); + exit(0); } wait(NULL); + usleep(10000); } return (0);