From da589ccf1cecec52d8c4e08233e0397706b93a23 Mon Sep 17 00:00:00 2001 From: Tomohiro Kusumi Date: Fri, 15 Nov 2019 04:09:07 +0900 Subject: [PATCH] sys/vfs/msdosfs: Assume up to 8192 bytes sector for BPB from freebsd/freebsd@dba17f21d375effcf89349e1d86b34b2f408ad0b --- sys/vfs/msdosfs/msdosfs_vfsops.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sys/vfs/msdosfs/msdosfs_vfsops.c b/sys/vfs/msdosfs/msdosfs_vfsops.c index d48243ff10..849c872fb8 100644 --- a/sys/vfs/msdosfs/msdosfs_vfsops.c +++ b/sys/vfs/msdosfs/msdosfs_vfsops.c @@ -77,7 +77,6 @@ extern struct vop_ops msdosfs_vnode_vops; struct iconv_functions *msdosfs_iconv; -#define MSDOSFS_DFLTBSIZE 4096 #define ENCODING_UNICODE "UTF-16BE" #if 1 /*def PC98*/ /* @@ -332,9 +331,9 @@ mountmsdosfs(struct vnode *devvp, struct mount *mp, struct msdosfs_args *argp) * Read the boot sector of the filesystem, and then check the * boot signature. If not a dos boot sector then error out. * - * NOTE: 2048 is a maximum sector size in current... + * NOTE: 8192 is a magic size that works for ffs. */ - error = bread(devvp, 0, 2048, &bp); + error = bread(devvp, 0, 8192, &bp); if (error) goto error_exit; bp->b_flags |= B_AGE; @@ -482,10 +481,11 @@ mountmsdosfs(struct vnode *devvp, struct mount *mp, struct msdosfs_args *argp) } if (FAT12(pmp)) - pmp->pm_fatblocksize = 3 * pmp->pm_BytesPerSec; + pmp->pm_fatblocksize = 3 * 512; else - pmp->pm_fatblocksize = MSDOSFS_DFLTBSIZE; - + pmp->pm_fatblocksize = PAGE_SIZE; + pmp->pm_fatblocksize = roundup(pmp->pm_fatblocksize, + pmp->pm_BytesPerSec); pmp->pm_fatblocksec = pmp->pm_fatblocksize / DEV_BSIZE; pmp->pm_bnshift = DEV_BSHIFT; -- 2.41.0