Module Name:    src
Committed By:   riastradh
Date:           Fri Apr  5 13:05:41 UTC 2024

Modified Files:
        src/sys/miscfs/genfs: genfs_io.c
        src/sys/uvm: uvm_vnode.c

Log Message:
uvm: Expand v_size <= v_writesize assertions to help diagnostics.

PR kern/58117


To generate a diff of this commit:
cvs rdiff -u -r1.103 -r1.104 src/sys/miscfs/genfs/genfs_io.c
cvs rdiff -u -r1.120 -r1.121 src/sys/uvm/uvm_vnode.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/miscfs/genfs/genfs_io.c
diff -u src/sys/miscfs/genfs/genfs_io.c:1.103 src/sys/miscfs/genfs/genfs_io.c:1.104
--- src/sys/miscfs/genfs/genfs_io.c:1.103	Sun Apr  9 12:26:36 2023
+++ src/sys/miscfs/genfs/genfs_io.c	Fri Apr  5 13:05:40 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: genfs_io.c,v 1.103 2023/04/09 12:26:36 riastradh Exp $	*/
+/*	$NetBSD: genfs_io.c,v 1.104 2024/04/05 13:05:40 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.103 2023/04/09 12:26:36 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: genfs_io.c,v 1.104 2024/04/05 13:05:40 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1449,7 +1449,12 @@ genfs_do_io(struct vnode *vp, off_t off,
 	UVMHIST_LOG(ubchist, "vp %#jx kva %#jx len 0x%jx flags 0x%jx",
 	    (uintptr_t)vp, (uintptr_t)kva, len, flags);
 
-	KASSERT(vp->v_size <= vp->v_writesize);
+	KASSERT(vp->v_size != VSIZENOTSET);
+	KASSERT(vp->v_writesize != VSIZENOTSET);
+	KASSERTMSG(vp->v_size <= vp->v_writesize, "vp=%p"
+	    " v_size=0x%llx v_writesize=0x%llx", vp,
+	    (unsigned long long)vp->v_size,
+	    (unsigned long long)vp->v_writesize);
 	GOP_SIZE(vp, vp->v_writesize, &eof, 0);
 	if (vp->v_type != VBLK) {
 		fs_bshift = vp->v_mount->mnt_fs_bshift;

Index: src/sys/uvm/uvm_vnode.c
diff -u src/sys/uvm/uvm_vnode.c:1.120 src/sys/uvm/uvm_vnode.c:1.121
--- src/sys/uvm/uvm_vnode.c:1.120	Sun Apr  9 12:37:12 2023
+++ src/sys/uvm/uvm_vnode.c	Fri Apr  5 13:05:41 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: uvm_vnode.c,v 1.120 2023/04/09 12:37:12 riastradh Exp $	*/
+/*	$NetBSD: uvm_vnode.c,v 1.121 2024/04/05 13:05:41 riastradh Exp $	*/
 
 /*
  * Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_vnode.c,v 1.120 2023/04/09 12:37:12 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_vnode.c,v 1.121 2024/04/05 13:05:41 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_uvmhist.h"
@@ -451,9 +451,17 @@ uvm_vnp_setsize(struct vnode *vp, voff_t
 
 	KASSERT(newsize != VSIZENOTSET);
 	KASSERT(newsize >= 0);
-	KASSERT(vp->v_size <= vp->v_writesize);
-	KASSERT(vp->v_size == vp->v_writesize ||
-	    newsize == vp->v_writesize || newsize <= vp->v_size);
+	KASSERTMSG(vp->v_size <= vp->v_writesize, "vp=%p"
+	    " v_size=0x%llx v_writesize=0x%llx", vp,
+	    (unsigned long long)vp->v_size,
+	    (unsigned long long)vp->v_writesize);
+	KASSERTMSG((vp->v_size == vp->v_writesize ||
+		newsize == vp->v_writesize || newsize <= vp->v_size),
+	    "vp=%p v_size=0x%llx v_writesize=0x%llx newsize=0x%llx",
+	    vp,
+	    (unsigned long long)vp->v_size,
+	    (unsigned long long)vp->v_writesize,
+	    (unsigned long long)newsize);
 
 	oldsize = vp->v_writesize;
 
@@ -481,8 +489,16 @@ uvm_vnp_setwritesize(struct vnode *vp, v
 	KASSERT(newsize >= 0);
 	KASSERT(vp->v_size != VSIZENOTSET);
 	KASSERT(vp->v_writesize != VSIZENOTSET);
-	KASSERT(vp->v_size <= vp->v_writesize);
-	KASSERT(vp->v_size <= newsize);
+	KASSERTMSG(vp->v_size <= vp->v_writesize, "vp=%p"
+	    " v_size=0x%llx v_writesize=0x%llx newsize=0x%llx", vp,
+	    (unsigned long long)vp->v_size,
+	    (unsigned long long)vp->v_writesize,
+	    (unsigned long long)newsize);
+	KASSERTMSG(vp->v_size <= newsize, "vp=%p"
+	    " v_size=0x%llx v_writesize=0x%llx newsize=0x%llx", vp,
+	    (unsigned long long)vp->v_size,
+	    (unsigned long long)vp->v_writesize,
+	    (unsigned long long)newsize);
 	mutex_enter(vp->v_interlock);
 	vp->v_writesize = newsize;
 	mutex_exit(vp->v_interlock);

Reply via email to