Lions' 本読み (115)

30m しかないけど頑張ってみます。昨日の続き。
struct inode な i_flag 属性に IUPD なフラグが立ってた場合の挙動について確認続行。問題になっているのは creat 時、ディレクトリエントリに空きが無かった場合に

7609                            dp->i_flag =| IUPD;

している部分です。dp はファイルを新規に作成するディレクトリエントリの struct inode なオブジェクトですね。

writei 手続き

む、テキスト 402p に以下な記述があります。

なぜ IUPD フラグを再度設定することが必要で、かつ望ましいことなのか考えよ (6285 行を参照)

Lions' Commentary on UNIX より引用
たしかに以下な初期設定して

6285    ip->i_flag =| IACC|IUPD;

ループの末端で再設定してますね。

6318            ip->i_flag =| IUPD;
6319    } while(u.u_error==0 && u.u_count!=0);

ループの中ではこの属性を操作しているような箇所はありません (というかこの手続き内でそうした記述はありません)。
時間切れ。writei 手続き、継続確認の方向です。