From nobody Sun Aug 20 04:28:23 2023 X-Original-To: dev-commits-src-branches@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 4RT2fb2B55z4qgXy; Sun, 20 Aug 2023 04:28:23 +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 4RT2fb1jNqz4QYB; Sun, 20 Aug 2023 04:28:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1692505703; 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=TpTkb6wnv/lUknBGp3V1DkZcCidQe2oW4xdxeJPvHQU=; b=H5zD/FmCUB0QxiCHtbRzh7UKFoQYKjveyWqjz0ThzzIZdWvceZwN/A6vfVe8RSfJRfWgUh NdBsJpHw8mB+93cOXooPU701xafoH2aa85owwuLteZDngGz74PldYNBS3sDxnTNEPTSEms V0AgsLlqiGVfKw7lhsTCtxTQFXvXaL+/vZzwhvwCRx4dIvYQV0RoCtZIQlyGGbos7tKJvr dz3OtMZl8+Ser2kM2yojt9s86g6ETuMGxYLpaknqxDtnd9KzQYg3FXgidZ9M2b1GX7PJzT BGw6IAGxICLIeONS0fztS4L/pX65omzT8/RlcmuZI7nK8OLAbn1oKkSdH/P37A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1692505703; 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=TpTkb6wnv/lUknBGp3V1DkZcCidQe2oW4xdxeJPvHQU=; b=LnaGjz0D2P80FZ/yXtlG1L1l3KnJxeUQwFgDTPJvtpWrD/OkYzjvoNN4Cq3/bdnkZsbRBG FwDApf7DkQBTKtJJI2F1gHwgIQaJH6vXvYReStq5v6pST8pW5RQFW5lg5pg4IROkDP2UDK IysvQgowY45r9gVBmPXh7U1qTPnzygXJ6luoSaQ34qChhEwsmsPifNPsFKJNvcNeokedxf Rvco1y8sSr2EPcJIH6VesBocJ9jOFAUGzveA3Gf1rbI986ut4XCkLgct/Wm7FOfJwQkGSj 5DLZiPebJQEzOLB0Lbw0HEDsR4j8tvMHnrow2TIshD+B0kClfvS/cDfR62yolQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1692505703; a=rsa-sha256; cv=none; b=P9bapwJ41BGKc2wYltnb0EnoUYY2I1LZ1kTLWDGy7/95/WuRGe0MzE4Dxr7DZqFfZUjOkc CwBsb0ftCI1pUwAzvKjyE5YtZO+J4FuS/gU+7LcQ9fB42wKg/pEt/n7GZhxbVWSr8P8v0U K85YlJwJEifiCRbA2WnGKlGoQrsTQIDVRvvhbEyoMnqGoWVEK+2AGmdHnW3VzoBxONkWrS yKsS8FzBJt46LwFf9OuvH8/nFfLtlm2iS4L9sD5k/G7Iuwquz476pt214TDlSdWBoTjFWI 5YbTh6GpWlzNNu9TpS87KpH1RN4ptAI+qEv+vDPQhY+nKeR5V2ujI+84+lmZHQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none 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 4RT2fb0nrNz9VY; Sun, 20 Aug 2023 04:28:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 37K4SNdw033532; Sun, 20 Aug 2023 04:28:23 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 37K4SNLc033529; Sun, 20 Aug 2023 04:28:23 GMT (envelope-from git) Date: Sun, 20 Aug 2023 04:28:23 GMT Message-Id: <202308200428.37K4SNLc033529@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kirk McKusick Subject: git: a11c97bb79e7 - stable/13 - Rate limit kernel UFS/FFS cylinder group check-hash error messages. List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mckusick X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: a11c97bb79e7e0d7a175dc69f9c49fd2d52a3d11 Auto-Submitted: auto-generated The branch stable/13 has been updated by mckusick: URL: https://cgit.FreeBSD.org/src/commit/?id=a11c97bb79e7e0d7a175dc69f9c49fd2d52a3d11 commit a11c97bb79e7e0d7a175dc69f9c49fd2d52a3d11 Author: Kirk McKusick AuthorDate: 2023-08-09 00:10:07 +0000 Commit: Kirk McKusick CommitDate: 2023-08-20 04:27:38 +0000 Rate limit kernel UFS/FFS cylinder group check-hash error messages. Sponsored-by: The FreeBSD Foundation (cherry picked from commit 6dff61a1d1878ea5e9f6e5c36521b3f39cd34b33) --- sys/ufs/ffs/ffs_alloc.c | 58 +++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/sys/ufs/ffs/ffs_alloc.c b/sys/ufs/ffs/ffs_alloc.c index 44c07bb776b7..35c8662307c6 100644 --- a/sys/ufs/ffs/ffs_alloc.c +++ b/sys/ufs/ffs/ffs_alloc.c @@ -2991,15 +2991,6 @@ ffs_mapsearch(struct fs *fs, return (-1); } -static const struct statfs * -ffs_getmntstat(struct vnode *devvp) -{ - - if (devvp->v_type == VCHR) - return (&devvp->v_rdev->si_mountpt->mnt_stat); - return (ffs_getmntstat(VFSTOUFS(devvp->v_mount)->um_devvp)); -} - /* * Fetch and verify a cylinder group. */ @@ -3013,6 +3004,7 @@ ffs_getcg(struct fs *fs, { struct buf *bp; struct cg *cgp; + struct mount *mp; const struct statfs *sfs; daddr_t blkno; int error; @@ -3021,10 +3013,13 @@ ffs_getcg(struct fs *fs, *cgpp = NULL; if ((fs->fs_metackhash & CK_CYLGRP) != 0) flags |= GB_CKHASH; - if (devvp->v_type == VREG) - blkno = fragstoblks(fs, cgtod(fs, cg)); - else + if (devvp->v_type == VCHR) { blkno = fsbtodb(fs, cgtod(fs, cg)); + mp = devvp->v_rdev->si_mountpt; + } else { + blkno = fragstoblks(fs, cgtod(fs, cg)); + mp = devvp->v_mount; + } error = breadn_flags(devvp, blkno, blkno, (int)fs->fs_cgsize, NULL, NULL, 0, NOCRED, flags, ffs_ckhash_cg, &bp); if (error != 0) @@ -3033,28 +3028,35 @@ ffs_getcg(struct fs *fs, if ((fs->fs_metackhash & CK_CYLGRP) != 0 && (bp->b_flags & B_CKHASH) != 0 && cgp->cg_ckhash != bp->b_ckhash) { - sfs = ffs_getmntstat(devvp); - printf("UFS %s%s (%s) cylinder checksum failed: cg %ju, cgp: " - "0x%x != bp: 0x%jx\n", - devvp->v_type == VCHR ? "" : "snapshot of ", - sfs->f_mntfromname, sfs->f_mntonname, - (intmax_t)cg, cgp->cg_ckhash, (uintmax_t)bp->b_ckhash); + if (ppsratecheck(&VFSTOUFS(mp)->um_last_integritymsg, + &VFSTOUFS(mp)->um_secs_integritymsg, 1)) { + sfs = &mp->mnt_stat; + printf("UFS %s%s (%s) cylinder checkhash failed: " + "cg %ju, cgp: 0x%x != bp: 0x%jx\n", + devvp->v_type == VCHR ? "" : "snapshot of ", + sfs->f_mntfromname, sfs->f_mntonname, (intmax_t)cg, + cgp->cg_ckhash, (uintmax_t)bp->b_ckhash); + } bp->b_flags &= ~B_CKHASH; bp->b_flags |= B_INVAL | B_NOCACHE; brelse(bp); return (EIO); } if (!cg_chkmagic(cgp) || cgp->cg_cgx != cg) { - sfs = ffs_getmntstat(devvp); - printf("UFS %s%s (%s)", - devvp->v_type == VCHR ? "" : "snapshot of ", - sfs->f_mntfromname, sfs->f_mntonname); - if (!cg_chkmagic(cgp)) - printf(" cg %ju: bad magic number 0x%x should be " - "0x%x\n", (intmax_t)cg, cgp->cg_magic, CG_MAGIC); - else - printf(": wrong cylinder group cg %ju != cgx %u\n", - (intmax_t)cg, cgp->cg_cgx); + if (ppsratecheck(&VFSTOUFS(mp)->um_last_integritymsg, + &VFSTOUFS(mp)->um_secs_integritymsg, 1)) { + sfs = &mp->mnt_stat; + printf("UFS %s%s (%s)", + devvp->v_type == VCHR ? "" : "snapshot of ", + sfs->f_mntfromname, sfs->f_mntonname); + if (!cg_chkmagic(cgp)) + printf(" cg %ju: bad magic number 0x%x should " + "be 0x%x\n", (intmax_t)cg, cgp->cg_magic, + CG_MAGIC); + else + printf(": wrong cylinder group cg %ju != " + "cgx %u\n", (intmax_t)cg, cgp->cg_cgx); + } bp->b_flags &= ~B_CKHASH; bp->b_flags |= B_INVAL | B_NOCACHE; brelse(bp);