URGENT for 5.4-R: ATA meister, read this now - 64/32 bits errorfound - Trouble with ataraid

From: João Carlos Mendes Luís (jonny_at_jonny.eng.br)
Date: 04/28/05

  • Next message: Scott Long: "Re: PCI Programming"
    Date: Thu, 28 Apr 2005 17:59:50 -0300
    To: sos@FreeBSD.org, hackers@freebsd.org
    
    

    I think I may have found the problem!!!

    Looking at the source code for arstrategy, we can find this:

    -----------------------------
    static void
    arstrategy(struct bio *bp)
    {
        struct ar_softc *rdp = bp->bio_disk->d_drv1;
        int blkno, count, chunk, lba, lbs, tmplba;
        int drv = 0, change = 0;
        caddr_t data;
    -----------------------------

    That is, lba is an int, 32 bits!

    Right below, this variable is used into a bio_pblkno, which is defined
    at <sys/bio.h> as (daddrt_t):

    -----------------------------
            buf1->bp.bio_pblkno = lba;
            if ((buf1->drive = drv) > 0)
                buf1->bp.bio_pblkno += rdp->offset;
    -----------------------------

    But note that at the /sys/dev/ata/ata-all.h file, the
    ata_request.u.ata.lba is defined as (u_int64_t). Also, at
    <sys/types.h>, (daddr_t) is defined as (__int64_t). These are the data
    types used at ata-disk.c

    BTW: While searching for this bug, I found that a type (u_daddr_t) is
    defined at <sys/blist.h> as (u_int32_t). I did not care for it right
    now, but maybe this should be checked also.

    Hope I am wrong, but if not, this may be the bug I´ve been chasing since
    5.2-R.

    To probe further: Should the ata-raid driver be allowed to write the
    disk at will? I did not even try to mount any partition, but it did
    overwrote my data. Maybe to update the raid information. I'm not sure,
    I did not search for this yet.

    João Carlos Mendes Luís wrote:
    > Followup to my message with more news.
    >
    > It is not a problem with mount_ntfs. Indeed, it seems to be a problem
    > with the ataraid code.
    >
    > Today I booted from 5.3RC4 install CD, and mounted NO partition on the
    > problem disk. But this was enough to corrupt the partition again.
    >
    > How can I know if the ATA RAID code is LBA48 compatible? The chipset is
    > a Promise 20378, which is supported, in theory.
    >
    > João Carlos Mendes Luís wrote:
    >
    >>Hi all,
    >>
    >> I've just bought a Seagate 250G SATA drive to run in a shared
    >>desktop at home. It should have 3 boot partitions: 16M FreeBSD 5, 16M
    >>linux, 32M NTFS for Windows XP. The remaining wil be formatted with
    >>FAT32 to be used as a common data for the 3 operating systems.
    >>
    >> Well, everything seemed to be fine. I copied the FreeBSD partition
    >>from the previous installed disk with dump(8), and installed XP from
    >>CDs. But suddenly, the data and NTFS partitions began to disappear. I
    >>don't know exactly what were the steps used to crash the disk, but it
    >>happened at least 3 times, after 3 full windows installs (which are not
    >>quick, for my sadness). In the last one I could almost detect it.
    >>
    >> I finished the initial windows instalation, and booted into FreeBSD
    >>to make sure the NTFS and FAT partitions were available. They seemed to
    >>be. Then I reboot into windows, and it crashed, with a missing HAL.DLL.
    >> Boot again into FreeBSD, and the NTFS partition still seemed ok. But I
    >>gone into the \WINDOWS\system32, and did an ls. The kernel pushed some
    >>errors with "bad magic" or something like that, and the file system
    >>locked. Also, the boot information for the first FAT32 partition has
    >>been completely destroyed, leaving it unreadable.
    >>
    >> The mainboard is an ASUS K8V, with 1G RAM. I'm running the 32 bit
    >>version of FreeBSD, although it is an AMD64 machine. The 250G SATA disk
    >>is on the promise RAID, and I have another PATA 120G on the promise
    >>RAID, and a 40G PATA on standard IDE.
    >>
    >> I already had a problem with a previous ASUS board in which the
    >>promise raid could not deal with disks bigger than 120G. The symptons
    >>were very similar. Could this be the problem? Does somebody know if
    >>FreeBSD or mount_ntfs has any kind of disk size limitation in this hardware?
    >>
    >> Oh, I did remember now that I was using mount_ntfs -o noatime, if
    >>that matters.
    >>
    >> Thanks for any help,
    >>
    >> Jonny
    >>
    >>PS: Now it has been fully reformatted with no NTFS, using FAT32 instead.
    >> But I'm afraid of getting into FreeBSD again in this machine. Please
    >>help! :-(
    >>_______________________________________________
    >>freebsd-hackers@freebsd.org mailing list
    >>http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
    >>To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
    >>From - Mon
    >
    > _______________________________________________
    > freebsd-hackers@freebsd.org mailing list
    > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
    > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
    _______________________________________________
    freebsd-hackers@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
    To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"


  • Next message: Scott Long: "Re: PCI Programming"

    Relevant Pages

    • slackware 9.1 software raid problem
      ... Setting up a RAID system with Slackware 8 is not extremely difficult once ... mirroring the root partition and booting from that mirror was not possible. ... Each disk is attached to a different IDE chain on the motherboard. ... The ability to boot from the Slackware 8 install CD. ...
      (alt.os.linux)
    • Re: some issues about partitions and boot manager in dual boot cases with Windows
      ... freeBSD edition. ... The first is installing on a disk that is completely given to FreeBSD ... master, Windows 2000 or XP, and on the other, on the first partition, the ... It requires its own slice. ...
      (freebsd-questions)
    • Re: Un-RAID on ICH8R?
      ... These are the supported migrations in Intel Matrix RAID. ... Would adding an extra disk and making it a recovery partition help? ...
      (alt.comp.hardware.pc-homebuilt)
    • Re: Moving existing FreeBSD system to a new harddisk...
      ... I have FreeBSD 6.2 installed on a Dell Latitude D400 laptop. ... from the old to the new hard disk. ... occupies the first slice (called primary partition) of each disk. ...
      (freebsd-questions)
    • Help! Repairing a RAID 1 dynamic disk
      ... Its a Dell Windows 2000 server with two SCSI hard drives running ... The two drives are configured with dynamic disk and software RAID ... The disk 0's C:OS partition is no longer synced to the disk 1's ...
      (microsoft.public.windows.server.general)