zfs の buildworld に成功した2007年03月11日 11時35分48秒

zfs patchset 2 を試している。buildkernel は簡単な修正を施した後に成功した。

なぜだか分からないエラーが発生して、cd cddl && makemake buildoworld も失敗していた。メーリングリストの様子だと、他の人達は問題ないようである。少し手間取りずつもソースを追っていくと、unistd.h に問題があるらしかった。

unistd.h は /usr/src/compat/opensolaris/include/unistd.h に zfs パッチによって作られるみたいで、それを参照している。ファイルを表示すると空のファイルになっていた。

他にもパッチが当たっていたり、独自の変更もあるので、patch -R -p0 < zfs_20061117.patch をやり、zfs のパッチを無効にしたつもりだったが、それが正しく出来ていないのが原因だった。最初から、zfs 関連は全て削除して始めた方が良さそうだ。

zfs patchset 2 に追加して当てたパッチは以下の二つ。


--- sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c.orig2	Sun Mar  4 23:09:11 2007
+++ sys/contrib/opensolaris/uts/common/fs/zfs/dnode.c	Sun Mar  4 23:09:32 2007
@@ -605,7 +605,7 @@
 		dnode_t *winner;
 		dn = dnode_create(os, (dnode_phys_t *)db->db.db_data+idx,
 			db, object);
-		winner = atomic_cas_ptr(&children_dnodes[idx], NULL, dn);
+		winner = (dnode_t*)atomic_cas_ptr(&children_dnodes[idx], NULL, dn);
 		if (winner != NULL) {
 			dnode_destroy(dn);
 			dn = winner;


--- Makefile.inc1.orig	Sun Mar  4 01:50:22 2007
+++ Makefile.inc1	Tue Mar  6 00:06:37 2007
@@ -1013,7 +1013,7 @@
 		lib/libradius lib/libsbuf lib/libtacplus lib/libutil \
 		${_lib_libypclnt} lib/libz lib/msun \
 		${_secure_lib_libcrypto} ${_secure_lib_libssh} \
-		${_secure_lib_libssl}
+		${_secure_lib_libssl} lib/libthr
 
 _generic_libs=	cddl/lib gnu/lib ${_kerberos5_lib} lib ${_secure_lib} usr.bin/lex/lib

折をみて試していきたい。