Date: Fri, 02 Apr 2010 22:26:02 +0300 From: Andriy Gapon <avg@freebsd.org> To: Fabian Keil <freebsd-listen@fabiankeil.de> Cc: Kostik Belousov <kostikbel@gmail.com>, freebsd-current@freebsd.org, Bruce Evans <bde@zeta.org.au> Subject: Re: newfs_msdos and DVD-RAM Message-ID: <4BB644CA.4000807@freebsd.org> In-Reply-To: <4BB5D06C.8080902@freebsd.org> References: <3a142e751003190508x6a06868ene2e8fd9ddd977f66@mail.gmail.com> <3a142e751003191021p141af009m6acf7d160c890cbb@mail.gmail.com> <20100319191133.46fe271c@r500.local> <3a142e751003191126j331e525fwb9e5573bbf6f7d58@mail.gmail.com> <4BAA30CB.1070707@icyb.net.ua> <20100328172537.501ed3d1@r500.local> <4BB0A053.9060007@freebsd.org> <20100329222920.5eef6395@r500.local> <4BB111D4.8060809@freebsd.org> <20100330173637.202b4b1e@r500.local> <4BB21BBA.7030407@freebsd.org> <4BB360A1.7020309@freebsd.org> <20100402125721.50b3ba4f@r500.local> <4BB5D06C.8080902@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
on 02/04/2010 14:09 Andriy Gapon said the following:
> on 02/04/2010 13:57 Fabian Keil said the following:
>> Andriy Gapon <avg@freebsd.org> wrote:
>>> Anyways, here is a patch that I would use.
>>> Unfortunately, ENOTIME to understand newfs_msdos code and fix it too,
>>>
>>> --- a/sys/fs/msdosfs/msdosfs_vfsops.c
>>> +++ b/sys/fs/msdosfs/msdosfs_vfsops.c
>>> @@ -580,6 +580,7 @@ mountmsdosfs(struct vnode *devvp, struct mount *mp)
>>> || (pmp->pm_BytesPerSec & (pmp->pm_BytesPerSec - 1))
>>> || (pmp->pm_HugeSectors == 0)
>>> || (pmp->pm_FATsecs == 0)
>>> + || (SecPerClust * pmp->pm_BlkPerSec > MAXBSIZE / DEV_BSIZE)
>>> ) {
>>> error = EINVAL;
>>> goto error_exit;
>> That works, too:
>>
>> fk@r500 ~ $sudo mdconfig -a -t vnode -f /tank/ipod-image-formatiert
>> md0
>> fk@r500 ~ $sudo mount_msdosfs /dev/md0 /mnt/
>> mount_msdosfs: /dev/md0: Invalid argument
>>
>> Is there a chance that this, or some other workaround, could be committed?
>
> Yes, there is 99.99% chance of this happening :-)
> Now, if someone could fix newfs_msdos issue too.
> I could easily reproduce it this way:
>
> $ truncate -s 5G test.img
> $ mdconfig -a -t vnode -f test.img -S 2048 -u 0
> $ newfs_msdos -F 32 /dev/md0
>
OK, I did it again.
I tested the below patch using the scenario described above.
Could you please review and/or test this patch?
If you like it and it works, I can commit it.
Thanks!
--- a/sbin/newfs_msdos/newfs_msdos.c
+++ b/sbin/newfs_msdos/newfs_msdos.c
@@ -427,6 +427,9 @@ main(int argc, char *argv[])
if (bpb.bpbBytesPerSec < MINBPS)
errx(1, "bytes/sector (%u) is too small; minimum is %u",
bpb.bpbBytesPerSec, MINBPS);
+ bpb.bpbSecPerClust /= (bpb.bpbBytesPerSec / MINBPS);
+ if (bpb.bpbSecPerClust == 0)
+ bpb.bpbSecPerClust = 1;
if (!(fat = opt_F)) {
if (opt_f)
fat = 12;
--
Andriy Gapon
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BB644CA.4000807>
