From owner-svn-src-user@freebsd.org  Sun May 13 11:31:33 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 42648FD6556
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Sun, 13 May 2018 11:31:33 +0000 (UTC) (envelope-from pho@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id E807D82EAD;
 Sun, 13 May 2018 11:31:32 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id B267F4E18;
 Sun, 13 May 2018 11:31:32 +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 w4DBVWCF031451;
 Sun, 13 May 2018 11:31:32 GMT (envelope-from pho@FreeBSD.org)
Received: (from pho@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4DBVWf7031450;
 Sun, 13 May 2018 11:31:32 GMT (envelope-from pho@FreeBSD.org)
Message-Id: <201805131131.w4DBVWf7031450@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org
 using -f
From: Peter Holm <pho@FreeBSD.org>
Date: Sun, 13 May 2018 11:31:32 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r333578 - user/pho/stress2/misc
X-SVN-Group: user
X-SVN-Commit-Author: pho
X-SVN-Commit-Paths: user/pho/stress2/misc
X-SVN-Commit-Revision: 333578
X-SVN-Commit-Repository: base
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.25
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 13 May 2018 11:31:33 -0000

Author: pho
Date: Sun May 13 11:31:32 2018
New Revision: 333578
URL: https://svnweb.freebsd.org/changeset/base/333578

Log:
  Added a simple sparse read test for r333576: "Detect and optimize reads from
  the hole on UFS".
  
  Sponsored by:	Dell EMC Isilon

Added:
  user/pho/stress2/misc/sparse.sh   (contents, props changed)

Added: user/pho/stress2/misc/sparse.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/pho/stress2/misc/sparse.sh	Sun May 13 11:31:32 2018	(r333578)
@@ -0,0 +1,76 @@
+#!/bin/sh
+#
+# Copyright (c) 2018 Dell EMC Isilon
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice unmodified, this list of conditions and the following
+#    disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# Test sparse file read
+# No problems seen.
+
+. ../default.cfg
+
+set -e
+mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint
+[ -c /dev/md$mdstart ] &&  mdconfig -d -u $mdstart
+mdconfig -a -t swap -s 5g -u $mdstart
+bsdlabel -w md$mdstart auto
+newfs $newfs_flags md${mdstart}$part > /dev/null
+mount /dev/md${mdstart}$part $mntpoint
+set +e
+
+in=$mntpoint/in
+out=$mntpoint/out
+
+size=`jot -r 1 1 2048`
+size=$((size * 1024 * 1024))
+truncate -s $size $in
+
+for i in `jot $(jot -r 1 10 100)`; do
+	bs=`jot -r 1 1 4096`
+	pos=`jot -r 1 0 $((size - bs))`
+	pos=$((pos / bs)) # in blocks
+	[ $((pos + bs)) -gt $size ] && { echo "seek error"; exit 1; }
+	dd if=/dev/random of=$in seek=$pos bs=$bs count=1 conv=notrunc \
+	    status=none
+done
+[ `stat -f%z $in` -ne $size ] && { ls -l $in; exit 1; }
+
+cp $in $out
+md1=`md5 < $in`
+md2=`md5 < $out`
+[ $md1 == $md2 ] && s=0 ||
+	{ echo "md5 differs: $in: $md1, $out: $md2"; s=1
+	ls -l $in $out; }
+rm -f $in $out
+for i in `jot 6`; do
+	mount | grep -q "on $mntpoint " || break
+	umount $mntpoint && break || sleep 10
+	[ $i -eq 6 ] &&
+	    { echo FATAL; fstat -mf $mntpoint; exit 1; }
+done
+mdconfig -d -u $mdstart
+exit $s

From owner-svn-src-user@freebsd.org  Sun May 13 13:15:35 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 753B2FDC2A4
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Sun, 13 May 2018 13:15:35 +0000 (UTC) (envelope-from pho@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 21DB572A32;
 Sun, 13 May 2018 13:15:35 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id F3D245EC1;
 Sun, 13 May 2018 13:15:34 +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 w4DDFYCa086140;
 Sun, 13 May 2018 13:15:34 GMT (envelope-from pho@FreeBSD.org)
Received: (from pho@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4DDFYl4086139;
 Sun, 13 May 2018 13:15:34 GMT (envelope-from pho@FreeBSD.org)
Message-Id: <201805131315.w4DDFYl4086139@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org
 using -f
From: Peter Holm <pho@FreeBSD.org>
Date: Sun, 13 May 2018 13:15:34 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r333582 - user/pho/stress2/misc
X-SVN-Group: user
X-SVN-Commit-Author: pho
X-SVN-Commit-Paths: user/pho/stress2/misc
X-SVN-Commit-Revision: 333582
X-SVN-Commit-Repository: base
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.25
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Sun, 13 May 2018 13:15:35 -0000

Author: pho
Date: Sun May 13 13:15:34 2018
New Revision: 333582
URL: https://svnweb.freebsd.org/changeset/base/333582

Log:
  Added a scenario which triggers threads stuck in pmc-sx.
  
  Sponsored by:	Dell EMC Isilon

Added:
  user/pho/stress2/misc/pmc2.sh   (contents, props changed)

Added: user/pho/stress2/misc/pmc2.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/pho/stress2/misc/pmc2.sh	Sun May 13 13:15:34 2018	(r333582)
@@ -0,0 +1,50 @@
+#!/bin/sh
+
+#
+# Copyright (c) 2017 Dell EMC Isilon
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+#
+# $FreeBSD$
+#
+
+# Page fault seen:
+# https://people.freebsd.org/~pho/stress/log/pmc2.txt
+
+# https://people.freebsd.org/~pho/stress/log/mmacy004.txt
+
+[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1
+
+. ../default.cfg
+
+kldstat -v | grep -q hwpmc  || { kldload hwpmc; loaded=1; }
+
+../misc/churn.sh &
+pid=$!
+while ! pgrep -q churn; do sleep .5; done
+pmcstat -P instructions -t churn -O /tmp/pmc2.log
+wait $pid
+rm /tmp/pmc2.log
+[ $loaded ] && kldunload hwpmc
+
+exit 0

From owner-svn-src-user@freebsd.org  Mon May 14 07:20:36 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 04605FDDB68
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Mon, 14 May 2018 07:20:36 +0000 (UTC) (envelope-from pho@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id A54C56F280;
 Mon, 14 May 2018 07:20:35 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8460D18F49;
 Mon, 14 May 2018 07:20:35 +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 w4E7KZGh035672;
 Mon, 14 May 2018 07:20:35 GMT (envelope-from pho@FreeBSD.org)
Received: (from pho@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4E7KZ3V035671;
 Mon, 14 May 2018 07:20:35 GMT (envelope-from pho@FreeBSD.org)
Message-Id: <201805140720.w4E7KZ3V035671@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org
 using -f
From: Peter Holm <pho@FreeBSD.org>
Date: Mon, 14 May 2018 07:20:35 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r333602 - user/pho/stress2/misc
X-SVN-Group: user
X-SVN-Commit-Author: pho
X-SVN-Commit-Paths: user/pho/stress2/misc
X-SVN-Commit-Revision: 333602
X-SVN-Commit-Repository: base
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.26
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 14 May 2018 07:20:36 -0000

Author: pho
Date: Mon May 14 07:20:34 2018
New Revision: 333602
URL: https://svnweb.freebsd.org/changeset/base/333602

Log:
  Added cleanup after test. Style fix.
  
  Sponsored by:	Dell EMC Isilon

Modified:
  user/pho/stress2/misc/pmc.sh

Modified: user/pho/stress2/misc/pmc.sh
==============================================================================
--- user/pho/stress2/misc/pmc.sh	Mon May 14 06:11:25 2018	(r333601)
+++ user/pho/stress2/misc/pmc.sh	Mon May 14 07:20:34 2018	(r333602)
@@ -34,15 +34,16 @@
 
 . ../default.cfg
 
-kldstat -v | grep -q hwpmc  || kldload hwpmc
+kldstat -v | grep -q hwpmc  || { kldload hwpmc; loaded=1; }
 
 for i in `jot 2`; do
-	pmcstat -P instructions  -O /tmp/sample.out.$i find /var -name not.there &
+	pmcstat -P instructions  -O /tmp/sample.out.$i find -x /var -name \
+	    not.there &
 done
 
 export runRUNTIME=5m
 (cd ..; ./run.sh vfs.cfg)
-
-for i in `jot 2`; do
-	wait
-done
+wait
+[ $loaded ] && kldunload hwpmc
+rm /tmp/sample.out.*
+exit 0

From owner-svn-src-user@freebsd.org  Mon May 14 17:49:42 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 42F21DFD157
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Mon, 14 May 2018 17:49:42 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id EB3787AE5D;
 Mon, 14 May 2018 17:49:41 +0000 (UTC) (envelope-from gjb@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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id C6C611F654;
 Mon, 14 May 2018 17:49:41 +0000 (UTC) (envelope-from gjb@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4EHnfZw059644;
 Mon, 14 May 2018 17:49:41 GMT (envelope-from gjb@FreeBSD.org)
Received: (from gjb@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4EHnfV5059643;
 Mon, 14 May 2018 17:49:41 GMT (envelope-from gjb@FreeBSD.org)
Message-Id: <201805141749.w4EHnfV5059643@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: gjb set sender to gjb@FreeBSD.org
 using -f
From: Glen Barber <gjb@FreeBSD.org>
Date: Mon, 14 May 2018 17:49:41 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r333609 - user/gjb/thermite
X-SVN-Group: user
X-SVN-Commit-Author: gjb
X-SVN-Commit-Paths: user/gjb/thermite
X-SVN-Commit-Revision: 333609
X-SVN-Commit-Repository: base
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.26
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Mon, 14 May 2018 17:49:42 -0000

Author: gjb
Date: Mon May 14 17:49:41 2018
New Revision: 333609
URL: https://svnweb.freebsd.org/changeset/base/333609

Log:
  Re-sync with the RE version of thermite, adding GCE_LICENSE support.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  user/gjb/thermite/thermite.sh

Modified: user/gjb/thermite/thermite.sh
==============================================================================
--- user/gjb/thermite/thermite.sh	Mon May 14 17:44:02 2018	(r333608)
+++ user/gjb/thermite/thermite.sh	Mon May 14 17:49:41 2018	(r333609)
@@ -437,6 +437,7 @@ upload_gce_image() {
 	chroot ${CHROOTDIR} make -C /usr/src/release \
 		GCE_BUCKET=${GCE_BUCKET} \
 		GCE_LOGIN_SKIP=1 \
+		GCE_LICENSE="${GCE_LICENSE}" \
 		gce-upload \
 		>> ${logdir}/${_build}.gce 2>&1
 	unset _build _conf GCE_BUCKET GCE_CONFIG_DIR GCE_CONFIG_PKG

From owner-svn-src-user@freebsd.org  Tue May 15 15:56:53 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 29DF7EE40D4
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Tue, 15 May 2018 15:56:53 +0000 (UTC) (envelope-from pho@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id C8F506CDE0;
 Tue, 15 May 2018 15:56:52 +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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id A6B4D5889;
 Tue, 15 May 2018 15:56:52 +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 w4FFuq4T037708;
 Tue, 15 May 2018 15:56:52 GMT (envelope-from pho@FreeBSD.org)
Received: (from pho@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4FFuqPd037707;
 Tue, 15 May 2018 15:56:52 GMT (envelope-from pho@FreeBSD.org)
Message-Id: <201805151556.w4FFuqPd037707@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org
 using -f
From: Peter Holm <pho@FreeBSD.org>
Date: Tue, 15 May 2018 15:56:52 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r333634 - user/pho/stress2/misc
X-SVN-Group: user
X-SVN-Commit-Author: pho
X-SVN-Commit-Paths: user/pho/stress2/misc
X-SVN-Commit-Revision: 333634
X-SVN-Commit-Repository: base
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.26
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 15 May 2018 15:56:53 -0000

Author: pho
Date: Tue May 15 15:56:52 2018
New Revision: 333634
URL: https://svnweb.freebsd.org/changeset/base/333634

Log:
  Added a new socketpair() test scenario.
  
  PR:		227285
  Obtained from:	jan.kokemueller@gmail.com

Added:
  user/pho/stress2/misc/socketpair3.sh   (contents, props changed)

Added: user/pho/stress2/misc/socketpair3.sh
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ user/pho/stress2/misc/socketpair3.sh	Tue May 15 15:56:52 2018	(r333634)
@@ -0,0 +1,144 @@
+#!/bin/sh
+
+# Bug 227285 - File descriptor passing does not work reliably on SMP system
+# (cache coherency issue?)
+
+# Original test scenario by: jan.kokemueller@gmail.com
+
+# $FreeBSD$
+
+# Page fault seen in WiP socket code.
+
+. ../default.cfg
+dir=/tmp
+odir=`pwd`
+cd $dir
+sed '1,/^EOF/d' < $odir/$0 > $dir/socketpair3.c
+mycc -o socketpair3 -Wall -Wextra -O0 -g socketpair3.c -lnv || exit 1
+rm -f socketpair3.c
+cd $odir
+
+for i in `jot 3`; do
+	$dir/socketpair3 &
+	pids="$pids $!"
+done
+s=0
+for i in $pids; do
+	wait $i
+	[ $? -ne 0 ] && s=1
+done
+[ -f socketpair3.core -a $s -eq 0 ] &&
+    { ls -l socketpair3.core; mv socketpair3.core /tmp; s=1; }
+
+rm -rf $dir/socketpair3
+exit $s
+
+EOF
+#include <sys/types.h>
+
+#include <sys/procdesc.h>
+#include <sys/socket.h>
+#include <sys/wait.h>
+
+#include <err.h>
+#include <poll.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+// From libnv.
+extern int fd_send(int sock, const int *fds, size_t nfds);
+extern int fd_recv(int sock, int *fds, size_t nfds);
+
+int main(void)
+{
+	pid_t pid;
+	time_t start;
+	int child_fd;
+	int sock[2];
+
+	start = time(NULL);
+	while (time(NULL) - start < 60) {
+		if (socketpair(PF_UNIX, SOCK_STREAM, 0, sock) < 0)
+			err(1, "socketpair");
+
+		pid = pdfork(&child_fd, PD_CLOEXEC);
+		if (pid < 0)
+			err(1, "pdfork");
+
+		if (pid == 0) {
+			ssize_t ret;
+			int sock_child[2];
+			int dummy = 0;
+
+			close(sock[0]);
+			if (socketpair(PF_UNIX, SOCK_STREAM, /**/
+			    0, sock_child) < 0)
+				err(1, "socketpair");
+
+			if (fd_send(sock[1], &sock_child[0], 1) != 0)
+				errx(1, "fd_send failed");
+#ifdef WORKAROUND
+			if (read(sock[1], &dummy, 1) != 1)
+				err(1, "write");
+#endif
+
+			close(sock_child[0]);
+
+			if (write(sock_child[1], &dummy, 1) != 1)
+				err(1, "write");
+
+			if ((ret = read(sock_child[1], &dummy, 1)) != 1)
+				errx(1, "read failed in child: %d",
+				    (int)ret);
+
+			close(sock_child[1]);
+
+			_exit(0);
+		}
+
+		close(sock[1]);
+
+		int sock_child;
+		uint8_t dummy;
+
+		if (fd_recv(sock[0], &sock_child, 1) != 0)
+			errx(1, "fd_recv failed");
+#ifdef WORKAROUND
+		if (write(sock[0], &dummy, 1) != 1)
+			err(1, "write");
+#endif
+
+		ssize_t ret;
+		if ((ret = read(sock_child, &dummy, 1)) != 1) {
+			int error;
+			socklen_t err_len = sizeof(error);
+
+			if (getsockopt(sock_child, SOL_SOCKET, SO_ERROR,
+			    &error, &err_len) < 0)
+				err(1, "getsockopt");
+
+			ssize_t ret2 = read(sock_child, &dummy, 1);
+
+			errx(1,
+			    "read failed in parent: %d, so_error: %s (%d), "
+			    "ret2: %d", (int)ret, strerror(error), error,
+			    (int)ret2);
+		}
+
+		if (write(sock_child, &dummy, 1) != 1)
+			err(1, "write");
+
+		close(sock_child);
+
+		struct pollfd pfd = { .fd = child_fd };
+		poll(&pfd, 1, -1);
+
+		close(child_fd);
+		close(sock[0]);
+	}
+
+	return (0);
+}

From owner-svn-src-user@freebsd.org  Tue May 15 16:45:38 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6D238EE73BE
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Tue, 15 May 2018 16:45:38 +0000 (UTC)
 (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net)
Received: from pdx.rh.CN85.dnsmgr.net (br1.CN84in.dnsmgr.net [69.59.192.140])
 (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
 (Client did not present a certificate)
 by mx1.freebsd.org (Postfix) with ESMTPS id C428178E8C;
 Tue, 15 May 2018 16:45:34 +0000 (UTC)
 (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net)
Received: from pdx.rh.CN85.dnsmgr.net (localhost [127.0.0.1])
 by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3) with ESMTP id w4FGjWI0096281;
 Tue, 15 May 2018 09:45:32 -0700 (PDT)
 (envelope-from freebsd@pdx.rh.CN85.dnsmgr.net)
Received: (from freebsd@localhost)
 by pdx.rh.CN85.dnsmgr.net (8.13.3/8.13.3/Submit) id w4FGjWZC096280;
 Tue, 15 May 2018 09:45:32 -0700 (PDT) (envelope-from freebsd)
From: "Rodney W. Grimes" <freebsd@pdx.rh.CN85.dnsmgr.net>
Message-Id: <201805151645.w4FGjWZC096280@pdx.rh.CN85.dnsmgr.net>
Subject: Re: svn commit: r333634 - user/pho/stress2/misc
In-Reply-To: <201805151556.w4FFuqPd037707@repo.freebsd.org>
To: Peter Holm <pho@freebsd.org>
Date: Tue, 15 May 2018 09:45:32 -0700 (PDT)
CC: src-committers@freebsd.org, svn-src-user@freebsd.org
Reply-To: rgrimes@freebsd.org
X-Mailer: ELM [version 2.4ME+ PL121h (25)]
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII
X-BeenThere: svn-src-user@freebsd.org
X-Mailman-Version: 2.1.26
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Tue, 15 May 2018 16:45:38 -0000

> Author: pho
> Date: Tue May 15 15:56:52 2018
> New Revision: 333634
> URL: https://svnweb.freebsd.org/changeset/base/333634
> 
> Log:
>   Added a new socketpair() test scenario.
>   
>   PR:		227285
>   Obtained from:	jan.kokemueller@gmail.com
> 
> Added:
>   user/pho/stress2/misc/socketpair3.sh   (contents, props changed)
> 
> Added: user/pho/stress2/misc/socketpair3.sh
> ==============================================================================
> --- /dev/null	00:00:00 1970	(empty, because file is newly added)
> +++ user/pho/stress2/misc/socketpair3.sh	Tue May 15 15:56:52 2018	(r333634)
> @@ -0,0 +1,144 @@
> +#!/bin/sh
> +

No copyright or license text at all?   

> +# Bug 227285 - File descriptor passing does not work reliably on SMP system
> +# (cache coherency issue?)
> +
> +# Original test scenario by: jan.kokemueller@gmail.com
> +
> +# $FreeBSD$
> +
> +# Page fault seen in WiP socket code.
> +
> +. ../default.cfg
> +dir=/tmp
> +odir=`pwd`
> +cd $dir
> +sed '1,/^EOF/d' < $odir/$0 > $dir/socketpair3.c
> +mycc -o socketpair3 -Wall -Wextra -O0 -g socketpair3.c -lnv || exit 1
> +rm -f socketpair3.c
> +cd $odir
> +
> +for i in `jot 3`; do
> +	$dir/socketpair3 &
> +	pids="$pids $!"
> +done
> +s=0
> +for i in $pids; do
> +	wait $i
> +	[ $? -ne 0 ] && s=1
> +done
> +[ -f socketpair3.core -a $s -eq 0 ] &&
> +    { ls -l socketpair3.core; mv socketpair3.core /tmp; s=1; }
> +
> +rm -rf $dir/socketpair3
> +exit $s
> +
> +EOF
> +#include <sys/types.h>
> +
> +#include <sys/procdesc.h>
> +#include <sys/socket.h>
> +#include <sys/wait.h>
> +
> +#include <err.h>
> +#include <poll.h>
> +#include <signal.h>
> +#include <stdio.h>
> +#include <string.h>
> +#include <time.h>
> +#include <unistd.h>
> +
> +// From libnv.
> +extern int fd_send(int sock, const int *fds, size_t nfds);
> +extern int fd_recv(int sock, int *fds, size_t nfds);
> +
> +int main(void)
> +{
> +	pid_t pid;
> +	time_t start;
> +	int child_fd;
> +	int sock[2];
> +
> +	start = time(NULL);
> +	while (time(NULL) - start < 60) {
> +		if (socketpair(PF_UNIX, SOCK_STREAM, 0, sock) < 0)
> +			err(1, "socketpair");
> +
> +		pid = pdfork(&child_fd, PD_CLOEXEC);
> +		if (pid < 0)
> +			err(1, "pdfork");
> +
> +		if (pid == 0) {
> +			ssize_t ret;
> +			int sock_child[2];
> +			int dummy = 0;
> +
> +			close(sock[0]);
> +			if (socketpair(PF_UNIX, SOCK_STREAM, /**/
> +			    0, sock_child) < 0)
> +				err(1, "socketpair");
> +
> +			if (fd_send(sock[1], &sock_child[0], 1) != 0)
> +				errx(1, "fd_send failed");
> +#ifdef WORKAROUND
> +			if (read(sock[1], &dummy, 1) != 1)
> +				err(1, "write");
> +#endif
> +
> +			close(sock_child[0]);
> +
> +			if (write(sock_child[1], &dummy, 1) != 1)
> +				err(1, "write");
> +
> +			if ((ret = read(sock_child[1], &dummy, 1)) != 1)
> +				errx(1, "read failed in child: %d",
> +				    (int)ret);
> +
> +			close(sock_child[1]);
> +
> +			_exit(0);
> +		}
> +
> +		close(sock[1]);
> +
> +		int sock_child;
> +		uint8_t dummy;
> +
> +		if (fd_recv(sock[0], &sock_child, 1) != 0)
> +			errx(1, "fd_recv failed");
> +#ifdef WORKAROUND
> +		if (write(sock[0], &dummy, 1) != 1)
> +			err(1, "write");
> +#endif
> +
> +		ssize_t ret;
> +		if ((ret = read(sock_child, &dummy, 1)) != 1) {
> +			int error;
> +			socklen_t err_len = sizeof(error);
> +
> +			if (getsockopt(sock_child, SOL_SOCKET, SO_ERROR,
> +			    &error, &err_len) < 0)
> +				err(1, "getsockopt");
> +
> +			ssize_t ret2 = read(sock_child, &dummy, 1);
> +
> +			errx(1,
> +			    "read failed in parent: %d, so_error: %s (%d), "
> +			    "ret2: %d", (int)ret, strerror(error), error,
> +			    (int)ret2);
> +		}
> +
> +		if (write(sock_child, &dummy, 1) != 1)
> +			err(1, "write");
> +
> +		close(sock_child);
> +
> +		struct pollfd pfd = { .fd = child_fd };
> +		poll(&pfd, 1, -1);
> +
> +		close(child_fd);
> +		close(sock[0]);
> +	}
> +
> +	return (0);
> +}
> 
> 

-- 
Rod Grimes                                                 rgrimes@freebsd.org

From owner-svn-src-user@freebsd.org  Wed May 16 23:10:21 2018
Return-Path: <owner-svn-src-user@freebsd.org>
Delivered-To: svn-src-user@mailman.ysv.freebsd.org
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1])
 by mailman.ysv.freebsd.org (Postfix) with ESMTP id E3368EDBC3B
 for <svn-src-user@mailman.ysv.freebsd.org>;
 Wed, 16 May 2018 23:10:20 +0000 (UTC) (envelope-from des@FreeBSD.org)
Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org
 [IPv6:2610:1c1:1:606c::19:3])
 (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))
 (Client CN "mxrelay.nyi.freebsd.org",
 Issuer "Let's Encrypt Authority X3" (verified OK))
 by mx1.freebsd.org (Postfix) with ESMTPS id 95B9D81A68;
 Wed, 16 May 2018 23:10:20 +0000 (UTC) (envelope-from des@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 mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 7218620A9A;
 Wed, 16 May 2018 23:10:20 +0000 (UTC) (envelope-from des@FreeBSD.org)
Received: from repo.freebsd.org ([127.0.1.37])
 by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w4GNAKwd091706;
 Wed, 16 May 2018 23:10:20 GMT (envelope-from des@FreeBSD.org)
Received: (from des@localhost)
 by repo.freebsd.org (8.15.2/8.15.2/Submit) id w4GNAJRv091701;
 Wed, 16 May 2018 23:10:19 GMT (envelope-from des@FreeBSD.org)
Message-Id: <201805162310.w4GNAJRv091701@repo.freebsd.org>
X-Authentication-Warning: repo.freebsd.org: des set sender to des@FreeBSD.org
 using -f
From: =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= <des@FreeBSD.org>
Date: Wed, 16 May 2018 23:10:19 +0000 (UTC)
To: src-committers@freebsd.org, svn-src-user@freebsd.org
Subject: svn commit: r333692 - in user/des/fbce: lib/FBCE/Controller root/run
 root/see
X-SVN-Group: user
X-SVN-Commit-Author: des
X-SVN-Commit-Paths: in user/des/fbce: lib/FBCE/Controller root/run root/see
X-SVN-Commit-Revision: 333692
X-SVN-Commit-Repository: base
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.26
Precedence: list
List-Id: "SVN commit messages for the experimental &quot; user&quot;
 src tree" <svn-src-user.freebsd.org>
List-Unsubscribe: <https://lists.freebsd.org/mailman/options/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=unsubscribe>
List-Archive: <http://lists.freebsd.org/pipermail/svn-src-user/>
List-Post: <mailto:svn-src-user@freebsd.org>
List-Help: <mailto:svn-src-user-request@freebsd.org?subject=help>
List-Subscribe: <https://lists.freebsd.org/mailman/listinfo/svn-src-user>,
 <mailto:svn-src-user-request@freebsd.org?subject=subscribe>
X-List-Received-Date: Wed, 16 May 2018 23:10:21 -0000

Author: des
Date: Wed May 16 23:10:19 2018
New Revision: 333692
URL: https://svnweb.freebsd.org/changeset/base/333692

Log:
  Allow a candidate to not provide a slogan, but display an error message
  if the statement is empty.

Modified:
  user/des/fbce/lib/FBCE/Controller/Run.pm
  user/des/fbce/root/run/edit.tt
  user/des/fbce/root/run/register.tt
  user/des/fbce/root/see/candidate.tt
  user/des/fbce/root/see/index.tt

Modified: user/des/fbce/lib/FBCE/Controller/Run.pm
==============================================================================
--- user/des/fbce/lib/FBCE/Controller/Run.pm	Wed May 16 22:32:08 2018	(r333691)
+++ user/des/fbce/lib/FBCE/Controller/Run.pm	Wed May 16 23:10:19 2018	(r333692)
@@ -45,13 +45,15 @@ sub register :Local :Args(0) {
 	$c->res->redirect($c->uri_for('/run'));
 	$c->detach();
     }
-    if ($p->{submit}) {
+    if ($p->{submit} && $p->{long}) {
 	my $stmt = $c->model('FBCE::Statement')->
 	    new({ person => $user, short => $p->{short}, long => $p->{long} });
 	$stmt->insert()
 	    or die("failed to register");
 	$c->res->redirect($c->uri_for('/run'));
 	$c->detach();
+    } elsif ($p->{submit}) {
+	$c->stash(error => "You must provide a stamement!");
     }
     $c->stash(short => $p->{short});
     $c->stash(long => $p->{long});
@@ -76,11 +78,13 @@ sub edit :Local :Args(0) {
 	$c->detach();
     }
     my $statement = $user->statement;
-    if ($p->{submit}) {
+    if ($p->{submit} && $p->{long}) {
 	$statement->update({ short => $p->{short}, long => $p->{long} })
 	    or die("failed to update");
 	$c->res->redirect($c->uri_for('/run'));
 	$c->detach();
+    } elsif ($p->{submit}) {
+	$c->stash(error => "You must provide a stamement!");
     }
     $c->stash(short => $p->{short} // $statement->short);
     $c->stash(long => $p->{long} // $statement->long);

Modified: user/des/fbce/root/run/edit.tt
==============================================================================
--- user/des/fbce/root/run/edit.tt	Wed May 16 22:32:08 2018	(r333691)
+++ user/des/fbce/root/run/edit.tt	Wed May 16 23:10:19 2018	(r333692)
@@ -8,10 +8,13 @@
 [% IF !user.active %]
 <p>You are not qualified to run in the election.  If you believe this is incorrect, please contact the election administrator.</p>
 [% ELSIF nominating == 0 %]
+[% IF error != '' %]
+  <div class="error">[% error | html %]</div>
+[% END %]
 <form method="post" action="">
-  <p>Slogan</p>
+  <p>Slogan (optional)</p>
   <input name="short" size="80" maxlength="64" value="[% short | html %]"/>
-  <p>Statement (<a href="http://search.cpan.org/~chromatic/Text-WikiFormat-0.79/lib/Text/WikiFormat.pm#Wiki_Format">WikiFormat</a>)</p> 
+  <p>Statement (<a href="http://search.cpan.org/~chromatic/Text-WikiFormat-0.81/lib/Text/WikiFormat.pm#Wiki_Format">WikiFormat</a>)</p> 
   <textarea name="long" cols="80" rows="24">[% long | html %]</textarea>
   </fieldset>
   <div>

Modified: user/des/fbce/root/run/register.tt
==============================================================================
--- user/des/fbce/root/run/register.tt	Wed May 16 22:32:08 2018	(r333691)
+++ user/des/fbce/root/run/register.tt	Wed May 16 23:10:19 2018	(r333692)
@@ -15,8 +15,11 @@
 </ul>
 <p>If you have a <a href="http://en.gravatar.com/">Gravatar</a>, it will appear next to your statement.</p>
 <form method="post" action="">
-  <p>Slogan</p>
-  <input name="short" size="80" maxlength="64" value="[% short | html %]"/>
+[% IF error %]
+  <div class="error">[% error | html %]</div>
+[% END %]
+  <p>Slogan (optional)</p>
+  <input name="short" size="64" maxlength="64" value="[% short | html %]"/>
   <p>Statement (<a href="http://search.cpan.org/~cycles/Text-WikiFormat-0.81/lib/Text/WikiFormat.pm#Wiki_Format">WikiFormat</a>)</p>
   <textarea name="long" cols="80" rows="24">[% long | html %]</textarea>
   <div>

Modified: user/des/fbce/root/see/candidate.tt
==============================================================================
--- user/des/fbce/root/see/candidate.tt	Wed May 16 22:32:08 2018	(r333691)
+++ user/des/fbce/root/see/candidate.tt	Wed May 16 23:10:19 2018	(r333692)
@@ -10,7 +10,9 @@
 [% IF candidate.incumbent %]<p class="candidate-incumbent">(incumbent)</p>[% END %]
 </div>
 <div class="statement">
+[% IF candidate.statement.short %]
   <h3 class="statement-title">[% candidate.statement.short | wiki %]</h3>
+[% END %]
   <div class="statement-body">
     [% candidate.statement.long | wiki %]
   </div>

Modified: user/des/fbce/root/see/index.tt
==============================================================================
--- user/des/fbce/root/see/index.tt	Wed May 16 22:32:08 2018	(r333691)
+++ user/des/fbce/root/see/index.tt	Wed May 16 23:10:19 2018	(r333692)
@@ -15,7 +15,7 @@
 [% END %]
 <ul>
   [% WHILE (candidate = candidates.next) %]
-  <li>[% candidate.name | html %][% IF candidate.incumbent %] (incumbent)[% END %]: <a href="[% c.uri_for('/see/candidate', candidate.login) | html %]">[% candidate.statement.short | html %]</a></li>
+  <li>[% candidate.name | html %][% IF candidate.incumbent %] (incumbent)[% END %]: <a href="[% c.uri_for('/see/candidate', candidate.login) | html %]">[% IF candidate.statement.short %][% candidate.statement.short | html %][% ELSE %]see statement[% END %]</a></li>
   [% END %]
 </ul>
 [% END %]