XATTR on JFFS2

Version.6 パッチに対する David Woodhouseからの指摘

  • xattr_datum に対するDELETE MARKERは要らないんじゃね?
  • Erase Block Sizeが64KiBよりも小さい時、XATTR_SIZE_MAXまでのXATTRを作れないのではないか?
  • という指摘があった。
xattr_datumとはname/valueペアを格納する構造体で、一意なID(xid)を持つ。
これとは別にxattr_refという構造体があり、これにはinode番号とxidのペアが格納され、xattr_refによってinodeとxattrが関連付けられる。

これらの関連付けは、setxattrやinodeの生成/削除時に行われる他、マウント時にも行われる。マウント時にxattr_datumをメディアから読み込んでも、参照するxattr_refが一つもない場合には自動的にxattr_datumはドロップされるため、実は明示的なDELETE MARKERは必要ないという意見。
これは確かにごもっとも。

後ろの指摘、確かにNAND-Flash等ではErase Block Sizeが8KiBなどの場合もあるが、SELinuxのセキュリティコンテキストやPOSIX-ACLを格納するには十分すぎるサイズである。
ちなみに、Ext2/3ではxattrの大きさはディスクのBlock-Sizeに制限されているために、最大でも4096バイト。やっぱこんなもんでしょと返事をしたら、こんな風に返答が。

> In my opinion, a xattr across multiple nodes isn't neccesary.
> What do you think?
I'd be happier if it worked -- some of us have plans to abuse XATTR
support by building a simple database on it... :)
これはアメリカンジョークだよな?アメリカンジョークだろ??というか、どこまで本気だ!?