On Tue, Oct 02, 2007 at 12:48:26PM +0200, Oliver Fromme wrote:
> Daniel Graupner wrote:
> > Bernd Walter wrote:
> > > Ja - und da steht genau das, was ich vermutet habe, nämlich
> > > "4096 byte sectors".
> > > msdosfs versucht genauso wie dein dd einen 2048 Byte Zugriff, was
> > > nun mal nicht geht, da es kein vielfaches der Blockgröße ist.
> > > Entweder irgendjemand bringt msdosfs bei, dass es größere Zugriffe
> > > zu verwenden hat, wenn das Laufwerk das erfordert, oder du versuchst
> > > es mal mit den mtools aus den Ports, die evtl. das Problem nicht haben.
> >
> > Oder ich formatiere den Ipod mit 2KB Blockgröße neu, aber ich vermute mal das
> > 4K schon eine vernünftige Voreinstellung ist...bei so großen Datenträgern.
>
> Ich kenne keinen USB-Flash-Speicher, den man neu formatie-
> ren könnte (wohlgemerkt den Flash, _nicht_ das msdosfs).
> Ich bezweifle mal, dass das beim ipod geht, geschweige
> denn mit einer anderen Blockgröße.
>
> Du könntest mal in /sys/fs/msdosfs/msdosfs_vfsops.c test-
> weise in Zeile 441 die »2048« durch »4096« ersetzen, dann
> den Kernel neubauen, installieren und rebooten.
>
> error = bread(devvp, 0, 2048, NOCRED, &bp);
>
> Ich habe relevante Teile des Sources überflogen und sehe
> keinen Hinderungsgrund, warum das nicht funktionieren soll-
> te, denn für weitere Operationen wird dann DEV_BSIZE ver-
> wendet. Testen kann ich das aber nicht, da meine Flash-
> Sticks alle brav mit 512 Byte-Blöcken arbeiten. Zumindest
> sollte er bei Dir damit ein bisschen weiterkommen.
>
> (Die saubere Lösung wäre natürlich, auch beim Lesen des
> Bootsektors DEV_BSIZE zu verwenden. Aber das kann man
> dann ja später noch machen, wenn man den PR schreibt.)
PR erübrigt sich:
----------------------------
revision 1.166
date: 2007/07/12 17:17:47; author: bde; state: Exp; lines: +6 -8
Round up the FAT block size to a multiple of the sector size so that i/o
to the FAT is possible.
Make the FAT block size less arbitrary before it is rounded up:
- for FAT12, default to 3*512 instead of to 3 sectors. The magic 3 is
the default number of 512-byte FAT sectors on a floppy drive. That
many sectors is too many if the sector size is larger.
- for !FAT12, default to PAGE_SIZE instead of to 4096. Remove
MSDOSFS_DFLTBSIZE since it only obfuscated this 4096.
For reading the BPB, use a block size of 8192 instead of 2048 so that
sector sizes up to 8192 can work. We should try several sizes, or just
try the maximum supported size (MAXBSIZE = 64K). I use 8192 because
that is enough for DVD-RW's (even 2048 is enough) and 8192 has been
tested a lot in use by ffs.
This completes fixing msdosfs for some large sector sizes (up to 8K
for read and 64K for write). Microsoft documents support for sector
sizes up to 4K in mdosfs. ffs is currently limited to 8K for both
read and write.
Approved by: re (kensmith)
Approved by: nyan (several years ago)
-- B.Walter http://www.bwct.de http://www.fizon.de bernd(at)bwct.de info(at)bwct.de support(at)fizon.de To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Tue 02 Oct 2007 - 13:47:10 CEST