NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
kern/46494: cgd doesn't work on disk with 4K (read: non-512 byte) sector size
>Number: 46494
>Category: kern
>Synopsis: cgd doesn't work on disk with 4K (read: non-512 byte) sector
>size
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: kern-bug-people
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue May 29 13:15:00 +0000 2012
>Originator: Jan Danielsson
>Release: NetBSD/amd64 6 beta 2
>Organization:
>Environment:
NetBSD pussycat 6.0_BETA NetBSD 6.0_BETA (PUSSYCAT) #0: Mon May 21 10:04:13
CEST 2012
jan@pussycat:/home/jan/sysbuild/obj.amd64/usr/src/sys/arch/amd64/compile/PUSSYCAT
amd64
>Description:
# dmesg
[---]
umass0 at uhub6 port 6 configuration 1 interface 0
umass0: JMicron USB to ATA/ATAPI bridge, rev 2.00/1.00, addr 2
umass0: using SCSI over Bulk-Only
scsibus0 at umass0: 2 targets, 1 lun per target
sd0 at scsibus0 target 0 lun 0: <WDC WD75, 00AARX-00N0YB0, > disk fixed
sd0: 698 GB, 16383 cyl, 16 head, 63 sec, 4096 bytes/sect x 183143646 sectors
# disklabel sd0
# /dev/rsd0d:
type: SCSI
disk: 00AARX-00N0YB0
label: fictitious
flags:
bytes/sector: 4096
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 16383
total sectors: 183143646
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0 # microseconds
track-to-track seek: 0 # microseconds
drivedata: 0
[---]
The disk shown in the dmesg and disklabel excerpt above appears to work without
cgd. Configuring a cgd device on top of it works, but using the cgd device
fails when used (write errors occur when trying to save disklabel, for
instance).
For a configured cgd device on such a disk, "disklabel cgdN" yields an output
which shows the wrong geometry (in particular, the sector size is 512, rather
than 4096).
>How-To-Repeat:
[Assuming one is using a disk with 4K sector size]
# cgdconfig -g -V ffs -k storedkey -o test.cgd aes-cbc 256
# gpt create sd0
# gpt add -t cgd sd0
Partition added, use:
dkctl sd0 addwedge <wedgename> 6 183143635 <type>
to create a wedge for it
# dkctl sd0 addwedge dk0 6 183143635 cgd
dk0 created successfully.
# cgdconfig -V none cgd3 /dev/dk0 test.cgd
.. then try to create a disklabel, and find that writing won't work.
>Fix:
Unknown, but replacing some DEV_BSIZE's in cgd.c with secsize from
getdisksize() would appear to be a good place to start. That trivial change
alone causes a panic though. For some reason my machine isn't entering DDB
(even though DDB_ONPANIC is enabled), so I haven't looked closer at it yet.
Home |
Main Index |
Thread Index |
Old Index