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

João Carlos Mendes Luís jonny at jonny.eng.br
Thu Apr 28 14:00:00 PDT 2005


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 at freebsd.org mailing list
>>http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
>>To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
>>From - Mon
> 
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"


More information about the freebsd-hackers mailing list