From nobody Sun Jan 22 09:35:50 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P07QG6Y7Jz328HD; Sun, 22 Jan 2023 09:35:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P07QG5z9sz3kKJ; Sun, 22 Jan 2023 09:35:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674380150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fzv3Bwu95GJEQIvp+JbQd5d0kx8utwl3lbXvpE2ZY5Y=; b=Kh+T8ce2RV/1gPY0vBKI3E0i55e2dczBgwcb5EiijlruyV4rfMZ1ehuoFWDbQy+bfB7QZW qlYOA2Mg2NPLfmTOkcH+PNrNFLymsBvHlbqRyDHL6Kqi1KRU9/MzFpNEVNS7hMUySIZXsV 28481LpVxr6zkZ0DJ0dEtiqw2iYWHbNVoOYEQsr7ELGRfdPo/lglCcqvnmWVJth4Ns9sWq mKciOaZZlcIkC0pNnu/F3ZPB+xHbCvDZ6HlzoAvMrcl2DNIi9v5RC0uDnWfsJyqgHfdAVR GVtMWnO6wKaoeryQDCJCfJwP+SuFpZEiYg8/XuZkEdYFZqJR9UDe7Z3/Sctq4A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674380150; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=fzv3Bwu95GJEQIvp+JbQd5d0kx8utwl3lbXvpE2ZY5Y=; b=qD+zRalHSlq/088tuvkTvLm7f1f6vMawJ8mBuHQJgle1DEFwm8epRWGweEEZj+m2cQ/nFS YA5kk9gckoLIsLFcHrArRg9QH5LKbKfZRlqZyELh8bZx0dSWYnyYIT2DQonVTVfVxHun8r 8evmCB1p2qCSeb2kHwpW73LC1VWLyak+sGeAqaBmJ67m3mGgfJLrnjUczu605LzjLTgE6U UFCGCWQtGPbkG199XqxQ8TLZCC+jNQRxujnGLAVbNHoHRFCr7S70fnEMa+Md978qAXyp3b Kgj91/2K6FH1WNxvC4tPOrwXW2f29SmpWh76ayVEjA/g4GPK98q6CFG2e7nlrQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674380150; a=rsa-sha256; cv=none; b=Qz45IPl0Dqiv1eH82G/K1xby9s48A3vydnVY/paKaexIVvS+d8jGriGA0NroTH0Vby4/Rp KebHtvXqJPXMYxGlMGg6W6IoF6fFDz7FoLVcfKYS95Q8WFgPtfiUD9sEWvLFUlApiPiTaH FgCg9sl0k780QTCn55bwp/8Mv+M1xzfZ16IWK9ZmCffXPwIB7V2YqRL/oZMR0BX4/MBpE/ L8jFaygHB0d5Pm+eja9dJvlXxAjWgwCm+pXczBqTpsUrVgFwEMtkJdi+DMG8ucK5s/Yr2/ 29Ih+F/idZSM6e1KIKmixIbDbvelHj7dfZEzoN9OYIaXVfZ/ld4Rx83job1MLA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P07QG4XJ6zkyf; Sun, 22 Jan 2023 09:35:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30M9Zobp072646; Sun, 22 Jan 2023 09:35:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30M9ZoLE072645; Sun, 22 Jan 2023 09:35:50 GMT (envelope-from git) Date: Sun, 22 Jan 2023 09:35:50 GMT Message-Id: <202301220935.30M9ZoLE072645@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Peter Holm Subject: git: 7a56009cf5b0 - main - stress2: Added a regression test List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: pho X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 7a56009cf5b0606dc078346386b5eae3ccae24d3 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by pho: URL: https://cgit.FreeBSD.org/src/commit/?id=7a56009cf5b0606dc078346386b5eae3ccae24d3 commit 7a56009cf5b0606dc078346386b5eae3ccae24d3 Author: Peter Holm AuthorDate: 2023-01-22 09:35:28 +0000 Commit: Peter Holm CommitDate: 2023-01-22 09:35:28 +0000 stress2: Added a regression test --- tools/test/stress2/misc/fsync4.sh | 146 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/tools/test/stress2/misc/fsync4.sh b/tools/test/stress2/misc/fsync4.sh new file mode 100755 index 000000000000..ac08dd6dff49 --- /dev/null +++ b/tools/test/stress2/misc/fsync4.sh @@ -0,0 +1,146 @@ +#!/bin/sh + +# +# SPDX-License-Identifier: BSD-2-Clause +# +# Copyright (c) 2023 Peter Holm +# +# 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. +# + +# Regression test for D38114: Handle ERELOOKUP from VOP_FSYNC() + +# "fsync4: msync(0x82d3cc000), file d1/d2/d3/d4/d5/../file.92660: +# Input/output error" seen + +# Fixed by: 6189672e6008 - main - Handle ERELOOKUP from VOP_FSYNC() in +# several other places + +. ../default.cfg +[ `id -u` -ne 0 ] && echo "Must be root!" && exit 1 + +dir=/tmp +odir=`pwd` +pids="" +prog=$(basename "$0" .sh) +s=0 +cd $dir +sed '1,/^EOF/d' < $odir/$0 > $dir/$prog.c +mycc -o $prog -Wall -Wextra -O0 -g $prog.c || exit 1 +rm -f $prog.c +cd $odir + +set -eu +mount | grep "on $mntpoint " | grep -q /dev/md && umount -f $mntpoint +[ -c /dev/md$mdstart ] && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 1g -u $mdstart +newfs -U md$mdstart > /dev/null +mount /dev/md$mdstart $mntpoint +set +e + +cd $odir +../testcases/swap/swap -t 1m -i 20 -l 100 > /dev/null & +sleep .5 +cd $mntpoint +mkdir -p d1/d2/d3/d4/d5 +for i in `jot 8`; do + $dir/$prog $i & + pids="$pids $!" +done +cd $odir +for pid in $pids; do + wait $pid + [ $? -ne 0 ] && s=1 +done + +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 +rm -rf $dir/$prog +exit $s +EOF +#include +#include +#include +#include + + +#include +#include +#include +#include +#include +#include + +#define RUNTIME 60 +#define SIZ (1024 * 1024) + +static time_t start; + +int +main(void) +{ + size_t len; + int fd, i, ps; + char *cp; + char *path = "d1/d2/d3/d4/d5"; + char d1[1024], d2[1024], file[1024]; + + snprintf(d1, sizeof(d1), "%s/dir.%d", path, getpid()); + snprintf(d2, sizeof(d2), "%s/new.%d", path, getpid()); + snprintf(file, sizeof(file), "%s/../file.%d", path, getpid()); + + start = time(NULL); + while (time(NULL) - start < RUNTIME) { + if (mkdir(d1, 0740) == -1) + err(1, "mkdir(%s)", d1); + if (rename(d1, d2) == -1) + err(1, "rename(%s, %s)", d1, d2); + if ((fd = open(file, O_RDWR | O_CREAT | O_TRUNC, 0600)) == -1) + err(1, "open%s()", file); + len = SIZ; + if (ftruncate(fd, len) == -1) + err(1, "ftruncate"); + cp = mmap(NULL, len, PROT_READ | PROT_WRITE, + MAP_SHARED, fd, 0); + if (cp == MAP_FAILED) + err(1, "mmap()"); + ps = getpagesize(); + for (i = 0; i < SIZ; i += ps) + cp[i] = 1; + if (msync(cp, 0, MS_SYNC) == -1) + err(1, "msync(%p), file %s", cp, file); + if (munmap(cp, len) == -1) + err(1, "unmap()"); + close(fd); + if (rename(d2, d1) == -1) + err(1, "rename(%s, %s)", d2, d1); + if (rmdir(d1) == -1) + err(1, "rmdir(%s)", d1); + } + + return (0); +}