2.6.39 merge window

User visible

  • ファイルをハンドラで扱うためのシステムコールが追加。ユーザ空間で動作するファイルシステムを書く際に、便利。XFS におけるバックアップ・リストア処理や、階層ストレージ管理システムで活躍。


int name_to_handle_at(int dfd, const char *name, struct file_handle *handle,
int *mnt_id, int flag);
int open_by_handle_at(int dirfd, struct file_handle *handle, int flags);

  • open() システムコールに O_PATH オプションが追加。これを用いてオープンしたファイルは「パス解決がされた状態」となる。ファイルディスクリプタを sendmsg(SCM_RIGHTS) で他のプロセスに送信すれば、相手プロセスからはディレクトリのように振舞い、相対パスで指定する *at() 系のシステムコールが利用できる。
  • SCHED_IDLE プロセスを SCHED_BATCH や SCHED_OTHER に変更できるように。
  • POSIX クロックを調節するシステムコール clock_adjtime() が追加。


int clock_adjtime(clock_id which_clock, struct timex *time);

  • CLOCK_BOOTTIME. 2.6.38 でタイマをカーネル内の複数のユーザから使えるようにする timerqueue がマージされ、RTC に複数のアラームイベントを仕掛けられるようになったが、これをユーザ空間に expose するために、POSIX clock に CLOCK_RTC クラスが追加された。
  • SandyBridge 対応
  • ipset 機能。iptables のルールに合うような IP アドレス・ポート番号・MAC アドレスのグループを簡単に生成することができる。
  • TCP スタックの輻輳ウィンドウの初期値が大きくなり、ウェブページのロードやサーバ集約型のタスクの遅延が軽減された。http://lwn.net/Articles/427104/
  • 新しいシステムコール syncfs() が追加。あるファイルディスクリプタを含むファイルシステムのみ sync() する。
  • USB 3.0 対応 (コア部分のみ)
  • transcendent memory が staging ツリーに。メモリ上に圧縮形式の退避領域を作成し、メモリ効率を高める。http://lwn.net/Articles/340080/
  • multi-queue priority scheduler。ネットワーク層におけるキューイングの規則が追加。QoS 関連の処理をハードウェアにオフロードすることができる。
  • CHOKe flow scheduler。ネットワーク越しに通信する相手ノードに到達するまでに経由するノードにおけるバッファ(キュー)のサイズを適正に保つことで混雑を軽減する。ランダムに取り出した2つのパケットが同一の通信に属していた場合、その通信は帯域を占有しすぎていると見なし、転送を抑制する。http://lwn.net/Articles/422477/
  • IPSEC シーケンス番号を拡張する RFC 4303 をサポート
  • Unicode 32 bit RISK サポート

Kernel developer visible

  • 新しい割り込みフラグ IRQF_FORCE_RESUME が追加。suspend 中に disable された場合、resume 処理の中で re-enable される。
  • 割り込みハンドラをスレッドで実行できる threadirq 機能が追加。デバッグ用途。
  • トレースやログから対象オブジェクトを特定しやすくなる debug hint 機能の追加。
  • deprecate な lock 初期化マクロ (SPIN_LOCK_UNLOCKED, RW_LOCK_UNLOCKED) を廃止。
  • perf が特定 cgroup に属するプロセスのみ追跡するためのオプション -G が追加。
  • KVM ゲストがロックを取ったままスピンするとき、スリープしないようにすることでゲストの性能を向上させる direct yield (yield_to()) が追加。
  • POSIX clock を動的に追加する仕組みが追加。
  • 新しい global workqueue (system_freezable_wq) が追加。システムサスペンド中に workqueue の状態を凍結できる。
  • 電源管理機能のコールバックを登録する syscore_ops 機構が追加。余計なシステムデバイスを作成する必要がなくなる。
  • big kernel lock が完全に排除
  • 動的デバック機構が追加。関数名、行番号、モジュール名、スレッド ID を表示するかどうか制御可能に。http://lwn.net/Articles/434833/
  • DMI の生データが sysfs 経由で開示され、従来のように /dev/mem を経由しなくて済むように。
  • ネットワークドライバで ndo_rx_flow_steer() を用いてハードウェアの RFS (Receive Flow Steering) を有効にできるように。
  • pstore ファイルシステムにより、リブートを跨いで情報を保持できるように。http://lwn.net/Articles/434821/
  • makefile の EXTRA_{C,A}FLAGS が {cc,as}flags-{y,m} に変更
  • kmem_cache_name() が廃止
  • SLUB に lockless fast path ガ実装され、性能向上。
  • カーネルスレッドを特定の NUMA ノードを指定して走らせられるように。kthread_create_on_node()
  • delete_from_page_cache() が新しく追加。既存の remove_from_page_cache()(これは廃止) と違って参照カウントをデクリメントし、add_to_page_cache() と対になる形。
  • 文字列型を整数型に変換する関数一式が追加。http://lwn.net/Articles/435022/
  • hwspinlock により異なる OS が走る CPU 間で同期を取ることが可能に。