From nobody Fri Oct 09 00:20:37 2026 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 4j16vp0GbGz6Z23W for ; Fri, 09 Oct 2026 00:20:38 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4j16vn49WZz4LKG for ; Fri, 09 Oct 2026 00:20:37 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791505237; 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=nI5auKv6DZ1Anie3vvOXR6iu/RUFRH1U0PHIcuY6wdA=; b=qj7mqTeUjdiN1JyWMWavnO6Jfm8QGQN3nHo7KVTgdbXSbG+TXM40O9AIliSi9djBS+jkes +bIsrkhAmFxcyzSDm8uTQ1VYxd4tAlGWwP8DX5NxVYsZdZfCxGu+jvz3CYzuPscuhyGW8N GfqYeWoDIkuUc4HCtqqaDT3VTcDkuwQMB4ZuBn+K7wCIU1mg0Vqp4oyI1cj7jU7V8oIY20 9P6Egpx5hgJF1ajCZq7/MnwDI03ybUFwAitwIzhNMilynw5QqG1MqN98LkPq3oMsm+ZOYT 8fB9+cYi6SZ54H8QriN/bdZy81LtkqVQMf5G22xJ0DpjWG21mmjJbJknnu4+Nw== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1791505237; b=tuLyj9fvIZFChVggfpoTNMOzIX8zgOO09y7VNG2FiZT0tQw8rOJCQksIEYhiM/XHRtvap7 jblM8ftQLcczVLBHCE7/pVRegZimb5wI9hSUlM8yJ/2sAnZigMKOaWUq3hzzMO6ZcoTY4y enPkurVMNACOMFl9EYtY9yxgNm+fWtfG8GoYtRtcV4kmArFrCYfC9M8pSyQJ2CsI4nMMbY urVpstb1wJSjcyAwaVEyiI0Zjng7MoaxjxCVZYwk0EJtDWBjbMDnuix6ztjHd8nWwqGkNJ 5i8H8NvWOylvwc/yi8/nvdGcA2xFmCpWXXIZYTyD58pyI+0AxT2PQf4cFKAs1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1791505237; 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=nI5auKv6DZ1Anie3vvOXR6iu/RUFRH1U0PHIcuY6wdA=; b=jxOUu/stdstHRpXkWlYpMkuCdmYSVj7cgiLqzc5kX1jLyKRsz+o08nrWyFmfQmF9r9pJym +HBOKOWEFc25xKjKpmq4rc8IGrGY2soP7SJlL9YC5cXDEbomnYUENPvKeWaM67kqPki0za eSmM33YHEKMIahq4Qwtpvaa3ZWN4fx3XX68bdZwpud2UjGb6Y/UBBjPcCMqeEK6kOoRvIM kYF1onoPqs2WQvm0aH5W2RLf0AS+YsuyjoLJp5Gc8rT9bwmiuyr/nqwjQgLzDVriPaErZ1 Jlb2En0YN+TnLYvNGfPuMzphTScQrIFMsVldc3mtssBVTvE6OtdyPY3MZTRKCg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4j16vn3BnBz12dq for ; Fri, 09 Oct 2026 00:20:37 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 19f1a by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 09 Oct 2026 00:20:37 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: John Baldwin Subject: git: d50323847b1b - stable/14 - cd9660: Add support for birth times 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: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhb X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: d50323847b1b9b6a0a45b04edff57aa20dac5c71 Auto-Submitted: auto-generated Date: Fri, 09 Oct 2026 00:20:37 +0000 Message-Id: <6ac83355.19f1a.63f5f8d0@gitrepo.freebsd.org> The branch stable/14 has been updated by jhb: URL: https://cgit.FreeBSD.org/src/commit/?id=d50323847b1b9b6a0a45b04edff57aa20dac5c71 commit d50323847b1b9b6a0a45b04edff57aa20dac5c71 Author: John Baldwin AuthorDate: 2026-06-23 15:51:43 +0000 Commit: John Baldwin CommitDate: 2026-10-08 18:24:05 +0000 cd9660: Add support for birth times Both the Extended Attribute Record in the base ISO-9660 standard and the RockRidge timestamp extension support a file creation timestamp. Use this to populate the birthtime if present. Reviewed by: markj (earlier version) Differential Revision: https://reviews.freebsd.org/D57526 (cherry picked from commit 3d945604ef8e1aaa49e153d82821fb4c6c1e67f2) --- sys/fs/cd9660/cd9660_node.c | 12 +++++++----- sys/fs/cd9660/cd9660_node.h | 1 + sys/fs/cd9660/cd9660_rrip.c | 16 ++++++++++++++-- sys/fs/cd9660/cd9660_vnops.c | 1 + 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/sys/fs/cd9660/cd9660_node.c b/sys/fs/cd9660/cd9660_node.c index 0b2d2e820e03..226b4fd59a96 100644 --- a/sys/fs/cd9660/cd9660_node.c +++ b/sys/fs/cd9660/cd9660_node.c @@ -187,13 +187,14 @@ cd9660_deftstamp(struct iso_directory_record *isodir, struct iso_node *inop, * Only the first two are meaningful for struct * stat. */ - struct timespec birthtime; - - if (!cd9660_tstamp_conv17(ap->ctime, &birthtime)) - memset(&birthtime, 0, sizeof(birthtime)); + if (!cd9660_tstamp_conv17(ap->ctime, + &inop->inode.iso_birthtime)) + memset(&inop->inode.iso_birthtime, 0, + sizeof(inop->inode.iso_birthtime)); if (!cd9660_tstamp_conv17(ap->mtime, &inop->inode.iso_mtime)) - inop->inode.iso_mtime = birthtime; + inop->inode.iso_mtime = + inop->inode.iso_birthtime; inop->inode.iso_ctime = inop->inode.iso_mtime; inop->inode.iso_atime = inop->inode.iso_mtime; } else @@ -203,6 +204,7 @@ cd9660_deftstamp(struct iso_directory_record *isodir, struct iso_node *inop, cd9660_tstamp_conv7(isodir->date,&inop->inode.iso_ctime,ftype); inop->inode.iso_atime = inop->inode.iso_ctime; inop->inode.iso_mtime = inop->inode.iso_ctime; + inop->inode.iso_birthtime = inop->inode.iso_ctime; } if (bp2) brelse(bp2); diff --git a/sys/fs/cd9660/cd9660_node.h b/sys/fs/cd9660/cd9660_node.h index a9506cb4b68e..cccde57838a1 100644 --- a/sys/fs/cd9660/cd9660_node.h +++ b/sys/fs/cd9660/cd9660_node.h @@ -49,6 +49,7 @@ typedef struct { struct timespec iso_atime; /* time of last access */ struct timespec iso_mtime; /* time of last modification */ struct timespec iso_ctime; /* time file changed */ + struct timespec iso_birthtime; /* time file created */ u_short iso_mode; /* files access mode and type */ uid_t iso_uid; /* owner user id */ gid_t iso_gid; /* owner group id */ diff --git a/sys/fs/cd9660/cd9660_rrip.c b/sys/fs/cd9660/cd9660_rrip.c index 8bed558ee391..06db0d1031be 100644 --- a/sys/fs/cd9660/cd9660_rrip.c +++ b/sys/fs/cd9660/cd9660_rrip.c @@ -379,14 +379,20 @@ cd9660_rrip_tstamp(ISO_RRIP_TSTAMP *p, size_t len, ISO_RRIP_ANALYZE *ana) /* Check a format of time stamp (7bytes/17bytes) */ if (!(*p->flags & ISO_SUSP_TSTAMP_FORM17)) { if (*p->flags & ISO_SUSP_TSTAMP_CREAT) { + cd9660_tstamp_conv7(ptime, + &ana->inop->inode.iso_birthtime, ISO_FTYPE_RRIP); ptime += 7; + } else { + memset(&ana->inop->inode.iso_birthtime, 0, + sizeof(struct timespec)); } if (*p->flags & ISO_SUSP_TSTAMP_MODIFY) { cd9660_tstamp_conv7(ptime, &ana->inop->inode.iso_mtime, ISO_FTYPE_RRIP); ptime += 7; } else { - memset(&ana->inop->inode.iso_mtime, 0, sizeof(struct timespec)); + ana->inop->inode.iso_mtime = + ana->inop->inode.iso_birthtime; } if (*p->flags & ISO_SUSP_TSTAMP_ACCESS) { cd9660_tstamp_conv7(ptime, &ana->inop->inode.iso_atime, @@ -403,13 +409,19 @@ cd9660_rrip_tstamp(ISO_RRIP_TSTAMP *p, size_t len, ISO_RRIP_ANALYZE *ana) } } else { if (*p->flags & ISO_SUSP_TSTAMP_CREAT) { + cd9660_tstamp_conv17(ptime, + &ana->inop->inode.iso_birthtime); ptime += 17; + } else { + memset(&ana->inop->inode.iso_birthtime, 0, + sizeof(struct timespec)); } if (*p->flags & ISO_SUSP_TSTAMP_MODIFY) { cd9660_tstamp_conv17(ptime, &ana->inop->inode.iso_mtime); ptime += 17; } else { - memset(&ana->inop->inode.iso_mtime, 0, sizeof(struct timespec)); + ana->inop->inode.iso_mtime = + ana->inop->inode.iso_birthtime; } if (*p->flags & ISO_SUSP_TSTAMP_ACCESS) { cd9660_tstamp_conv17(ptime, &ana->inop->inode.iso_atime); diff --git a/sys/fs/cd9660/cd9660_vnops.c b/sys/fs/cd9660/cd9660_vnops.c index 7f7468487b26..f3403f072be6 100644 --- a/sys/fs/cd9660/cd9660_vnops.c +++ b/sys/fs/cd9660/cd9660_vnops.c @@ -194,6 +194,7 @@ cd9660_getattr(struct vop_getattr_args *ap) vap->va_atime = ip->inode.iso_atime; vap->va_mtime = ip->inode.iso_mtime; vap->va_ctime = ip->inode.iso_ctime; + vap->va_birthtime = ip->inode.iso_birthtime; vap->va_rdev = VN_ISDEV(vp) ? ip->inode.iso_rdev : NODEV; vap->va_size = ip->i_size;