Le 29.12.10 20:05, Mark Kettenis a icrit :
<...>
Can you try the diff below instead of your origional diff?
Index: wd.c
===================================================================
RCS file: /cvs/src/sys/dev/ata/wd.c,v
retrieving revision 1.95
diff -u -p -r1.95 wd.c
--- wd.c 22 Sep 2010 01:18:57 -0000 1.95
+++ wd.c 29 Dec 2010 18:52:54 -0000
@@ -548,7 +548,7 @@ __wdstart(struct wd_softc *wd, struct bu
nblks = bp->b_bcount / wd->sc_dk.dk_label->d_secsize;
if ((wd->sc_flags& WDF_LBA48)&&
/* use LBA48 only if really need */
- ((wd->sc_wdc_bio.blkno + nblks - 1> LBA48_THRESHOLD) ||
+ ((wd->sc_wdc_bio.blkno + nblks - 1>= LBA48_THRESHOLD) ||
(nblks> 0xff)))
wd->sc_wdc_bio.flags |= ATA_LBA48;
if (wd->sc_flags& WDF_LBA)
dd if=/dev/rwd0c of=/dev/null bs=8192
61048383+0 records in
61048383+0 records out
500107862016 bytes transferred in 8327.499 secs (60054984 bytes/sec)
It worked on -current, the whole Apple/Hitachi hard disk could be read !
Nice fix Mark.
--
Mathias