From matutaka@osa.att.ne.jp  Wed Mar 25 05:52:18 1998
Received: from osa.att.ne.jp (13.gate3.osaka.att.ne.jp [165.76.116.188])
          by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id FAA10890
          for <FreeBSD-gnats-submit@freebsd.org>; Wed, 25 Mar 1998 05:52:16 -0800 (PST)
          (envelope-from matutaka@osa.att.ne.jp)
Received: (from matutaka@localhost) by osa.att.ne.jp (8.8.7/3.5Wbeta) id WAA00750; Wed, 25 Mar 1998 22:51:24 +0900 (JST)
Message-Id: <199803251351.WAA00750@osa.att.ne.jp>
Date: Wed, 25 Mar 1998 22:51:24 +0900 (JST)
From: matutaka@osa.att.ne.jp
Reply-To: matutaka@osa.att.ne.jp
To: FreeBSD-gnats-submit@freebsd.org
Subject: Fsck's disk recognization algorithm is out of date.
X-Send-Pr-Version: 3.2

>Number:         6129
>Category:       bin
>Synopsis:       Fsck's disk recognization algorithm is out of date.
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Mar 25 06:00:01 PST 1998
>Closed-Date:    Mon Apr 20 09:29:53 PDT 1998
>Last-Modified:  Mon Apr 20 09:30:51 PDT 1998
>Originator:     Yuichi MATSUTAKA
>Release:        FreeBSD 2.2.5-RELEASE i386
>Organization:
>Environment:

FreeBSD 2.2.5-RELEASE #0: Tue Oct 21 14:33:00 GMT 1997
    jkh@time.cdrom.com:/usr/src/sys/compile/GENERIC

>Description:

 When multiple FreeBSD slices exist on one disk drive, fsck recognizes
each slice as separate disk drives.  As a result, fsck -p checks each
slice concurrently.  In addition, this causes kernel panic reported as
PR4265.

>How-To-Repeat:

 Make multiple FreeBSD slices on one disk drive and describe these
slices in /etc/fstab.

>Fix:

  Following patch makes fsck's disk recognization algorithm properly.
	
*** sbin/fsck/preen.c.orig	Mon Oct 28 03:28:39 1996
--- sbin/fsck/preen.c	Sat Mar 14 19:01:07 1998
***************
*** 206,217 ****
  	register char *p;
  	size_t len = 0;
  
! 	for (p = name + strlen(name) - 1; p >= name; --p)
! 		if (isdigit(*p)) {
! 			len = p - name + 1;
! 			break;
! 		}
! 	if (p < name)
  		len = strlen(name);
  
  	for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {
--- 206,216 ----
  	register char *p;
  	size_t len = 0;
  
! 	if ((p = rindex(name, '/')) != 0) {
! 		while (*p && !isdigit(*p))
! 			p++;
! 		len = p - name;
! 	} else
  		len = strlen(name);
  
  	for (dk = disks, dkp = &disks; dk; dkp = &dk->next, dk = dk->next) {


>Release-Note:
>Audit-Trail:
State-Changed-From-To: open->closed 
State-Changed-By: bde 
State-Changed-When: Mon Apr 20 09:29:53 PDT 1998 
State-Changed-Why:  
Fixed in rev.1.8 of fsck/preen.c (-current). 
Fixed in rev.1.5.2.1 of fsck/preen.c (2.2). 
>Unformatted:
