つまり、btrfs_new_inode()でBTRFS_I(inode)->root = root; をする前に条件分岐の内側でiput()してるのが原因? http://t.co/IHhnKTx2jI
2013-06-04 14:52:58@syuu1228 そうなんですけど、多分その順序を直すべきではなくて、drop_inode側で0のケースに対処すべきな気がします。
2013-06-04 14:57:00@syuu1228 新しいinode作って、それを親ディレクトリとつなげるタイミングでの失敗でiputしてますからねえ。このタイミングでrootが0になってていいかどうかはちょっとジャッジしづらいです。 Chris Masonしか判断できないレベルかも。
2013-06-04 15:03:38@naota344 rootってparent directoryで、つなげるタイミングで失敗してin odeをdropするときに0でぬるぽか。ああ…それはdrop_inodeで対処すべき話題だなぁきっと
2013-06-04 15:05:03@syuu1228 rootはparentじゃなくてfilesystem rootですよ。btrfsの場合、subvolumeとかsnapshot作れるから、rootが複数存在しうるのでここにいれてます。
2013-06-04 15:06:34@naota344 うーん…?ならやっぱその場合でも無条件に代入できるんとちゃうん(すぐ捨てるからしてもしょうがない?)
2013-06-04 15:07:33@syuu1228 まあ代入していてもいいんですよね。履歴見てるとここでiputするようになった2009年当時ではbtrfs_drop_inodeがなくてroot==NULLでも死なないんですね。どっちに手をいれるかほんとびみょうなところ
2013-06-04 15:32:37@naota344 @syuu1228 iput の先で btrfs_destory_inode に戻ってきたりする?そうなら root は NULL のままのほうがいいんでない?
2013-06-04 16:28:44