Subject: kern/1575: panic bug in vfs_cluster.c
To: None <gnats-bugs@NetBSD.ORG>
From: Gordon W. Ross <gwr@mc.com>
List: netbsd-bugs
Date: 10/04/1995 10:00:49
>Number: 1575
>Category: kern
>Synopsis: panic in pagemove() caused by vfs_cluster.c
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: kern-bug-people (Kernel Bug People)
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Thu Oct 5 23:05:13 1995
>Last-Modified:
>Originator: Gordon W. Ross
>Organization:
NetBSD!
>Release: <NetBSD-current 1 Oct. 1995>
>Environment:
Sun3 (actually, any machine with 8K page size)
NetBSD-current (any date since cluster_read was enabled)
System: NetBSD venus 1.0A NetBSD 1.0A (GENERIC) #43 ...
>Description:
panic in pagemove() caused by vfs_cluster.c when it
tries to move pages with addresses that are not
page aligned.
>How-To-Repeat:
On a machine with 8K page size, make a filesystem with
4K blocksize and 512 byte fragment size. i.e.:
newfs -b 4096 -f 512 /dev/sd2b
Copy some programs into the fs and run them.
>Fix:
This is not a fix, but helps catch the problem earlier.
We need a real fix, or to turn off cluster_read...
*** vfs_cluster.c.orig Wed Jul 26 03:11:36 1995
--- vfs_cluster.c Tue Oct 3 12:42:07 1995
***************
*** 352,357 ****
--- 352,367 ----
brelse(tbp);
break;
}
+ #if 1 /* DIAGNOSTIC */
+ /*
+ * XXX - FIXME: Make sure we call pagemove with
+ * page-aligned addresses. This happens now if
+ * the FS blocksize is less than the page size!
+ * XXX - Some ports' pagemove() do not check...
+ */
+ if (size & CLOFSET)
+ panic("cluster_rbuild: size & CLOFSET");
+ #endif
if (tbp->b_bufsize > size) {
/*
* XXX if the source and destination regions
>Audit-Trail:
>Unformatted: