Dazukofs cannot be complied with kernel-2.6.30
Dazukofs が kernel-2.6.30ではコンパイルできない? †
- Environment(環境)
- linux-image 2.6.30-5
gcc version 4.3.4 (Debian 4.3.4-1)
- Date
- 2009/10/10 (2009/08/25)
kernel-2.6.30 の環境では、 dazukofs-3.1.0-rc2 はビルドできません。*1
This problem was solved in release 3.1.1.
dazukofs-3.1.1で解決されました。 (2009/10/09)
http://lists.gnu.org/archive/html/dazuko-devel/2009-10/msg00001.html
Error Message
make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.30-1-686'
CC [M] /dazukofs-3.1.0-rc2/file.o
/dazukofs-3.1.0-rc2/file.c: In function 'dazukofs_open':
/dazukofs-3.1.0-rc2/file.c:185: error: dereferencing pointer to incomplete type
make[4]: *** [/dazukofs-3.1.0-rc2/file.o] Error 1
make[3]: *** [_module_dazukofs-3.1.0-rc2] Error 2
make[2]: *** [sub-make] Error 2
make[1]: *** [all] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.30-1-686'
make: *** [dazukofs_modules] Error 2
Dazuko Help ML のスレッドによると、 file.c および ign_dev.c に
#include <linux/sched.h>
を入れてやれば良いようです。
3.1.0 releaseには入っていないのでパッチを当てることが必要です。
ref: http://lists.gnu.org/archive/html/dazuko-devel/2009-09/msg00001.html
dazukofs-3.1.1で解決されました。 (2009/10/09)
ref: http://lists.gnu.org/archive/html/dazuko-devel/2009-10/msg00001.html
また、Lino Sanfilippoによると以下のパッチをあてることも推奨されています。
John Ognessは、以下のパッチを重要なものとは考えていないので 3.1.0リリースには含まれていません。(2009/09/25)
(Following patches are also recommended by Lino Sanfilippo,but these are not included in 3.1.0 release).
http://lists.gnu.org/archive/html/dazuko-devel/2009-07/msg00020.html
http://lists.gnu.org/archive/html/dazuko-devel/2009-07/msg00021.html
パッチされたファイルのビルド結果は以下のようになりました。
make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.30-1-686'
CC [M] /O/dazukofs-3.1.0-rc2.patched/super.o
CC [M] /dazukofs-3.1.0-rc2.patched/inode.o
CC [M] /dazukofs-3.1.0-rc2.patched/file.o
CC [M] /dazukofs-3.1.0-rc2.patched/dentry.o
CC [M] /dazukofs-3.1.0-rc2.patched/mmap.o
CC [M] /dazukofs-3.1.0-rc2.patched/group_dev.o
CC [M] /dazukofs-3.1.0-rc2.patched/ign_dev.o
CC [M] /dazukofs-3.1.0-rc2.patched/ctrl_dev.o
CC [M] /dazukofs-3.1.0-rc2.patched/dev.o
CC [M] /dazukofs-3.1.0-rc2.patched/event.o
/dazukofs-3.1.0-rc2.patched/event.c: In function 'dazukofs_get_event':
/dazukofs-3.1.0-rc2.patched/event.c:1064: warning: 'grp' may be used uninitialized in this function
LD [M] /dazukofs-3.1.0-rc2.patched/dazukofs.o
Building modules, stage 2.
MODPOST 1 modules
CC /dazukofs-3.1.0-rc2.patched/dazukofs.mod.o
LD [M] /dazukofs-3.1.0-rc2.patched/dazukofs.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.30-1-686'
となり warning は出ているものの うまく動作しているようです。
Dazukofs cannot be complied with kernel-2.6.33/34
Dazukofs が kernel-2.6.33/34 ではコンパイルできない? †
(Newest rc3 cannot be compiled with kernel-2.6.32/30
rc2 rc3 が 2.6.32/30ではコンパイルできない。 )
According to the thread of linux-fs-devel, get_nlinks param is removed from fsstack_copy_attr_all.
linux/fs/fs_stack.h
before 2.6.32
extern void fsstack_copy_attr_all(struct inode *dest, const struct inode *src,
int (*get_nlinks)(struct inode *));
after 2.6.33
extern void fsstack_copy_attr_all(struct inode *dest, const struct inode *src);
Use following version .
kernel version | dazuko-fs version |
before 2.6.32 | 3.1.3-rc1 |
2.6.33,2.6.34,2.6.35 | 3.1.3 |
2.6.36 | 3.1.4 |
or Add NULL parameter to fsstack_copy_attr_all function in inode.c and dentry.c .
if you want to use 3.1.3 , the patch was posted at dazuko-devel forum.
Dazukofs cannot be complied with kernel-2.6.35
Dazukofs が kernel-2.6.35ではコンパイルできない? †
with Ubuntu 10.10 both DazukoFS 3.1.3 and DazukoFS 3.1.4-rc2 are not compiled.
3.1.3
/home/user1/dazukofs-3.1.3# make
make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /home/user1/dazukofs-3.1.3/super.o
CC [M] /home/user1/dazukofs-3.1.3/inode.o
CC [M] /home/user1/dazukofs-3.1.3/file.o
/home/user1/dazukofs-3.1.3/file.c: In function ‘dazukofs_fsync’:
/home/user1/dazukofs-3.1.3/file.c:243: warning: passing argument 2 of ‘lower_file->f_op->fsync’ makes integer from pointer without a cast
/home/user1/dazukofs-3.1.3/file.c:243: note: expected ‘int’ but argument is of type ‘struct dentry *’
/home/user1/dazukofs-3.1.3/file.c:243: error: too many arguments to function ‘lower_file->f_op->fsync’
/home/user1/dazukofs-3.1.3/file.c: At top level:
/home/user1/dazukofs-3.1.3/file.c:304: warning: initialization from incompatible pointer type
/home/user1/dazukofs-3.1.3/file.c:339: warning: initialization from incompatible pointer type
make[2]: *** [/home/user1/dazukofs-3.1.3/file.o] Error 1
make[1]: *** [_module_/home/user1/dazukofs-3.1.3] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [dazukofs_modules] Error 2
3.1.4rc2
/home/user1/dazukofs-3.1.4-rc2# make
make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /home/user1/dazukofs-3.1.4-rc2/super.o
/home/user1/dazukofs-3.1.4-rc2/super.c: In function ‘dazukofs_evict_inode’:
/home/user1/dazukofs-3.1.4-rc2/super.c:74: error: implicit declaration of function ‘end_writeback’
/home/user1/dazukofs-3.1.4-rc2/super.c: At top level:
/home/user1/dazukofs-3.1.4-rc2/super.c:108: error: unknown field ‘evict_inode’ specified in initializer
/home/user1/dazukofs-3.1.4-rc2/super.c:108: warning: initialization from incompatible pointer type
make[2]: *** [/home/user1/dazukofs-3.1.4-rc2/super.o] Error 1
make[1]: *** [_module_/home/user1/dazukofs-3.1.4-rc2] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
make: *** [dazukofs_modules] Error 2
Solution
copy file.c and ctl_dev.c form 3.1.4-rc2 to 3.1.3
only tested with ext2,ext3,ext4 filesystem
success log
/home/user1/dazukofs-3.1.3#make
make -C /lib/modules/`uname -r`/build SUBDIRS="`pwd`" modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.35-22-generic'
CC [M] /home/user1/dazukofs-3.1.3/super.o
CC [M] /home/user1/dazukofs-3.1.3/inode.o
CC [M] /home/user1/dazukofs-3.1.3/file.o
CC [M] /home/user1/dazukofs-3.1.3/dentry.o
CC [M] /home/user1/dazukofs-3.1.3/mmap.o
CC [M] /home/user1/dazukofs-3.1.3/group_dev.o
CC [M] /home/user1/dazukofs-3.1.3/ign_dev.o
CC [M] /home/user1/dazukofs-3.1.3/ctrl_dev.o
CC [M] /home/user1/dazukofs-3.1.3/dev.o
CC [M] /home/user1/dazukofs-3.1.3/event.o
LD [M] /home/user1/dazukofs-3.1.3/dazukofs.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/user1/dazukofs-3.1.3/dazukofs.mod.o
LD [M] /home/user1/dazukofs-3.1.3/dazukofs.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.35-22-generic'
Commnet †
- dazukofs のテストプロセス(test/showfilesを使った場合)はうまく動いていることが確認されていますが、avira-antivir 3.0.5との組み合わせで固まります。(Merlin) 2009/08/31
test/showfiles with libdazukofs.so works well but we found that Avira-Antivir_3.5.0 with this dazukofs-3.1.0-rc2.patched makes Kernel down.
- avira-aintivir 3.0.5.0 及び 3.0.5.11 のどちらもだめです。また、3.0.5.11のcontrib ディレクトリに変更はありませんので、まだ 2.6.30以降との組み合わせではうまく動かないようです。(Merlin) 2009/09/12
- dazukofs-3.1.2と avira-antivir-3.0.5.11の組み合わせで動作しているように見えます。解決か? (avira-antivir 側のcontribディレクトリには、 3.0.5.12,3.0.5.13でも変化なし。)
- Avira AntiVir? Server (Unix) も Version: 3.0.5-12(2009/08/31)でも問題があるようです。(Merlin) 2009/10/09
- avira-antivir-3.1.3.4-1でも kernel-2.6.30 以降用のdazukoは、contribに無い。(Merlin) 2010/06/09
- avira-antivir-3.1.3.5-0 でも contrib に変わりはない。(Merlin) 2011/04/28