[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00701] Re: Linux kernel のバージョン管理
- Subject: [FDclone-users:00701] Re: Linux kernel のバージョン管理
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 10 Apr 2007 04:17:14 +0900
しらいです。
In Message-Id <070409225956.M0208981@mix.syd.odn.ne.jp>
<hma@syd.odn.ne.jp>さんwrites:
> 濱崎です。
> git でも、そこまでしなくてもあるファイルの変更履歴を追うことはできますよ。
> 私は、下の変更を見つけるのにカーネルの tarball のダウンロードは
> しなくて済みました。
あのインタフェースを見る限りでは容易ではないように見えまし
たが、何かコツでもあるでしょうか?
> >> かつては man page で _syscall5 の使い方を推奨しておいて、
> >> しかも lseek64() が出て来るまでは _syscall5 macro を使わない
> >> と 64bit access は出来なかった訳です。
>
> man page の記載については、手元にある llseek(2) には
>
> _syscall5(int, _llseek, unsigned int, fd, unsigned long, hi,
> unsigned long, lo, loff_t *, res, unsigned int, wh)
> /* Using syscall(2) may be preferable; see intro(2) */
その syscall(2) の推奨は割と最近になって追加された記述で、
昔はそんなことが書いてある kernel はありませんでした。
kernel 2.6 のどこかのタイミングで、それまでの標準だったも
のを一方的に「非推奨」にして、2.6.18〜2.6.20 の過程で、その
かつての標準をじわじわと抹殺していった訳です。
普通はここで portability とか compatibility とかを考えて、
かつて一度でも標準であったスタイルが今後も継承可能なように策
を練るものなんですが、Linux にはそういう配慮は無かったと。
syscall(2) には 64bits 引数を渡せないため、architecture や
kernel によって llseek の実装法は微妙に作法が異なります。か
つてはそれを <asm/unistd.h> が吸収してくれていました。
そういう対処法は多分に ad-hoc なので、今後は lseek64() を
使う方が標準になっていくんだと思いますし、そうなるべきだとも
思います。
ただ、標準が移っていくのと昔の作法が無効になってしまうのと
では意味が違う訳で、その辺りに無頓着な committer 達にはやる
せない思いを禁じ得ません。
やはり Linux とは使い続けるものではなくて、その一時に動か
すことだけを考えろということなんですかねー。
> ・ダメだった、間違えたと思ったらその路線は捨てて、別の道に活路を見出す、
> ・負の遺産はできる限り引きずらない
> というのが、Linux の良い所だと思っています。
後で後悔するような実装を commit してしまうような慎重さを欠
いた判断自体が間違っていますし、更にそれが標準になってしまっ
たことをなかったことにする姿勢も間違っています。
まぁ歴史がないから過去を振り返らないというのは判りますけど、
昨日のことすら忘れてしまおうというのでは単なる無責任でしょう。
*BSD なんか未だに 4.3BSD 時代の obsolete なインタフェースを
メンテしてますよ。
> 2.6.19、 2.6.20 での検証については、私の所では未だ目処が立っていません。
> 2.6.19 以降の Debian カーネルソースパッケージが出てくるまで、
> カーネルのバージョンアップを控えているためです。
この llseek() の対応はもう二回もの revision up を生んでい
るので、今度こそ恒久対応にしたいと思っています。2.6.20 での
動作確認が終わりまでは慎重に進めたいと思います。
VMware に FC6 を入れて compile までは検証しているんですが、
Windows partition への access という機能は実機でないと試す
ことが出来ないんですよね。
まぁ、いざとなれば USB の外付け HDD を買ってくれば、VMware
の中から USB storage として見えるとは思うんですが、実機環境
があるようならそっちの方が確実なので、是非試してみて下さい。
しらい たかし