@naota344の今週のLKML

今週は

  • KGTP (Linux Kernel debugger and tracer) 20111111 release (Android support OK)
  • Printk mulitple line message support
  • [RFC PATCH] tmpfs: support user quotas
  • [PATCH v2 0/8] Filesystem io types statistic
  • [PATCH 0/2 v2] Make task in balance_dirty_pages() killable

KGTP (Linux Kernel debugger and tracer) 20111111 release (Android support OK)

http://permalink.gmane.org/gmane.linux.kernel/1215121

Linux Kernelをgdbでremote debugやtraceできるようにするKGTPがAndroidサポートを追加したようです。
https://code.google.com/p/kgtp/wiki/HowToUseKGTPinAndroid

Printk mulitple line message support

http://permalink.gmane.org/gmane.linux.kernel/1215150

printkで出力されるカーネルのメッセージを見ていると

line 1 of message from printk user1
line 1 of message from printk user2
line 2 of message from printk user1
line 2 of message from printk user2

このように2つ以上のモジュールからのログが混ざってしまうことがあります。これだと読みにくいですね。そこで

{1}line 1 of message from printk user1
{2}line 1 of message from printk user2
{1}line 2 of message from printk user1
{2}line 2 of message from printk user2

のように先頭に自動的にIDをつけよう、というpatchです。

発想自体はなかなかいいように思うのですが、実装がもう少しかなーとか思います。もっといい実装がありそう…。

[RFC PATCH] tmpfs: support user quotas

http://permalink.gmane.org/gmane.linux.kernel.mm/69803

tmpfsにuser単位のquotaをできるようにしよう、というRFCなのですが…実装についてもめています。

元のpatchではrlimitを使っていますが、それに対して一般のquotaの実装をしてほしいと意見が出て対立しています。

rlimitの方は

Lennart Poettering http://permalink.gmane.org/gmane.linux.kernel.mm/69828

  • /tmpや/dev/shmが1つだけあればいい。userごとにpermissionが500のディレクトリを作りたくない
  • /dev/shmや/tmpの場所を変えるわけにはいかない (ユーザランドで混乱する)
  • (tmpfsはいろんなところにmountできるがその個所ごとではなく)tmpfs全体でuserごとの容量制限を行ないたい
  • (普通のdiskだとdisk上に残るからいいけど、tmpfsだとデータは消えてしまうので)quotaのデータを毎回tmpfsをmountするごとに設定したくはない

から、rlimitを使うのがいいという意見になっています。

一方でrlimitは目的としてquotaのような用途には合わない・rlimitは基本的にforkで継承されるからuserごとの制限にあわないといった点が指摘されています。

確かにrlimitを使えばすぐにシンプルに実装はできますが…全体としてhackyな感じしますね。

[PATCH v2 0/8] Filesystem io types statistic

http://permalink.gmane.org/gmane.comp.file-systems.ext4/29052

ファイルシステムがdiskにread/writeする時にその種類ごとにラベルをつけて統計をとれるようにしよう、というpatchです。

たとえばext4だと

  • メタデータ
    • super block
    • group descriptor
    • inode bitmap
    • block bitmap
    • inode table
    • extent block
    • indirect block
    • dir index and entry
    • extended attribute
  • データ
    • 通常のデータブロック

のような分類ができて、 /sys/fs/ext4/$DEVICE/io_stats でその統計を見ることができるようになります。

[PATCH 0/2 v2] Make task in balance_dirty_pages() killable

http://permalink.gmane.org/gmane.linux.file-systems/58843

balance_dirty_pages() の中で待機しているプロセスをkillできるようにしよう、というpatchです。

具体的にはwrite()してデバイスが取り除かれていたり、ファイルシステムのエラーが起きた時でもps で見て"D"状態のままではあるものの、SIGKILLでwakeupしてkillできるようになります。こうして途中でkillされた場合、writeはEINTRを返すようになるようです。