HPFS 2.05 ɤ߽
1998-2001, Mikulas Patocka

email: mikulas@artax.karlin.mff.cuni.cz
homepage: http://artax.karlin.mff.cuni.cz/~mikulas/vyplody/hpfs/index-e.cgi

CREDITS:
Chris Smith, 1993, ɤ߽ФѤ HPFS, ɤ HPFS ¤
        եΤΤήѤޤ
Jacques Gelinas, MSDos mmap, fs/nfs/mmap.c (Jon Tombs 15 Aug 1993) 
        
Werner Almesberger, 1992, 1993, MSDos ץ parser  CR/LF
        Ѵ

ܸܹ <hng@ps.ksky.ne.jp>
    濭 <takei@webmasters.gr.jp>


ޥȥץ

uid=xxx,gid=xxx,umask=xxx (͡uid, gid ϶ 0umask ϥƥ
                          ΥǥեȤ umask Ǥ)
        ĥ°ǻꤵ owner/group/mode äƤʤե
        ꤷޤmode  umask ΥӥåǤ - 㤨С
        umask  027 ʤ顢owner Ϥ٤Ƶġgroup ɤ߽ФΤߡ
        other ϥǤʤѡߥåˤʤޤե
        mode  0666 ȤΥӥåѤˤʤ뤳ȤդƤե
         'x' 硢ĥ°ѤʤФʤޤ
        
case=lower,asis (ͤ asis)
        readdir ֤ե̾Ͼʸˤʤޤ
conv=binary,text,auto (ͤ binary)
        auto ξ硢CR/LF  LF Ѵ뤫ɤϳĥҤˤޤ
        - ƥȤγĥҤΥꥹȤޤ (ϡХʥե
        »ƥȥեѴʤۤ褤Ȼפޤ)
        ΥꥹȤѹСΥꥹȤѹƤ
        ɤ߽ФѤ HPFS ϡ䤬̯ʥҥ塼ꥹ
        ƥå르ꥺޤǤޤϥե뤬ƥȤ
        Хʥ꤫ԥ塼˷ꤵΤϴȹͤޤ㤨
         DJGPP ХʥϺǽ˾ʥƥȥåޤǤơ
        ĶǤϤǧ»뤫⤷ޤ
check=none,normal,strict (ͤ normal)
        Check Υ٥Ǥnone 򤹤ȡä®ʤΤȰ
        ˡ礭ʴ⤿餷ޤϡΤե
        ƥ check=normal Ǥ⡢å夷ʤ褦˽񤭤ޤ
        check=strict ¿βʥåԤޤ - ǥХå
        Ȥޤ (㤨Сե˥ե뤬ӥå
        ޥåǳƤƤ뤫åޤ)
errors=continue,remount-ro,panic (ͤ remount-ro)
        ե륷ƥΥ顼Ĥäο񤤤Ǥ
chkdsk=no,errors,always (ͤ errors)
        OS/2 å褦ˡե륷ƥ dirty ȥޡ
        ٤
eas=no,ro,rw (ͤ rw)
        ĥ°ɤΤ褦˰'no' - ̵뤷
        uid/gid/mode ץǻꤵ줿ͤѤޤ'ro' - ĥ°
        ɤߤޤϤޤ'rw' - ե륷ƥ
        chmod/chown/chgrp/mknod/ln -s ȤȤˡĥ°
        
timeshift=(-)nnn (ͤ 0)
        nnn ä֤֤򤺤餷ޤ㤨СOS/2 ǤΥॹפ
        ٤ơLinux  1 ֿʤɽ硢timeshift=-3600
        Ȥޤ


ե̾

