9.5 inodeからストレージ領域へのマッピング を読み直しました。
以前ここを読んだ時に、
p.287のitrunc()の12行目の
if((rp->i_mode&(IFCHR&IFBLK) != 0)は
if((rp->i_mode&(IFCHR|IFBLK) != 0)
の間違いのような気がします。
と書いたのですが勘違いでした。
IFCHRは020000
IFBLKは060000
IFDIRは040000
なのでオリジナルの論理だとキャラクタデバイスかブロックデバイスなら何もせずリターンする=それ以外の普通のファイルまたはディレクトリならデータ領域があるので先に進んで解放する、ことになりますから正しいですね。
ビットではなく値で考えてしまったのが勘違いの原因でした。
しかも12行目ではなく8行目でした(^_^;
誤解に気付くことができたのは多少なりと理解が進んできたからだと思います。
以前ここを読んだ時に、
p.287のitrunc()の12行目の
if((rp->i_mode&(IFCHR&IFBLK) != 0)は
if((rp->i_mode&(IFCHR|IFBLK) != 0)
の間違いのような気がします。
と書いたのですが勘違いでした。
IFCHRは020000
IFBLKは060000
IFDIRは040000
なのでオリジナルの論理だとキャラクタデバイスかブロックデバイスなら何もせずリターンする=それ以外の普通のファイルまたはディレクトリならデータ領域があるので先に進んで解放する、ことになりますから正しいですね。
ビットではなく値で考えてしまったのが勘違いの原因でした。
しかも12行目ではなく8行目でした(^_^;
誤解に気付くことができたのは多少なりと理解が進んできたからだと思います。