Opened 2 years ago

Closed 2 years ago

#63 closed defect (fixed)

SVN rev 315: Specified /FAT switch: access to USB floppy (FAT12) becomes unbearingly slow

Reported by: erdmann Owned by:
Priority: major Milestone: Future
Component: IFS Version:
Severity: medium Keywords:


Using SVN rev 315:

1) added the /FAT switch to FAT32.IFS. The original intention was to be able to use a FAT16 partition > 2 GB as a dump partition (and therefore to get rid of UDUMPFS.IFS which by the way works fine just as you described in FAT32.IFS)
2) attached a USB floppy drive, inserted a floppy and attempted a read (via WPS)

The result was that it took for ages for the contents to show up. Accessing a file of only 20 bytes took for ages even though the actual floppy read was very short (the drive just kept spinning for a very long time without any apparent activity).

Removing the /FAT switch and therefore using the kernel builtin FAT12/FAT16 support fixed the problem, that is, it worked and works with a speed that can be expected from a floppy drive.

Would there be a chance to exclude FAT12 media from support by FAT32.IFS or at least make this configurable via a switch ?

Change History (6)

comment:1 Changed 2 years ago by Valery V. Sedletski

I don't know why displaying disk contents is so slow for you. On my machine it is sufficiently quick. Only copying files may be slow, because read-ahead is switched off in fat32.ifs. Opening files is much slower than in-kernel FAT, too, of course. But reading disk listing is not very slow, as I can see. Yes, it is significantly slower than in-kernel FAT because of missing optimizations like caching whole tracks with read-ahead. Maybe, this requires extra work.

2) attached a USB floppy drive, inserted a floppy and attempted a read (via WPS) 

Ah, you again use WPS for working with drives. Maybe, that's because of that it is slower, too. I use FC/2 and it seems to be not very slow (though, of course, slower, than the in-kernel FAT)

You can disable mounting floppies by fat32.ifs, if you wish, of course. For that, you need to specify the explicit list of drive letters to mount in

ifs=fat32.ifs ... /fat:cxw

exclude "a" lettter from the list. Only c:, x: and w: will be mounted. Others should be mounted by the in-kernel FAT driver.

comment:2 Changed 2 years ago by erdmann

It has nothing to do with WPS. It's also dog slow from the commandline to view a file's Contents on a floppy drive.
Every operation on a floppy (FAT12) takes for ages to complete. Have you ever tried with floppies, that is: for FAT12 ? FAT16 seems to be ok, at least it is not slower than FAT32.
I would need a switch with reverse effect: ignore any drive letter.That's because I have USB media with FAT16 where I cannot know what drive letter they will get. I think specifying those drive letters that you DO NOT want to support via FAT32.IFS would be better in general.

comment:3 Changed 2 years ago by Valery V. Sedletski

FAT12 is not slower than FAT16 or FAT32. I have a 32 MB FAT12 partition on my hard disk, for testing purposes, and it works very quick. As I said, floppies are slow because of inefficient caching. Real floppy support should cache tracks. So, here some additional work is required. A Switch for *disabling* a particular drive letter would be good, of course. But it is hard to process. It is easier to white-list required drive letters. If you need USB flash disk with constant drive letter, please create an LVM info with an explicit drive letter. To ignore *any* drive letter, you just need to delete the /fat switch.

PS: I thought about such a syntax: /fat:cdx-w, so that c:, d: and w: are enabled, but x: is disabled, but I am not sure how to process such command line. This may require an additional "disable" bitmask, probably. Need to think about that again. Maybe, "disable" and "enable" bitmasks should be mutually exclusive. So that, only "enable" or only "disable" masks should be specified. A "disable" mask should be prepended with a minus sign, like this: /fat:-dx, which means, disable d: and x: and enable all other drives.

Last edited 2 years ago by Valery V. Sedletski (previous) (diff)

comment:4 Changed 2 years ago by Valery V. Sedletski

Since r316, I implemented the exclusive (blacklisting) drive letter bitmasks, like this: /fat:-ax will disable mounting a: and x:. Also, there are similar bitmasks for fat32 and exfat: /fat32:-cdxw, /exfat:-or. I successfully tested the mask /fat:-a with a floppy disk a: and flash disk o:. The flash disk is mounted by FAT32.IFS and floppy disk is mounted with in-kernel FAT driver.

comment:5 Changed 2 years ago by erdmann

trying SVN rev 316: yes, specifying /fat:-ab excludes access to drive letters A and B from FAT32.IFS. I now can finally use a FAT16 partition for tracing (with 64 kBytes cluster size, as suggested) ! I can live with this setup.

Thanks ! I am closing this bug.

comment:6 Changed 2 years ago by erdmann

Resolution: fixed
Status: newclosed
Note: See TracTickets for help on using tickets.