11
« on: March 16, 2021, 10:02:29 pm »
Found this thread a bit late, but I'll answer some points
2Doug Bissett:
> I don't even consider using anything except the AN FAT32 driver. It seems to have a problem, or two, but nothing as bad as what 9.13 has (I don't even remember what the problems were). I did try the other one (with ExFAT, and FAT16, support), but decided that it wasn't really any better, and the FAT16 was interfering with the old OS/2 FAT16 support (not to mention the questionable legality of using it). At the time, I had no need for ExFAT, and still don't. It seems that nobody is using ExFAT anymore, even Microsoft doesn't seem to be pushing it.
How could FAT12/16 support interfere with IBM's FAT support, interestingly? Is not that Lewis Rosenthal who said you that nonsense? (I heard such a statement from him, withou any proof). If you would understand how IFS works, you'd know that only one IFS can mount a partition at a time, so they cannot conflict in any way. If one IFS has mounted a partition, anoyther one will fail. And you can choose, which IFS should mount a FAT partition. If /fat switch is not specified on fat32.ifs command line, then IBM's kernel driver is in use. If /fat is specified, then FS is remounted with fat32.ifs.
Regarding the exFAT, it is very useful if you use digital cameras. The SDXC cards are formatted with exFAT by default. So, if you need to copy data from someone else' camera without a reformat, you can use the Netlabs driver. if it's your own camers, you can reformat the card, of course. But no guarantee that the camera will support FAT32. In fact, it shouldn't, as the SDXC spec requires only exFAT support and FAT32 is optional. Also, exFAT supports files bigger than 2 GB. If you use FAT32 on latest cameras, you couldn't be able to copy videos larger than 2 GB, which lasts, with good quality, is about half an hour. So, you decide which FS to use. SDXC spec mandates exFAT support, but FAT32 support is optional. So, you're wrong saying that exFAT is not needed and even MS does not use it.
> (not to mention the questionable legality of using it)
What's the rubbish is that? Why it's not legal? Because AN fears Microsoft? There are several exFAT drivers for Linux. Nobody proved so far that they are illegal, the same for our driver.
2Rich Walsh: The BASEDEV is optional feature. QEMUIMG.DLL is optional too. You can delete it if you wish. The BASEDEV was created to be able to mount disk images with FS other than FAT/FAT32/exFAT. For example, ISO9660/CDFS works fine. Originally, I created support for mounting a FAT/FAT32/exFAT images to a subdirectory on FAT/FAT32/exFAT serving as a mountpoint. This is done by fat32.ifs itself as OS/2 cannot mount a FS to a subdirectory (only to a drive letter). Later, I created a BASEDEV for mouning other FS'es at a drive letter. The cachef32.exe daemon runs a thread which loads a QEMUIMG.DLL, monitors the IFS with FSCTL for open/read/write/close commands, and executes these requests via QEMUIMG.DLL. For a BASEDEV, I just decided to create a second similar thread monitoring the BASEDEV with IOCTL's. They are similar, so, both were put into cachef32.exe. Of course, it is possible to create a separate small daemon, but I just decided to use cachef32.exe to run worker threads. At least, fat32.ifs and cachef32.exe are present in any system, so no need to run more daemons if you need a loopback device support. So, I don't see a problem with this.
Regarding software patents and other rubbish. exFAT and FAT12/16 support is not more patented than FAT32. So, if M$ didn't sued us for using FAT32, then we could sleep in peace with FAT and exFAT as well. Specially for AN, I did created a version without exFAT support with all exFAT code ifdef'ed. So, if you fear M$ so much you could compile it without exFAT support at zero effort. No need to fork the IFS. But you forked it, not me. If someone wants a crippled version without disk image support as well -- no problem, I could #ifdef that too, if needed. Or I can create disk image support as a standalone package, as a compilation option. Unfortunately, I see almost no feedback, so no wonder.
Regarding not having performance improvements. This is indeed planned in the future, but there are some problems on the way. fat32.ifs is a 16-bit driver and has problems with bigger cache sizes. It's good that AN repaired (almost) the cache code. In my latest versions, I even backported the AN changes. But that code is still buggy so it's disabled so far. Also, my version is made sector-size independent. I successfully tested 2048-byte sectors on CDRW's formatted with FAT/FAT32/exFAT. But the cache code has 512-byte sectors hardcoded, that's another problem. I'd like to support other sector sizes in the cache as well. But then, caches with size bigger than 2048 KB, is required. But for that, I probably, need to wait until I convert the IFS to a 32-bit version (this is planned, and not only because of cache, it's also because 64-bit seek required for large files support is not working on 16-bit IFS-es, so I need to port it to 32 bits anyway. I also plan to port fat32.ifs to osFree in the future, so this is another reason to create a 32-bit IFS. I'd probably find a way to create a 16-bit or 32-bit version via an #ifdef).
PS: disk image/loopback support is still unfinished alpha-quality feature. I'd like some feedback regarding the image mounting feature and exFAT, but none so far. I am not aware of someone using these features, except myself.