xattr on jffs2 (version. 5)

ひとまず完成。

パッチは↓からダウンロード可能。
http://www.kaigai.gr.jp/pub/xattr_on_jffs2.kernel.version-5.patch
http://www.kaigai.gr.jp/pub/xattr_on_jffs2.utils.version-5.patch

このバージョンで修正されているのは以下の項目

  • 最新の mtd-2.6.git ツリー向けに調整
  • EBS(Erase Block Summary)機能へのXATTRの対応

(sumtool コマンドの拡張を含む。)

  • 潜在的なrace conditionの修正
  • 同一のname/valueペアでXATTRを更新した時に、予期しないエラーが返却

される問題の修正

  • XATTRのname/valueペアを削除する際のバグを修正

・・・ふぅ、疲れた。

【追記】
MTDのメンテナ、David Woodhouse氏がxattr on jffs2の評価用にブランチのツリーを作成してくれた。
git://git.infradead.org/jffs2-xattr-2.6.git でアクセス可能なので、以下の手順でチェックアウトできる。
% git-clone git://git.infradead.org/jffs2-xattr-2.6.git jffs2-xattr-2.6.git

幾つかコメントももらった。(4)だけはよく考えて返答しないとダメだけど、この辺も修正しないと。
1. jffs2_acl_header 等のACL関連の構造体が typedef で定義されているので、これを struct で定義するようにしてほしい。
2. README.Locking に xattr_sem のドキュメントを追加してほしい。
3. jffs2_garbage_collect_xattr() のリターン時に、ロックを解放してリターンする時と、保持したままリターンする場合がある。バグではないが、わかりにくいので修正してほしい。
4. jffs2_inode_cache に list_head 構造体を追加しているが、これを単方向リストに変更できないか?(メモリ使用量削減のため)