From owner-svn-src-user@FreeBSD.ORG Tue Jul 9 09:31:27 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 9868FCC5; Tue, 9 Jul 2013 09:31:27 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 71A961372; Tue, 9 Jul 2013 09:31:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r699VRwJ034139; Tue, 9 Jul 2013 09:31:27 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r699VRgd034138; Tue, 9 Jul 2013 09:31:27 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201307090931.r699VRgd034138@svn.freebsd.org> From: Peter Holm Date: Tue, 9 Jul 2013 09:31:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r253080 - user/pho/stress2/testcases/mkfifo 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.14 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: Tue, 09 Jul 2013 09:31:27 -0000 Author: pho Date: Tue Jul 9 09:31:26 2013 New Revision: 253080 URL: http://svnweb.freebsd.org/changeset/base/253080 Log: Added missing resource reservation and timeout to fifo read and write. Sponsored by: EMC / Isilon storage division Modified: user/pho/stress2/testcases/mkfifo/mkfifo.c Modified: user/pho/stress2/testcases/mkfifo/mkfifo.c ============================================================================== --- user/pho/stress2/testcases/mkfifo/mkfifo.c Tue Jul 9 09:05:00 2013 (r253079) +++ user/pho/stress2/testcases/mkfifo/mkfifo.c Tue Jul 9 09:31:26 2013 (r253080) @@ -46,12 +46,22 @@ static char path[MAXPATHLEN+1]; #define NB (1 * 1024 * 1024) int bufsize; +int freespace; + +void +handler(int i __unused) +{ + _exit(0); +} static void reader(void) { int fd; int i, n, *buf; + setproctitle("reader"); + signal(SIGALRM, handler); + alarm(2); if ((fd = open(path, O_RDWR, 0600)) < 0) { unlink(path); err(1, "open(%s)", path); @@ -73,13 +83,17 @@ writer(void) { int i, *buf; int fd; + signal(SIGALRM, handler); + alarm(2); + + setproctitle("writer"); if ((fd = open(path, O_RDWR, 0600)) < 0) { unlink(path); err(1, "open(%s)", path); } if ((buf = malloc(bufsize)) == NULL) err(1, "malloc(%d), %s:%d", bufsize, __FILE__, __LINE__); - for (i = 0; i < bufsize / sizeof(int); i++) + for (i = 0; i < bufsize / (int)sizeof(int); i++) buf[i] = i; for (i = 0; i < NB; i+= bufsize) { @@ -96,6 +110,32 @@ writer(void) { int setup(int nb) { + int64_t bl; + int64_t in; + int64_t reserve_bl; + int64_t reserve_in; + + if (nb == 0) { + getdf(&bl, &in); + + /* Resource requirements: */ + reserve_in = 200 * op->incarnations; + reserve_bl = 2048 * op->incarnations; + freespace = (reserve_bl <= bl && reserve_in <= in); + if (!freespace) + reserve_bl = reserve_in = 0; + + if (op->verbose > 1) + printf("mkfifo(incarnations=%d). Free(%jdk, %jd), reserve(%jdk, %jd)\n", + op->incarnations, bl/1024, in, reserve_bl/1024, reserve_in); + reservedf(reserve_bl, reserve_in); + putval(freespace); + fflush(stdout); + } else { + freespace = getval(); + } + if (!freespace) + _exit(0); bufsize = 2 << random_int(2, 12); return (0); } @@ -132,7 +172,7 @@ test(void) if ((pid = fork()) == 0) { writer(); - exit(EXIT_SUCCESS); + _exit(EXIT_SUCCESS); } else if (pid > 0) { reader();