From nobody Wed May 20 15:47:35 2026 X-Original-To: dev-commits-src-main@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 4gLGC26fgXz6dyrQ for ; Wed, 20 May 2026 15:47:42 +0000 (UTC) (envelope-from mail@fbsd2.e4m.org) Received: from mail.e4m.org (mail.e4m.org [IPv6:2a03:4000:66:f68::1]) (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 "mail.e4m.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gLGC21NVdz3rcS for ; Wed, 20 May 2026 15:47:42 +0000 (UTC) (envelope-from mail@fbsd2.e4m.org) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=e4m.org header.s=s header.b=jrKpflFf; dmarc=pass (policy=quarantine) header.from=e4m.org; spf=pass (mx1.freebsd.org: domain of mail@fbsd2.e4m.org designates 2a03:4000:66:f68::1 as permitted sender) smtp.mailfrom=mail@fbsd2.e4m.org; arc=pass ("e4m.org:s=s:i=1") ARC-Filter: OpenARC Filter v1.0 mail.e4m.org 64KFleIi043664 ARC-Seal: i=1; d=e4m.org; s=s; a=rsa-sha256; cv=none; t=1779292061; b=F6E3W5wbFny/ncrNvRK8knZSWCK55WhNbmZFVbny6raSnHHhe26Y59hYGH21bk9oUtiD AzK2cLeEcmxWYqfEeOOFyp/xy1XZEK4cT4tvlrlovSEncoUWW5SHhG12hl+7CgTJ22tYi CuRueT444oQ76UCj/UdieSzABjQnAVfYqtpy31UoUWW2dLSRniIjbcQCPa3trsuwY6FeU h3WMVGBC1dUhXagM1db6APbD88vtlFbEcpD+u1cANxwFZWPh8YgORj6eSM7O9qClRnQmq +9kbHyrGoCQdx1W64T9wOBSnx1+MJ7F58Avz250guczhC2FpS204ghcnukb1a9opu+g== ARC-Message-Signature: i=1; d=e4m.org; s=s; a=rsa-sha256; c=relaxed/relaxed; t=1779292061; h=DKIM-Filter:DKIM-Signature:Received:Received:Received:Date:From:To: Cc:Subject:Message-ID:References:MIME-Version:Content-Type: Content-Disposition:In-Reply-To; bh=QJeZ+d1yB/R97H/8xBF4EUNewLzFBknrYACiizGU7Uo=; b=NZm7bPckYgcD5wfZGn8cVFvCpm7Y32MU+00QWx/x21Ea1p9jKUAZaQVZh0gIL9axYnnz ANO6HK+MDn5gaKGtAfRPSDgAh9DKtYiy3TCPJo+c+VKPrGZzA/rjUrhyw/CE414ZXed56 oazlMZl7JIrIG8rWprnxSK1kezedwA9pR4IhTagv9nQVlcmrtFkXi1Gcybt54fH6OOKNn +Jhoex9sG8ZUmutWVXeZjhRvvUE6cmgus/3wa49xzwx1Ooqs5czBEoV52RIeix8LWEFwu pTRRZJt+6Oct+qEf8pEBQUGlkSeKz5juBL9exqQ3l/GMuWAbKJ5ZVWoN6j82af+oodQ== ARC-Authentication-Results: i=1; mail.e4m.org; arc=none smtp.remote-ip="2a02:3100:a600:a766:ec4:7aff:fee6:add0" DKIM-Filter: OpenDKIM Filter v1.0 mail.e4m.org 64KFleIi043664 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=e4m.org; s=s; t=1779292061; i=@e4m.org; bh=QJeZ+d1yB/R97H/8xBF4EUNewLzFBknrYACiizGU7Uo=; h=Date:From:To:Cc:Subject:References:In-Reply-To:Date:From:To: Subject:Reply-to:Cc:In-reply-to:References; b=jrKpflFf9hxCuSavLkMjgsup94ufEo42xdY7luAN0go0r9Dg9MMTBvaDGpp8GH3YN w9UhikFme0/QdieRn/kl6FT5EkoE5ajqw3APDNHQn8K5A0sGuR0nhc0SBgXhw9I3a2 nHk/V2GSefPvhrLos+PhpX3HLpizfX2QOvuWYJTlYHLLU/tY6EA1Z+KsdnFjTYIyGh kl4zsR0PwUwvnD8hjOrH2Y9lnnbP/98zipMMDDudgehSqmDrqoCm+YHWUJYEe3Vz0Y rwXrG/vQUATvUT3/QWAzC+CInG7INPCeRCDHLNRUKPFNjztfodPs/Q6yUp6Lrj9jqL MgxlALd1/OtLQ== Received: from dynamic-2a02-3100-a600-a766-0ec4-7aff-fee6-add0.310.pool.telefonica.de (dynamic-2a02-3100-a600-a766-0ec4-7aff-fee6-add0.310.pool.telefonica.de [IPv6:2a02:3100:a600:a766:ec4:7aff:fee6:add0]) (authenticated bits=128) by mail.e4m.org (8.18.1/8.18.1) with ESMTPSA id 64KFleIi043664 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=FAIL); Wed, 20 May 2026 17:47:41 +0200 (CEST) (envelope-from mail@fbsd2.e4m.org) Received: from stationary.client ([IPv6:fd00:0:0:0:0:0:0:3]) by gate.local (8.18.1/8.18.1) with ESMTPS id 64KFlZKq071356 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Wed, 20 May 2026 17:47:35 +0200 (CEST) (envelope-from mail@fbsd2.e4m.org) Received: from submit.client ([127.0.0.1]) by voyager.local (8.18.1/8.18.1) with ESMTP id 64KFlZnC019511; Wed, 20 May 2026 17:47:35 +0200 (CEST) (envelope-from mail@fbsd2.e4m.org) Received: (from user@localhost) by voyager.local (8.18.1/8.18.1/Submit) id 64KFlZwh019510; Wed, 20 May 2026 17:47:35 +0200 (CEST) (envelope-from mail@fbsd2.e4m.org) Date: Wed, 20 May 2026 17:47:35 +0200 From: Andre Albsmeier To: Kirk McKusick Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org, mail@fbsd2.e4m.org Subject: Re: git: 1111a44301da - main - Defer the January 19, 2038 date limit in UFS1 filesystems to February 7, 2106 Message-ID: References: <202501310131.50V1VRl9002826@gitrepo.freebsd.org> List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <202501310131.50V1VRl9002826@gitrepo.freebsd.org> X-Spamd-Result: default: False [-5.00 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; ARC_ALLOW(-1.00)[e4m.org:s=s:i=1]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.997]; DMARC_POLICY_ALLOW(-0.50)[e4m.org,quarantine]; R_DKIM_ALLOW(-0.20)[e4m.org:s=s]; R_SPF_ALLOW(-0.20)[+a:mail.e4m.org:c]; MIME_GOOD(-0.10)[text/plain]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_LAST(0.00)[]; DKIM_TRACE(0.00)[e4m.org:+]; RCVD_COUNT_THREE(0.00)[4]; FROM_HAS_DN(0.00)[]; ASN(0.00)[asn:197540, ipnet:2a03:4000::/32, country:DE]; TO_DN_SOME(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; MISSING_XM_UA(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; MLMMJ_DEST(0.00)[dev-commits-src-main@FreeBSD.org]; RCPT_COUNT_FIVE(0.00)[5] X-Spamd-Bar: ---- X-Rspamd-Queue-Id: 4gLGC21NVdz3rcS On Fri, 31-Jan-2025 at 01:31:27 +0000, Kirk McKusick wrote: > The branch main has been updated by mckusick: > > URL: https://cgit.FreeBSD.org/src/commit/?id=1111a44301da39d7b7459c784230e1405e8980f8 > > commit 1111a44301da39d7b7459c784230e1405e8980f8 > Author: Kirk McKusick > AuthorDate: 2025-01-31 01:27:59 +0000 > Commit: Kirk McKusick > CommitDate: 2025-01-31 01:31:08 +0000 > > Defer the January 19, 2038 date limit in UFS1 filesystems to February 7, 2106 > ... Should the calls to ffs_oldfscompat_inode_read() in ffsck's inode.c (see below) be made conditionally? Maybe depending on some loader hint or wheter fsck runs in preen mode? This is what happened: A server which runs 24/7 and is using UFS1 had a short power outage. Next day I found stuff like ... - 32705 -r-sr-xr-x 1 root wheel 23744 2026-05-08T18:40:37 /usr/bin/login + 32705 -r-sr-xr-x 1 root wheel 23744 2024-02-16T16:34:12 /usr/bin/login @@ -20 +20 @@ - 32751 -r-xr-sr-x 1 root kmem 190944 2026-05-08T18:40:39 /usr/bin/netstat + 32751 -r-xr-sr-x 1 root kmem 190944 2024-02-16T16:33:25 /usr/bin/netstat ... in the daily security output. In fact, timestamps of most files were set to 2024-02-16. This happened because the CMOS battery was down and when power came back, the machine started with the BIOS build date. When fsck ran, ffs_oldfscompat_inode_read() found that this is UFS1 with the various inode times being newer than "now" and changed them to "now". So maybe some knob to disable this (at least for fsck when being run during startup) could help - at least for people who are sure not to have files older that 1970... > --- a/sbin/fsck_ffs/inode.c > +++ b/sbin/fsck_ffs/inode.c > @@ -46,6 +46,7 @@ > #include "fsck.h" > > struct bufarea *icachebp; /* inode cache buffer */ > +static time_t now; /* current time of day */ > > static int iblock(struct inodesc *, off_t isize, int type); > static ufs2_daddr_t indir_blkatoff(ufs2_daddr_t, ino_t, ufs_lbn_t, ufs_lbn_t, > @@ -429,6 +430,7 @@ void > ginode(ino_t inumber, struct inode *ip) > { > ufs2_daddr_t iblk; > + union dinodep dpp; > struct ufs2_dinode *dp; > > if (inumber < UFS_ROOTINO || inumber >= maxino) > @@ -466,10 +468,14 @@ ginode(ino_t inumber, struct inode *ip) > if (sblock.fs_magic == FS_UFS1_MAGIC) { > ip->i_dp = (union dinode *) > &ip->i_bp->b_un.b_dinode1[inumber - ip->i_bp->b_index]; > + dpp.dp1 = (struct ufs1_dinode *)ip->i_dp; > + if (ffs_oldfscompat_inode_read(&sblock, dpp, now)) > + inodirty(ip); > return; > } > ip->i_dp = (union dinode *) > &ip->i_bp->b_un.b_dinode2[inumber - ip->i_bp->b_index]; > + dpp.dp2 = dp = (struct ufs2_dinode *)ip->i_dp; > /* Do not check hash of inodes being created */ > if (dp->di_mode != 0 && ffs_verify_dinode_ckhash(&sblock, dp)) { > pwarn("INODE CHECK-HASH FAILED"); > @@ -481,6 +487,8 @@ ginode(ino_t inumber, struct inode *ip) > inodirty(ip); > } > } > + if (ffs_oldfscompat_inode_read(&sblock, dpp, now)) > + inodirty(ip); > } > > /* > @@ -519,6 +527,7 @@ getnextinode(ino_t inumber, int rebuiltcg) > mode_t mode; > ufs2_daddr_t ndb, blk; > union dinode *dp; > + union dinodep dpp; > struct inode ip; > static caddr_t nextinop; > > @@ -551,8 +560,10 @@ getnextinode(ino_t inumber, int rebuiltcg) > dp = (union dinode *)nextinop; > if (sblock.fs_magic == FS_UFS1_MAGIC) { > nextinop += sizeof(struct ufs1_dinode); > + dpp.dp1 = (struct ufs1_dinode *)dp; > } else { > nextinop += sizeof(struct ufs2_dinode); > + dpp.dp2 = (struct ufs2_dinode *)dp; > } > if ((ckhashadd & CK_INODE) != 0) { > ffs_update_dinode_ckhash(&sblock, (struct ufs2_dinode *)dp); > @@ -572,6 +583,8 @@ getnextinode(ino_t inumber, int rebuiltcg) > dirty(&inobuf); > } > } > + if (ffs_oldfscompat_inode_read(&sblock, dpp, now)) > + dirty(&inobuf); > if (rebuiltcg && (char *)dp == inobuf.b_un.b_buf) { > /* > * Try to determine if we have reached the end of the