« ZFSインテントログ(ZIL) | トップページ | Sun MicrosytemsのPSARC、ついでにZFSの重複排除(Dedupe) »

2009年7月10日

OpenSolarisのバグとソースコード修正箇所の対応付け

私はカスタマサポートエンジニアだが、障害対応の時にソースコードを参照することがよくある。日本のユーザは修正内容について細かく知りたがる。Webで公開している技術情報ではもちろん、バグデータベースに開発者が書いたコメントでも説明しきれない。そう言うときはソースコードにあたる。

OpenSolarisに関わることが増えてきたので、登録されたバグに対してソースコードのどこが修正されたのかを見つける方法を調べた。ちょっと面倒だが、OpenSolarisのコードリポジトリ(http://repo.opensolaris.org/)にアクセスできれば簡単なのかもしれないが、私のアカウントは権限がないと拒否される。プロジェクトに参加しないとだめなのだろうか。

まずBugster(http://bugs.opensolaris.org/)でバグの状況を調べる。たとえば「6740597  zfs fletcher-2 is losing its carries」は10-Fix Delivered (Fix available in build) なので、既に修正がリリースされている。修正が含まれるビルドはRelease Fixed欄に書いてあるsolaris_nevada(snv_114) である。

各ビルドのソースコードはON Download Archives(http://dlc.sun.com/osol/on/downloads/)にアーカイブされている。ビルド114はb114(http://dlc.sun.com/osol/on/downloads/b114/)である。

このビルドに含まれる変更はFull HTML Changelog (with files updated)に書いてある。たしかに6740597が入っていて、変更されたファイルのフルパスも分かる。

Issues Resolved:
    BUG/RFE: 6740597 zfs fletcher-2 is losing its carries
Files Changed:
    update:usr/src/grub/grub-0.97/stage2/zfs-include/zio.h
    update:usr/src/uts/common/fs/zfs/fletcher.c
    update:usr/src/uts/common/fs/zfs/sys/zio.h

ソースコードはON Source(http://dlc.sun.com/osol/on/downloads/b114/on-src.tar.bz2)である。これをダウンロードする。比較するために、一つ前のビルド(b113)のソースもダウンロードする。変更ファイルをdiffすると、ソースコードのどの部分が変更されたかが分かる。6740597では、usr/src/uts/common/fs/zfs/sys/zio.hの79行目が次のように変更されている。

b113

#define    ZIO_CHECKSUM_ON_VALUE    ZIO_CHECKSUM_FLETCHER_2

b114

#define    ZIO_CHECKSUM_ON_VALUE    ZIO_CHECKSUM_FLETCHER_4

つまり、チェックサムをONに設定したときのアルゴリズムをfletcher-2からfletcher-4に変更したということである。6740597はfletcher-2の脆弱性を指摘したもので、より強力なfletcher-4をデフォルトとすることで対処したようだ。このバグに関連するディスカッションはzfs-codeの次のスレッドである。

fletcher2/4 implementations fundamentally flawed
http://www.opensolaris.org/jive/thread.jspa?threadID=69655

Bugsterは私のアカウントだと、バグの最初のレポート内容しか出てこないが、アカウントの権限によってはその後の議論や修正コードへのリンクなどが見られるのかもしれない。

(注)Firefoxならmozilla-central(http://hg.mozilla.org/mozilla-central/summary)で修正履歴が分かるし、Bugzilla(https://bugzilla.mozilla.org/)の関連バグにもリンクされている。

|

« ZFSインテントログ(ZIL) | トップページ | Sun MicrosytemsのPSARC、ついでにZFSの重複排除(Dedupe) »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« ZFSインテントログ(ZIL) | トップページ | Sun MicrosytemsのPSARC、ついでにZFSの重複排除(Dedupe) »