Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 18 Aug 2025 01:17:55 +0200
From:      =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@FreeBSD.org>
To:        Bakul Shah <bakul@iitbombay.org>
Cc:        FreeBSD Current <freebsd-current@freebsd.org>
Subject:   Re: vfs: Assert that st_rdev is NODEV for non-devices
Message-ID:  <86o6sdczbw.fsf@ltc.des.dev>
In-Reply-To: <EF5FE8FC-26B3-4AA2-BB37-1A634A6EAD97@iitbombay.org> (Bakul Shah's message of "Sun, 17 Aug 2025 15:54:08 -0700")
References:  <EF5FE8FC-26B3-4AA2-BB37-1A634A6EAD97@iitbombay.org>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Bakul Shah <bakul@iitbombay.org> writes:
> etcupdate panics since this commit:
> [...]
> #13 0xffffffff80c97cb5 in kern_statat (td=0xfffff8007e7fc000,
>     flag=<optimized out>, fd=<optimized out>, path=0x19e4d3242358 "/usr/src",
>     pathseg=UIO_USERSPACE, sbp=0xfffffe0054050d18)
>     at /home/FreeBSD/current/sys/kern/vfs_syscalls.c:2574

Which filesystem is /usr/src on?  If by any chance you are using openzfs
from ports, please either switch back to base or try the attached patch.

DES
-- 
Dag-Erling Smørgrav - des@FreeBSD.org


[-- Attachment #2 --]
>From 7d6691b4d31706d68a58b2e4f937989fae86ce6c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dag-Erling=20Sm=C3=B8rgrav?= <des@FreeBSD.org>
Date: Mon, 18 Aug 2025 01:14:02 +0200
Subject: [PATCH 1/1] filesystems/openzfs-kmod: Set rdev to NODEV, not 0, on
 non-devices

---
 filesystems/openzfs-kmod/Makefile                     |  1 +
 .../files/patch-os_freebsd_zfs_zfs__ctldir.c          | 11 +++++++++++
 .../files/patch-os_freebsd_zfs_zfs__vnops__os.c       | 11 +++++++++++
 3 files changed, 23 insertions(+)
 create mode 100644 filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__ctldir.c
 create mode 100644 filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__vnops__os.c

diff --git a/filesystems/openzfs-kmod/Makefile b/filesystems/openzfs-kmod/Makefile
index 7d60ccbd1dbf..2232bc62a2c7 100644
--- a/filesystems/openzfs-kmod/Makefile
+++ b/filesystems/openzfs-kmod/Makefile
@@ -1,5 +1,6 @@
 PORTNAME=	openzfs
 PORTVERSION=	2.3.3
+PORTREVISION=	1
 PORTEPOCH=	1
 CATEGORIES=	filesystems sysutils
 MASTER_SITES=	https://github.com/openzfs/zfs/releases/download/zfs-${PORTVERSION}/
diff --git a/filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__ctldir.c b/filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__ctldir.c
new file mode 100644
index 000000000000..b1f16a13b81e
--- /dev/null
+++ b/filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__ctldir.c
@@ -0,0 +1,11 @@
+--- os/freebsd/zfs/zfs_ctldir.c.orig	2025-06-19 16:34:36 UTC
++++ os/freebsd/zfs/zfs_ctldir.c
+@@ -494,7 +494,7 @@ zfsctl_common_getattr(vnode_t *vp, vattr_t *vap)
+ 
+ 	vap->va_uid = 0;
+ 	vap->va_gid = 0;
+-	vap->va_rdev = 0;
++	vap->va_rdev = NODEV;
+ 	/*
+ 	 * We are a purely virtual object, so we have no
+ 	 * blocksize or allocated blocks.
diff --git a/filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__vnops__os.c b/filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__vnops__os.c
new file mode 100644
index 000000000000..6121acd043f2
--- /dev/null
+++ b/filesystems/openzfs-kmod/files/patch-os_freebsd_zfs_zfs__vnops__os.c
@@ -0,0 +1,11 @@
+--- os/freebsd/zfs/zfs_vnops_os.c.orig	2025-06-19 16:34:36 UTC
++++ os/freebsd/zfs/zfs_vnops_os.c
+@@ -1911,7 +1911,7 @@ zfs_getattr(vnode_t *vp, vattr_t *vap, int flags, cred
+ 	if (vp->v_type == VBLK || vp->v_type == VCHR)
+ 		vap->va_rdev = zfs_cmpldev(rdev);
+ 	else
+-		vap->va_rdev = 0;
++		vap->va_rdev = NODEV;
+ 	vap->va_gen = zp->z_gen;
+ 	vap->va_flags = 0;	/* FreeBSD: Reset chflags(2) flags. */
+ 	vap->va_filerev = zp->z_seq;
-- 
2.50.1

home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86o6sdczbw.fsf>