Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) .. SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) Read/Write HPFS 2.09
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) 1998-2004, Mikulas Patocka
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) :email: mikulas@artax.karlin.mff.cuni.cz
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) :homepage: https://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) Credits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) Chris Smith, 1993, original read-only HPFS, some code and hpfs structures file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 	is taken from it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) Jacques Gelinas, MSDos mmap, Inspired by fs/nfs/mmap.c (Jon Tombs 15 Aug 1993)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) Werner Almesberger, 1992, 1993, MSDos option parser & CR/LF conversion
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) Mount options
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) uid=xxx,gid=xxx,umask=xxx (default uid=gid=0 umask=default_system_umask)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 	Set owner/group/mode for files that do not have it specified in extended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	attributes. Mode is inverted umask - for example umask 027 gives owner
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 	all permission, group read permission and anybody else no access. Note
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	that for files mode is anded with 0666. If you want files to have 'x'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 	rights, you must use extended attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) case=lower,asis (default asis)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	File name lowercasing in readdir.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) conv=binary,text,auto (default binary)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	CR/LF -> LF conversion, if auto, decision is made according to extension
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	- there is a list of text extensions (I thing it's better to not convert
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	text file than to damage binary file). If you want to change that list,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	change it in the source. Original readonly HPFS contained some strange
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	heuristic algorithm that I removed. I thing it's danger to let the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	computer decide whether file is text or binary. For example, DJGPP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	binaries contain small text message at the beginning and they could be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	misidentified and damaged under some circumstances.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) check=none,normal,strict (default normal)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	Check level. Selecting none will cause only little speedup and big
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	danger. I tried to write it so that it won't crash if check=normal on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	corrupted filesystems. check=strict means many superfluous checks -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) 	used for debugging (for example it checks if file is allocated in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	bitmaps when accessing it).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) errors=continue,remount-ro,panic (default remount-ro)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 	Behaviour when filesystem errors found.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) chkdsk=no,errors,always (default errors)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) 	When to mark filesystem dirty so that OS/2 checks it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) eas=no,ro,rw (default rw)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 	What to do with extended attributes. 'no' - ignore them and use always
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	values specified in uid/gid/mode options. 'ro' - read extended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) 	attributes but do not create them. 'rw' - create extended attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	when you use chmod/chown/chgrp/mknod/ln -s on the filesystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) timeshift=(-)nnn (default 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	Shifts the time by nnn seconds. For example, if you see under linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) 	one hour more, than under os/2, use timeshift=-3600.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) File names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) ==========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) As in OS/2, filenames are case insensitive. However, shell thinks that names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) are case sensitive, so for example when you create a file FOO, you can use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) 'cat FOO', 'cat Foo', 'cat foo' or 'cat F*' but not 'cat f*'. Note, that you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) also won't be able to compile linux kernel (and maybe other things) on HPFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) because kernel creates different files with names like bootsect.S and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) bootsect.s. When searching for file thats name has characters >= 128, codepages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) are used - see below.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) OS/2 ignores dots and spaces at the end of file name, so this driver does as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) well. If you create 'a. ...', the file 'a' will be created, but you can still
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) access it under names 'a.', 'a..', 'a .  . . ' etc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) Extended attributes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) ===================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) On HPFS partitions, OS/2 can associate to each file a special information called
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) extended attributes. Extended attributes are pairs of (key,value) where key is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) an ascii string identifying that attribute and value is any string of bytes of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) variable length. OS/2 stores window and icon positions and file types there. So
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) why not use it for unix-specific info like file owner or access rights? This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) driver can do it. If you chown/chgrp/chmod on a hpfs partition, extended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) attributes with keys "UID", "GID" or "MODE" and 2-byte values are created. Only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) that extended attributes those value differs from defaults specified in mount
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) options are created. Once created, the extended attributes are never deleted,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) they're just changed. It means that when your default uid=0 and you type
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) something like 'chown luser file; chown root file' the file will contain
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) extended attribute UID=0. And when you umount the fs and mount it again with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) uid=luser_uid, the file will be still owned by root! If you chmod file to 444,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) extended attribute "MODE" will not be set, this special case is done by setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) read-only flag. When you mknod a block or char device, besides "MODE", the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) special 4-byte extended attribute "DEV" will be created containing the device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) number. Currently this driver cannot resize extended attributes - it means
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) that if somebody (I don't know who?) has set "UID", "GID", "MODE" or "DEV"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) attributes with different sizes, they won't be rewritten and changing these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) values doesn't work.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) Symlinks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) ========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) You can do symlinks on HPFS partition, symlinks are achieved by setting extended
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) attribute named "SYMLINK" with symlink value. Like on ext2, you can chown and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) chgrp symlinks but I don't know what is it good for. chmoding symlink results
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) in chmoding file where symlink points. These symlinks are just for Linux use and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) incompatible with OS/2. OS/2 PmShell symlinks are not supported because they are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) stored in very crazy way. They tried to do it so that link changes when file is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) moved ... sometimes it works. But the link is partly stored in directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) extended attributes and partly in OS2SYS.INI. I don't want (and don't know how)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) to analyze or change OS2SYS.INI.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) Codepages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) HPFS can contain several uppercasing tables for several codepages and each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) file has a pointer to codepage its name is in. However OS/2 was created in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) America where people don't care much about codepages and so multiple codepages
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) support is quite buggy. I have Czech OS/2 working in codepage 852 on my disk.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) Once I booted English OS/2 working in cp 850 and I created a file on my 852
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) partition. It marked file name codepage as 850 - good. But when I again booted
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) Czech OS/2, the file was completely inaccessible under any name. It seems that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) OS/2 uppercases the search pattern with its system code page (852) and file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) name it's comparing to with its code page (850). These could never match. Is it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) really what IBM developers wanted? But problems continued. When I created in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) Czech OS/2 another file in that directory, that file was inaccessible too. OS/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) probably uses different uppercasing method when searching where to place a file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) (note, that files in HPFS directory must be sorted) and when searching for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) a file. Finally when I opened this directory in PmShell, PmShell crashed (the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) funny thing was that, when rebooted, PmShell tried to reopen this directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) again :-). chkdsk happily ignores these errors and only low-level disk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) modification saved me.  Never mix different language versions of OS/2 on one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) system although HPFS was designed to allow that.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) OK, I could implement complex codepage support to this driver but I think it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) would cause more problems than benefit with such buggy implementation in OS/2.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) So this driver simply uses first codepage it finds for uppercasing and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) lowercasing no matter what's file codepage index. Usually all file names are in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) this codepage - if you don't try to do what I described above :-)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) Known bugs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) ==========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) HPFS386 on OS/2 server is not supported. HPFS386 installed on normal OS/2 client
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) should work. If you have OS/2 server, use only read-only mode. I don't know how
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) to handle some HPFS386 structures like access control list or extended perm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) list, I don't know how to delete them when file is deleted and how to not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) overwrite them with extended attributes. Send me some info on these structures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) and I'll make it. However, this driver should detect presence of HPFS386
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) structures, remount read-only and not destroy them (I hope).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) When there's not enough space for extended attributes, they will be truncated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) and no error is returned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) OS/2 can't access files if the path is longer than about 256 chars but this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) driver allows you to do it. chkdsk ignores such errors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) Sometimes you won't be able to delete some files on a very full filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) (returning error ENOSPC). That's because file in non-leaf node in directory tree
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) (one directory, if it's large, has dirents in tree on HPFS) must be replaced
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) with another node when deleted. And that new file might have larger name than
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) the old one so the new name doesn't fit in directory node (dnode). And that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) would result in directory tree splitting, that takes disk space. Workaround is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) to delete other files that are leaf (probability that the file is non-leaf is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) about 1/50) or to truncate file first to make some space.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) You encounter this problem only if you have many directories so that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) preallocated directory band is full i.e.::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	number_of_directories / size_of_filesystem_in_mb > 4.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) You can't delete open directories.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) You can't rename over directories (what is it good for?).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) Renaming files so that only case changes doesn't work. This driver supports it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) but vfs doesn't. Something like 'mv file FILE' won't work.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) All atimes and directory mtimes are not updated. That's because of performance
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) reasons. If you extremely wish to update them, let me know, I'll write it (but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) it will be slow).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) When the system is out of memory and swap, it may slightly corrupt filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) (lost files, unbalanced directories). (I guess all filesystem may do it).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) When compiled, you get warning: function declaration isn't a prototype. Does
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) anybody know what does it mean?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) What does "unbalanced tree" message mean?
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) =========================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) Old versions of this driver created sometimes unbalanced dnode trees. OS/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) chkdsk doesn't scream if the tree is unbalanced (and sometimes creates
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) unbalanced trees too :-) but both HPFS and HPFS386 contain bug that it rarely
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) crashes when the tree is not balanced. This driver handles unbalanced trees
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) correctly and writes warning if it finds them. If you see this message, this is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) probably because of directories created with old version of this driver.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) Workaround is to move all files from that directory to another and then back
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) again. Do it in Linux, not OS/2! If you see this message in directory that is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) whole created by this driver, it is BUG - let me know about it.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 204) Bugs in OS/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 205) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 206) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 207) When you have two (or more) lost directories pointing each to other, chkdsk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 208) locks up when repairing filesystem.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 209) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 210) Sometimes (I think it's random) when you create a file with one-char name under
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 211) OS/2, OS/2 marks it as 'long'. chkdsk then removes this flag saying "Minor fs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 212) error corrected".
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 213) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 214) File names like "a .b" are marked as 'long' by OS/2 but chkdsk "corrects" it and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 215) marks them as short (and writes "minor fs error corrected"). This bug is not in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 216) HPFS386.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 217) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 218) Codepage bugs described above
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 219) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 220) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 221) If you don't install fixpacks, there are many, many more...
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 222) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 223) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 224) History
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 225) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 226) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 227) ====== =========================================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 228) 0.90   First public release
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 229) 0.91   Fixed bug that caused shooting to memory when write_inode was called on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 230)        open inode (rarely happened)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 231) 0.92   Fixed a little memory leak in freeing directory inodes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 232) 0.93   Fixed bug that locked up the machine when there were too many filenames
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 233)        with first 15 characters same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 234)        Fixed write_file to zero file when writing behind file end
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 235) 0.94   Fixed a little memory leak when trying to delete busy file or directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 236) 0.95   Fixed a bug that i_hpfs_parent_dir was not updated when moving files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 237) 1.90   First version for 2.1.1xx kernels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 238) 1.91   Fixed a bug that chk_sectors failed when sectors were at the end of disk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 239)        Fixed a race-condition when write_inode is called while deleting file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 240)        Fixed a bug that could possibly happen (with very low probability) when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 241)        using 0xff in filenames.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 242) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 243)        Rewritten locking to avoid race-conditions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 244) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 245)        Mount option 'eas' now works
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 247)        Fsync no longer returns error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 249)        Files beginning with '.' are marked hidden
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 251)        Remount support added
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 253)        Alloc is not so slow when filesystem becomes full
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 254) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 255)        Atimes are no more updated because it slows down operation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 257)        Code cleanup (removed all commented debug prints)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 258) 1.92   Corrected a bug when sync was called just before closing file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 259) 1.93   Modified, so that it works with kernels >= 2.1.131, I don't know if it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 260)        works with previous versions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 261) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 262)        Fixed a possible problem with disks > 64G (but I don't have one, so I can't
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 263)        test it)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 264) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 265)        Fixed a file overflow at 2G
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 266) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 267)        Added new option 'timeshift'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 269)        Changed behaviour on HPFS386: It is now possible to operate on HPFS386 in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 270)        read-only mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 271) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 272)        Fixed a bug that slowed down alloc and prevented allocating 100% space
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 273)        (this bug was not destructive)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 274) 1.94   Added workaround for one bug in Linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 275) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 276)        Fixed one buffer leak
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 277) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 278)        Fixed some incompatibilities with large extended attributes (but it's still
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 279)        not 100% ok, I have no info on it and OS/2 doesn't want to create them)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 281)        Rewritten allocation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 282) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 283)        Fixed a bug with i_blocks (du sometimes didn't display correct values)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 285)        Directories have no longer archive attribute set (some programs don't like
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 286)        it)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 287) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 288)        Fixed a bug that it set badly one flag in large anode tree (it was not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 289)        destructive)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 290) 1.95   Fixed one buffer leak, that could happen on corrupted filesystem
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 291) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 292)        Fixed one bug in allocation in 1.94
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 293) 1.96   Added workaround for one bug in OS/2 (HPFS locked up, HPFS386 reported
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 294)        error sometimes when opening directories in PMSHELL)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 295) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 296)        Fixed a possible bitmap race
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 297) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 298)        Fixed possible problem on large disks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 299) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 300)        You can now delete open files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 302)        Fixed a nondestructive race in rename
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 303) 1.97   Support for HPFS v3 (on large partitions)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 304) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 305)        ZFixed a bug that it didn't allow creation of files > 128M
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 306)        (it should be 2G)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 307) 1.97.1 Changed names of global symbols
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 308) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 309)        Fixed a bug when chmoding or chowning root directory
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 310) 1.98   Fixed a deadlock when using old_readdir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 311)        Better directory handling; workaround for "unbalanced tree" bug in OS/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 312) 1.99   Corrected a possible problem when there's not enough space while deleting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 313)        file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 314) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 315)        Now it tries to truncate the file if there's not enough space when
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 316)        deleting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 317) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 318)        Removed a lot of redundant code
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 319) 2.00   Fixed a bug in rename (it was there since 1.96)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 320)        Better anti-fragmentation strategy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 321) 2.01   Fixed problem with directory listing over NFS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 322) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 323)        Directory lseek now checks for proper parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 324) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 325)        Fixed race-condition in buffer code - it is in all filesystems in Linux;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 326)        when reading device (cat /dev/hda) while creating files on it, files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 327)        could be damaged
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 328) 2.02   Workaround for bug in breada in Linux. breada could cause accesses beyond
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 329)        end of partition
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 330) 2.03   Char, block devices and pipes are correctly created
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 331) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 332)        Fixed non-crashing race in unlink (Alexander Viro)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 333) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 334)        Now it works with Japanese version of OS/2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 335) 2.04   Fixed error when ftruncate used to extend file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 336) 2.05   Fixed crash when got mount parameters without =
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 337) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 338)        Fixed crash when allocation of anode failed due to full disk
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 339) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 340)        Fixed some crashes when block io or inode allocation failed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 341) 2.06   Fixed some crash on corrupted disk structures
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 342) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 343)        Better allocation strategy
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 344) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 345)        Reschedule points added so that it doesn't lock CPU long time
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 346) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 347)        It should work in read-only mode on Warp Server
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 348) 2.07   More fixes for Warp Server. Now it really works
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 349) 2.08   Creating new files is not so slow on large disks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 350) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 351)        An attempt to sync deleted file does not generate filesystem error
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 352) 2.09   Fixed error on extremely fragmented files
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 353) ====== =========================================================================