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: