Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 May 2000 21:20:35 +0200 (CEST)
From:      Thomas Faehnle <tf@wurbl.wn.bawue.de>
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   kern/18754: Vinum: reviving RAID5 volume corrupts data
Message-ID:  <E12txqN-0002EB-00@wurbl.bk.int>

next in thread | raw e-mail | index | archive | help

>Number:         18754
>Category:       kern
>Synopsis:       Vinum: reviving RAID5 volume corrupts data
>Confidential:   no
>Severity:       critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon May 22 13:10:03 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     Thomas Faehnle
>Release:        FreeBSD 4.0-STABLE i386
>Organization:
Multisys GbR
>Environment:
	
	4.0-STABLE, tracked up to CTM patch src-4.0077

>Description:

	Reviving a subdisk that is part of a RAID5 volume and
	simultaneously accessing said volume leads to data
	corruption.

	This occurs no matter whether the volume is accessed via a
	filesystem or via the raw /dev/vinum/<whatever> device.

>How-To-Repeat:
	
	Given the following vinum configuration
	
	,--------------------
	| vinum -> l
	| 3 drives:
	| D d0                    State: up       Device /dev/da0s2e      
	| 					Avail: 15439/15539 MB (99%)
	| D d1                    State: up       Device /dev/da1s2e
	| 					Avail: 15439/15539 MB (99%)
	| D d2                    State: up       Device /dev/da2s2e
	| 					Avail: 15439/15539 MB (99%)
	| 1 volumes:
	| V raid                  State: up       Plexes:       1 Size:        200 MB
	| 
	| 1 plexes:
	| P raid.p0            R5 State: up       Subdisks:     3 Size:        200 MB
	| 
	| 3 subdisks:
	| S raid.p0.s0            State: up       PO:        0  B Size:        100 MB
	| S raid.p0.s1            State: up       PO:      512 kB Size:        100 MB
	| S raid.p0.s2            State: up       PO:     1024 kB Size:        100 MB
	`--------------------
	
	Create a filesystem on the vinum volume:
	
	,--------------------
	| bunsen:~# newfs -v /dev/vinum/raid 
	| /dev/vinum/raid:        409600 sectors in 100 cylinders of 1 tracks, 4096 sectors
	|         200.0MB in 7 cyl groups (16 c/g, 32.00MB/g, 7168 i/g)
	| super-block backups (for fsck -b #) at:
	|  32, 65568, 131104, 196640, 262176, 327712, 393248
	`--------------------
	
	In another shell, arrange for one subdisk to get revived (while the
	newfs above is still running):
	
	,--------------------
	| vinum -> stop -f raid.p0.s0
	| vinum -> start raid.p0.s0
	| Reviving raid.p0.s0 in the background
	| vinum[335]: reviving raid.p0.s0
	| vinum -> ls
	| S raid.p0.s0            State: R 66%    PO:        0  B Size:        100 MB
	| S raid.p0.s1            State: up       PO:      512 kB Size:        100 MB
	| S raid.p0.s2            State: up       PO:     1024 kB Size:        100 MB
	`--------------------
	
	fsck the volume:
	
	,--------------------
	| bunsen:~# fsck /dev/vinum/raid
	| ** /dev/vinum/raid
	| BAD SUPER BLOCK: VALUES IN SUPER BLOCK DISAGREE WITH THOSE IN FIRST ALTERNATE
	| /dev/vinum/raid: NOT LABELED AS A BSD FILE SYSTEM (unused)
	`--------------------

>Fix:







>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E12txqN-0002EB-00>