Cannot mount Sony Ericsson mobile phone, msdosfs too restrictive?
Raaf
raaf at zen.mooo.com
Sun Jul 1 19:51:26 UTC 2007
Hi, i got a Sony Ericsson mobile phone that came with a pre-formatted
memory stick that i'm unable to mount in FreeBSD (it mounts fine in
Linux).
After investigating i found out that the FreeBSD msdsofs driver bails
out on the following code (the pmp->pm_Heads being zero):
----------------------------------
if (!pmp->pm_BytesPerSec || !SecPerClust
|| !pmp->pm_Heads
#ifdef PC98
|| !pmp->pm_SecPerTrack || pmp->pm_SecPerTrack > 255) {
#else
|| !pmp->pm_SecPerTrack || pmp->pm_SecPerTrack > 63) {
#endif
error = EINVAL;
goto error_exit;
}
----------------------------------
Removing the check for pmp->pm_Heads fixes it for me.
Is the check for pmp->pm_Heads really necessary?
Grepping through the msdosfs sources i can only see it being used for
validation and not used in any calculation (the same applies for the
pmp->pm_SecPerTrack value)
--- sys/fs/msdosfs/msdosfs_vfsops.c.orig Sun Jul 1 20:42:14 2007
+++ sys/fs/msdosfs/msdosfs_vfsops.c Sun Jul 1 20:46:57 2007
@@ -483,7 +483,6 @@
/* XXX - We should probably check more values here */
if (!pmp->pm_BytesPerSec || !SecPerClust
- || !pmp->pm_Heads
#ifdef PC98
|| !pmp->pm_SecPerTrack || pmp->pm_SecPerTrack > 255) {
#else
More information about the freebsd-fs
mailing list