NetBSD の tmpfs も調べてみる2009年02月03日 08時21分41秒

更に、FreeBSD の tmpfs のコードを調べていると、 For now, we do the linear lookup in the parent node. This has its own drawbacks. Not mentioning speed (that could be fixed by using hash), the real problem is the situation where several hardlinks exist in the dvp. But, I think this is fixable. とあった。つまり既知の問題ではあったわけだ。

i-node が同じと云う条件が必要にせよ、意図しないファイルが消えていくというのは恐いバグだ。

NetBSD の当該コードをみると、tmpfs_dir_lookup が使われている。

	dnode = VP_TO_TMPFS_DIR(dvp);
	node = VP_TO_TMPFS_NODE(vp);
	tmp = VFS_TO_TMPFS(vp->v_mount);
	de = tmpfs_dir_lookup(dnode, cnp);
	if (de == NULL) {
		error = ENOENT;
		goto out;

こちらは、ディレクトリ内をファイル名で探す関数なので、FreeBSD のような問題は起きない。この問題は、FreeBSD 固有のようだ。