OS/2 ǤΤ褦ˡե̾ʸʸ̤ޤ󡣤
ϡ̾ˤʸʸζ̤ȹͤޤΤǡ㤨Сե
FOO 硢'cat FOO', 'cat Foo', 'cat foo', 'cat F*' Ȥ
'cat f*' ϻȤޤ󡣤ˡͥ bootsect.S 
bootsect.s Τ褦̾äեΤǡHPFS ξ
Linux ͥ (䤿֤¾Τ) Υѥ뤬ǤʤȤȤ
դƤ128 ʸʾ̾äեθˤϡɥڡ
Ѥޤ - ʲ򻲾ȤƤ
OS/2 ϡե̾κǸΥɥåȤӥڡ̵뤷ޤΤǡ
ɥ饤ФƱͤˤƤޤ'a. ...' 硢ե 'a' 
ޤޤǤɤ 'a.', 'a..', 'a .  . . ' ʤɤ̾Ǥ⥢
Ǥޤ


ĥ°

HPFS ѡƥǡOS/2 ϳĥ°ȸƤФ̤ʾƥե
˴Ϣդ뤳ȤǤޤĥ°ϥͤΥڥǡ°̤
ʸǡѥХĹǤդʸǤOS/2 ϥɥ
ӥΰ֡ե륿פ򤽤˳Ǽޤ˥ե
ͭԤ䥢Τ褦 unix ͭξǼƤޤäɤǤ
Υɥ饤ФϤԤäƤޤHPFS ѡƥ
chown/chgrp/chmod ¹Ԥȡ "UID"/"GID"/"MODE"  2 Х
Ȥͤޤĥ°Τͤϡޥȥץǻ
줿ͤȰۤʤΤǤȡĥ°
Ϻ줺ѹǤϡ uid=0 ǡ'chown
luser file; chown root file' Τ褦Ϥ򤷤ե뤬ĥ°
UID=0 ˤʤ뤳Ȥ̣ޤơե륷ƥ umount ơ
uid="桼 uid" ȼäƺ mount եΥ桼
ϺޤǤɤ root ˽ͭޤե 444  chmod ʤ顢
ĥ° "MODE" ꤵ줺̤ʾ ɤ߽Фѥե饰
ꤵޤ֥å⤷ϥ饯ǥХ mknod "MODE"
˲äơ̤ 4 ХȤγĥ° "DEV" ǥХֹޤǺ
ޤߡΥɥ饤Фϳĥ°ΥѹǤޤ - ϡ
ï (ïΤޤ) ۤʤ륵 "UID", "GID", "MODE", "DEV"
°ꤷ硢餬ľ줺ͤѹʤ
Ȥ̣ޤ


ܥå

HPFS ѡƥǥܥå󥯤ޤܥå
 symlink ͤȼ "SYMLINK" Ȥ̾γĥ°ꤹ뤳Ȥ
ꡢ¸Ƥޤext2 Ʊͤˡܥå󥯤 chown 
 chgrp ǤޤϲΩĤΤΤޤ󡣥ܥå
 chmod 뤳Ȥϡܥå󥯤ؤե chmod 뤳
ˤʤޤΥܥå󥯤 Linux ӸǤOS/2 
ϸߴޤOS/2 PmShell Υܥå󥯤ϡȤƤ
ˡǳǼΤǡݡȤޤ󡣥ե뤬ư줿
ѹ褦ˤ褦Ȥޤưޤ
ʬŪ˥ǥ쥯ȥγĥ°ʬŪ OS2SYS.INI ˳Ǽ
OS2SYS.INI Ϥѹ뤳ȤϤޤ (ɤ뤫
Τʤ)


ɥڡ

