Version 0.17b ============ * Made a mistake in releasing 0.17a. The bug in unreadable floppies and CD-ROMS still existed. Version 0.17b should fix it however. Version 0.17a ============ * Fixed bug in DirIterateEntries which would not release blocks correctly * Fixed bug which caused floppies and CD-ROMS to become unreadable Version 0.17 ============ * Implemented QUERY8.3 Query8.3 returns pure 8.3 path components for a given filename which may contain mixed (long filename and 8.3) path elements. This allows you start a win16 app by double clicking an icon with a long filename attached (explorer will use Query8.3 to get a pure 8.3 filename understood by the win16 applocation) * Implemented QUERYLONG_DIR Querylong_dir returns pure LFN path components for a given filename which may contain mixed (long filename and 8.3) path elements. This allows you to change directory on the command prompt using 8.3 filenames. Command.com will query the long filename and display that. So, "cd \long_~11" will result in "q:\lost+found" as current prompt. * A space character is invalid in win16/dos apps, they are also converted to a _ character * Fixed bug in opening dot files (.elmrc etc) * Added a "relax" option (/r on the mount command line). This will force fsdext2 to skip the partition ID check in mounting. * If no drive letter is given on the mount's command line, it will use the first available drive (if any). * fixed bug in following links as cyclic links will crash the machine. Fixed it by imposing a limit on the depth of symbolic name resolving. * Allowed special files (block devices, character devices, pipes, named sockets and sym. links) to be opened for reading. Applications will read a onle line message such: Block device, major 23, minor 12 * Allowed partitions to be unloaded via a /u option. For example: "mount /u h:". Unloading is quite safe as fsdext2 will keep track of the number of open files and whether or not it is currently handling file system calls. * Added copyright statement and licence agreement. Version 0.16 ============ * support for FS_ENUMHANDLE (yet another way for an application to retrieve a file's attributes!). This caused cygnus' "ls" to display incorrect time/attributes for files. * work-around for the following win95 feature: If you type "dir \etc\pass*" then IFSMgr translates this into "dir \etc\pass*.*" --> we don't see \etc\passwd Solution: if there is a wildcard (* or ?) just before a dot or just after it, the dot is replaced by a ? (match any character) This is also the reason why "grep foo *" failed to search in files without an extention. * _all_ file system calls will use case insensitive filename matching (up until this version this was only done for findfirst/findnext calls). First a case sesnsitive (absolute match) will be tried, if that fails, a case insensitive match is tried. Version 0.15 ============ * Fixed Fs_FileDateTime which not gave back the last_modified timestamp of an open file (caused copy/xcopy to fail) * Fixed Fs_Seek which could not seek from END (caused pkzip to fail uncompressing a file) * fixed bug in pattern matching * fixed bug in debug version which caused win95 to hang upon shutdown/reboot Version 0.14 ============ * fixed bug in TSD which incorrectly assigned the startsector of all ext2fs partitions in an extended partition to the startsector of the first ext2fs partition in that extended partition. This caused f.e. hda7 and hda8 to be mapped on hda5. * made debug level dynamically configurable * made ffirst/fnext calls perform case-insensitive file name matching * fixed memory leak in ffirst * in ffirst/fnext calls, --> don't allow symbolic links to be followed to directory entries due to possible recursion For example, /etc/inet is usually a sym. link to /etc (or . ?). Version 0.13 ============ * Changed the init order of the FSD --> IFSMgr routes mount requests to us first, prevent the FSD to crash in Win95 OEM2 (to be deteremined 15/06/97, one beta tester has succeeded) * changed layout when printing the partition table * fixed bugs in FileSeek and FileClose * fsdext2 return device name for directory label * fixed bug in FsdVolInfo * changed ffirst/fnext to return the device name as label Version 0.12 ============ * Changed the IOS registration which should prevent the FSDEXT2 to crash in Win95 OEM2 (to be deteremined 17/02/97) * Allowed to follow links Version 0.11 ============ * Fixed partition handling * Fixed bug in ReadFile which causes always the first block to be read in a multiple-block read Version 0.1 =========== * Initial version including block cache and directory entry cache. * Read only. KNOWN "BUGS" ========================= * Mounting a drive after the LASTDRIVE range, crashes the machine * BUS master IDE device drivers will report IDE drives as SCSI * dir command returns vmlinuz as a label * Mounting/umounting a couple of times disassociates drive A: * Some machines crash on reading the first MBR. * someone reported that his linux partition was marked as 93h (instead of the usual 83h). As a result fsdext2 wouldn't mount it. It could be due to the fact that lilo is installed on that partition. * There is a memory leak in 8.3 findfirst/findnext calls (FindContext cannot be passed as a pointer to SearchFile) * Failing a mount will not disassociate the drive letter. * Sometimes FSDEXT2 reports EIDE drives as being SCSI drives. * There seems to exists something like extended linux partitions (id=85h). Have to get more info on this one. * After the unload support I noticed that most time the inode table and block table are not empty after unloading a partition. I'm not sure the above mentioned leak in the 8.3 ffirst/fnext call account for all of these inodes and blocks haning around. THINGS THAT WILL NEVER (SEEMS TO) WORK ====================================== * you cannot open files whose filename starts with a dot (f..e, ~/.elmrc) from a dos/win16 application. Win32 applications work fine. You can always use the "converted" filename of cource (_ELMRC) * Cygnus' "ls" still displays the wrong time stamps for directory entries, but so does it on my normal FAT and CD-ROM partitions. This seems to be a bug in "ls" I think. * On systems using two IDE controllers with each of them having one HD attached, FSDEXT2 names the second disk "hdb" instead of "hdc" There is no easy way (as a matter of fact I don't even know a difficult way:-)) to retrieve this controller information in win95. Eventhough there are plenty fields in the DCB structure which indicate controller info, using a debugger I noticed that these fields are not set for my three IDE drives. * I'd like to return the name of the file system (i.e., "ext2fs") a LEVEL 2 query. However, if I do so, Win95 will search for it as a label using ffirst/fnext. Since "ext2fs" does not exist as a label these calls will fail. But then I cannot start a program from the Linux drive, that is, if the current dir. is g:\tmp" I cannot start "edit.com". TODO LIST: ========== * fix these TBlock and TInode "leaks" * fix hasfunc for objectname * cleanup block module * cleanup inode module * consider the leave the mutex in BlkGetBlock before * reading the block from disk * allow recursive mounts * link superblocks together * asynchronous read * read ahead * honour the inode flags (secure delete etc) * sanity checks for dir entries * sanity checks for descriptors in superblock * disk paramaters over all mounted file systems (after recursive mounts) * configurable caches