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

Reply via email to