HPFS ϡĤΥɥڡѤΤĤʸΤΥơ֥
ޤळȤǤƥե̾ˤ륳ɥڡؤΥݥ󥿤
äƤޤʤ顢OS/2 ϥɥڡˤޤ굤ʤͤ
ΥꥫǺޤΤǡʣΥɥڡΥݡȤϤȤƤ
¿ΥХޤϡǥ˥ɥڡ 852 ư
Ǥ OS/2 äƤޤ cp 850 ưѸǤ OS/2 ư
852 Υѡƥ˥եޤ 850 Ȥ
ե̾Υɥڡޡޤ - Ƥӥ
Ǥ OS/2 ưȤեϤʤ̾ǤǤ
ʤʤޤOS/2 ϥƥΥɥڡ (852) 򸡺ѥ
ʸȤեΥɥڡ (850) ̾ӤƤ褦Ǥ
ϰפ뤳ȤϤޤ󡣤ϼºݤ IBM γȯԤ˾
ΤǤ礦Զ³ޤ䤬Ǥ OS/2 ǤΥǥ
쥯ȥ̤ΥեΥեϤޤǤޤ
Ǥ֤OS/2 ϥե (HPFS ǥ쥯ȥΥեϥ
ȤƤ뤳ȤդƤ) ֤줿򸡺ӥե
򸡺ۤʤʸˡȤޤǽŪ PmShell 
Υǥ쥯ȥ򥪡ץ󤷤PmShell ϥå夷ޤ (̯
ȤˡƵưPmShell ϤΥǥ쥯ȥ٥ץ󤷤褦
ޤ :-)ʤȤˡchkdsk ϤΥ顼̵뤷ơ
low-level ǥߤäƤޤHPFS ϰĤΥ
 OS/2 ΰۤʤСߥåǤ褦߷פޤ
褷ƤϹԤʤǤ
ơʣʥɥڡΥݡȤ򤳤Υɥ饤Ф˼Ǥޤ
פˤʤ OS/2 ΥХΤΤ褦¿Զθˤ
ȹͤޤʤΤǡեΥɥڡǥåǤȡ
ʸӾʸƥեõˡΥɥ饤Фñ
եȥɥڡȤޤ̾٤ƤΥե̾ϤΥ
ڡˤޤ - ʤ嵭ǽҤ٤Ȥ򤷤Ƥʤ :-)


ΤΥХ

OS/2 о HPFS386 ϥݡȤޤ OS/2 饤
˥󥹥ȡ뤵줿 HPFS386 ưϤǤOS/2 ФäƤ
硢ñɤ߽Фѥ⡼ɤǻѤƤϡȥ
ꥹȤ⤷ϳĥѡߥåꥹȤΤ褦ʤĤ HPFS386 
¤򰷤ˡΤ餺ե뤬礽ˡ
ӳĥ°񤭤ʤˡΤޤ󡣻ˤι¤ξ
ƤСǤ礦ʤ顢Υɥ饤ФϡHPFS386
¤¸ߤΤ˲ʤɤ߽ФѤǺƥޥȤ
٤Ǥ (δ˾)

ĥ°Τνʬΰ褬ʤ硢ڤΤƤ졢顼
ޤ

ѥ 256 ʸĹ硢OS/2 ϥե˥Ǥޤ󤬡
Υɥ饤ФǤϤǤޤchkdsk ϤΤ褦ʥ顼̵뤷ޤ

դΥե륷ƥΥեǤʤȤ
ޤ (顼 ENOSPC ֤ޤ)ǥ쥯ȥĥ꡼ (ĤΥǥ쥯
꤬礭СHPFS Υĥ꡼ dirent ʣޤ) 
non-leaf ΡΥեϡˡ̤ΥΡɤ˺֤
ޤơοեϸŤΤ礭 name Ĥ⤷
ʤΤǡ name ϥǥ쥯ȥΡ (dnode) ˼ޤʤʤ
ޤη̡ǥ쥯ȥĥ꡼ʬ䤵졢ǥΰ򿩤Ȥ
ʤޤнˡϡleaf (֤ non-leaf ʥե 1/50 Ǥ)
¾Υե뤫ΰ뤿˺ǽ˥եڤͤ
꤬Τϡǥ쥯ȥ꤬󤢤ʤΤǡǥ
쥯ȥѤΰʬ˳ݤƤޤʤ
	ǥ쥯ȥ / ե륷ƥΥ(MB) > 4

