[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: backlight control via openfirmware



私も本命は wedge でしょ、でいいと思うんですが、
気になるところだけ返事しときます。

<20020619023609.85F034B24@coconut.itojun.org>の記事において
itojun@iijlab.netさんは書きました。

> 	僕はそうは思っていません。ディスクの中のdisklabelの置場は各diskの
> 	formatによって定まっていて、sys/arch/*/*/disksubr.cに似たコードの
> 	コピーがたくさんあるのはよくないと思っています。

「各 disk の format」ってのも何を指しているのかわかりませんが、
もともと BSD が動くことを想定していないマシンにおいて disklabel を
どこに書くか、ってのは最初に書いた人が決めただけの話でしょう。
たまたま同じものからコピーしたから同じようなコードに
なってるだけじゃないでしょうか。
#そもそも disklabel が仮想的にしか存在しない port もありますし。

決めてしまえば済む話ですけど、それぞれの port で native な
partition の形式を壊さないように決める必要があるので、
それを無理に一つにまとめる必要はないと思います。

> 	もし他のマシンからひっぺがしてmountできないのなら、FFS_EIとかの
> 	意味がないですよね?

disklabel を使わないでディスク全体を RAWPART の単一パーティションとして
mount する場合は disklabel 関係ないので FFS_EI は十分意味あります。
fdisk とかとは関係なく、そういう意味ではひっぺがして mount はできます。

> >現状 LABELSECTOR が 1でない port は fdisk partition を
> >使ってない port じゃないんでしょうか。 alpha もそうですし。
> 
> 	そんな簡単なルールにはなってません。ばらばらです。

mbr 使ってる port は macppc 以外みんな LABELSECTOR=1 じゃないでしょうか。
逆は真じゃないですが。

> 	readdisklabel()のほうはLABELOFFSETからしばらくmagic #を探すような
> 	しかけが入っています。対して、writedisklabel()は多くの場合
> 	LABELSECTOR/LABELOFFSETを決め打ちしています。
> 	このため、LABELOFFSETでないところ disklabelがあった場合、もととは
> 	違う場所にdisklabelが書かれることになります。
> 	この問題についてはどう考えますか?

これは問題というほどの話ではなくて、単に 4.4BSD/Lite2 の
sys/ufs/ufs/ufs_disksubr.c がそういうコードだったので
みんなが深く考えずにそれをコピーして直してないだけだと思います。
#これを MD に持ってきたのは NetBSD ですが。
これは readdisklabel() で magic を探すのなんてやめて
LABELOFFSET 決めうちで処理してやればいいんじゃないでしょうか。
実際そういう port もあると思います。

magic を探す、なんてことしてるのは LABELOFFSET が違っても
読むだけは読みたい、というような意図だとすると、
元あった場所に書くという気遣いがないのも納得はできます。

元あった通りのものを書きたいということならば動作仕様を決めて
writedisklabel() を実装するだけの話じゃないでしょうか。
sun3 と sparc はそのへん SunOS label の扱いに相違があって
互換性なくなってるんですが……
---
Izumi Tsutsui
tsutsui@ceres.dti.ne.jp