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