ץ󤷤Ƥǥ쥯ȥǤޤ

ǥ쥯ȥĶ rename ϤǤޤ (ΩĤΡ)

ʸʸѹե̾ rename ưޤ󡣤Υɥ
ФϤ򥵥ݡȤޤvfs ϤƤޤ'mv file FILE' Τ
ʤΤưޤ

٤Ƥ atime  ǥ쥯ȥ mtime Ϲޤ󡣥ѥե
ޥ󥹤꤬뤫Ǥ򹹿˾礭СΤ
ƤС񤭤ޤ礦 (Ľ٤Ǥ礦)

ƥΥꤪӥåפϳ餷硢ե륷ƥ򾯤
⤷ޤ (եξüunbalanced directory)(ϥե
ƥबʤäƤޤȻפޤ)

ѥˡ"function declaration isn't a prototype" Ȥ
warning ޤ̣ΤïΤäƤޤ

"unbalanced tree" Υåϲ̣ޤ

Υɥ饤ФθŤСϡ unbalanced dnode tree 
OS/2  chkdsk ϡtree  unbalance Ǥޤ (ޤ
unbalanced tree Ƥޤޤ :-) HPFS  HPFS386 ξ
 tree  balance Ƥʤ˥å夹Хޤ
ɥ饤Ф unbalanced tree 򸫤Ĥȡ˰warning
񤭤ޤΥåФΤϡ֤󡢥ǥ쥯ȥ꤬Υɥ饤
ФθŤСǺƤ뤫Ǥнϡ٤ƤΥե
Υǥ쥯ȥ꤫̤Υǥ쥯ȥ˰ưˡΥǥ쥯ȥ
ᤷޤOS/2 ǤϤʤLinux ǹԤޤΥɥ饤ФΤ
줿ǥ쥯ȥǤΥåФʤ顢ϥХǤ - 
ϢƤ


OS/2 ˤХ

ơΥǥ쥯ȥؤ (ʾ) Υǥ쥯ȥȤ硢
chkdsk ե륷ƥ˥åޤ

OS/2  1 ʸ̾Υեˡ (ϥ
פޤ)OS/2 ϤĹ̾פȥޡޤchkdsk ϤΥե
 "Minor fs error corrected" ޤ

"a .b" Τ褦ʥե̾ OS/2 ˤäơĹ̾פȤƥޡ
ޤchkdsk Ϥ "" û̾פȥޡޤ (ơ
"minor fs error corrected" 񤭤ޤ)ΥХ HPFS386 Ǥϡ
ޤ

ɥڡΥХϾ嵭ǽҤ٤ޤ

fixpacks 򥤥󥹥ȡ뤷ʤСˡ¿ޤ




0.90 ǽθ꡼
0.91 ץ󤷤Ƥ inode Ф write_inode 򥳡뤹ȥ
     shoot 򵯤 (¿˵ޤ) Хޤ
0.92 ǥ쥯ȥ inode βǤΤäȤ꡼
     
0.93 ǽ15 ʸƱե̾󤢤ޥ󤬥å
     Хޤ
     ե륵Υեνüؤ write_file ޤ
     
0.94 Υե⤷ϥǥ쥯ȥ褦ȤΤ
     Ȥ꡼ޤ
0.95 եư i_hpfs_parent_dir ʤХ
     ޤ
1.90 2.1.1xx ͥκǽΥС
1.91 ǥκǸΥ chk_sectors ԤХޤ
     եκǸƤФ write_inode  race-condition 
     
     ե̾ 0xff Ѥ硢(㤤Ψ) 뤫⤷
     ʤХޤ
     race-condition 򤹤뤿˥å󥰤ľޤ
     ޥȥץ 'eas' ǽ褦ˤޤ
     Fsync 顼֤ʤޤ
     '.' ǻϤޤե hidden (ե) ȥޡޤ
     remount ΥݡȤɲäޤ
     ե륷ƥबդˤʤäalloc ٤ʤʤ褦ˤ
     
     atime ιư٤ΤǡԤʤȤˤޤ
     ɤ (٤ƤΥȤˤʤäƤǥХåץȤ)
     򤷤ޤ
