Subject: msdosfs on a big endian machine
To: None <tech-kern@netbsd.org>
From: Tad Hunt <tad@entrisphere.com>
List: tech-kern
Date: 07/23/2001 21:31:54
sys/msdosfs/msdosfs_vfsops:msdosfs_mountfs() is having trouble
reading the MBR on the drive I partitioned and formatted on
a Windows 95 laptop.
(The drive in question happens to be an IBM Microdrive, not
that it should matter)
It fails to pass this test:
...
if (!(argp->flags & MSDOSFSMNT_GEMDOSFS)) {
if (bsp->bs50.bsBootSectSig0 != BOOTSIG0
|| bsp->bs50.bsBootSectSig1 != BOOTSIG1) {
error = EINVAL;
goto error_exit;
}
}
...
Because the signature bytes are reversed from what it is expecting.
(BootSectSig0 is 0xAA, and bsBootSectSig1 is 0x55)
Looking through the code, I would expect this test to work regardless
of the endianness of the host, which means that the bootsector itself
must be in a different order than expected. Has anyone ever seen this
problem?
I don't know if it matters, but I formatted the microdrive on
a Dutch friend's laptop (which was running a Dutch version of Win95)
Anybody seen anything like this?
Thanks,
-Tad