1.92 ե close  sync ƤФ줿ΥХޤ
1.93 ͥ 2.1.131 ʾư褦ѹޤΥС
     ư뤫ɤ狼ޤ
     64G ĶǥǹͤԶޤ (
     ʥǥäƤʤΤǸڤǤޤ)
     ե뤬 2G ǥХեΤޤ
     ץ 'timeshift' ɲäޤ
     HPFS386 ο񤤤ѹޤ - ˤ HPFS386 ɤ߽
     ѥ⡼ɤǤޤ
     ΰ 100% Ƥ줿 alloc ٤ʤХޤ
1.94 Linux ǤΤХˤĤƤнɲäޤ
     Хåե꡼ޤ
     礭ʳĥ° (large extended attributes) ˸ߴʤä
     ޤ (ޤ100% ok ǤϤʤϤξ
     ƤʤOS/2 ФƤޤ)
     Ƥνľ
     i_blocks ˴ؤХޤ (du ϻͤɽ
     Ǥ)
     ǥ쥯ȥ°åȤݻʤޤ (򹥤ޤ
     ץबޤ)
     礭 anode ĥ꡼Ǹäե饰ꤹХޤ (
     ۤɤΤΤǤϤޤǤ)
1.95 줫ե륷ƥǵ뤳ȤΤХåե꡼
     ޤ
     1.94 ǤγƤΥХޤ
1.96 OS/2 ǤΤХˤĤƤнɲäޤ (PMSHELL ǥǥ쥯
     ȥ open 硢HPFS ϥåHPFS386 ϥ顼
     𤷤ޤ)
     ͤ bitmap race ޤ
     ͤ礭ʥǥԶޤ
     open ƤեǤ褦ˤޤ
     rename Ǥ˲ race ޤ
1.97 (礭ʥѡƥ) HPFS v3 򥵥ݡȤޤ
     128M ʾΥեǤʤäХޤ (2G ޤ
     ǤϤǤ)
1.97.1 Х륷ܥ̾ѹޤ
       롼ȥǥ쥯ȥ chmode ⤷ chown ΥХ
       ޤ
1.98 old_readdir ȤäΥǥåɥåޤ
     ǥ쥯ȥΰޤ - OS/2  "unbalanced tree" Υ
     н衣
1.99 ե˽ʬΰ褬ʤʤäιͤԶ
     ޤ
     ʬΰ褬ʤʤä硢եڤͤ褦ˤ
     ޤ
     Ĺʥɤ򤿤ޤ
2.00 rename ˤХ (1.96 餢ޤ) ޤ
     ե饰ơ򵯤ʤˡޤ
2.01 NFS Υǥ쥯ȥ򤹤ΥХޤ
     ǥ쥯ȥ lseek ŬڤʰΥåԤ褦ˤޤ
     ХåեΥɤˤ race-condition ޤ - 
      Linux Τ٤ƤΥե륷ƥˤޤեκ
     ǥХɤ (cat /dev/hda ) 硢ե뤬»Ϳ뤫
     ޤǤ
2.02 Linux  breada ˤХн򤷤ޤbreada ϥѡƥ
     κǸĶƥƤޤ⤷ޤǤ
2.03 饯֥åǥХӥѥפޤ
     unlink ˲ race ޤ (Alexander Viro)
     OS/2 ܸСư褦ˤޤ
2.04 ftruncate ĥե˻ȤäΥ顼ޤ
2.05 ޥȤǰ = ʤ硢å夷Τޤ
     anode γƤǥդǼԤ硢å夷Τ
     ޤ
     ֥å IO ⤷ inode ƤǼԤ硢å夷
     ޤ
