[CALL FOR TESTERS] ReiserFS on non-i386 hardware patch

Jung-uk Kim jkim at niksun.com
Wed Jun 1 15:33:23 PDT 2005


On Wednesday 01 June 2005 02:29 pm, Jean-Sébastien Pédron wrote:
> Sten Spans wrote:
> > A sample reiserfs image would be nice for testing.
>
> You're right, an image is available here (14 Mb compressed):
> http://people.freebsd.org/~dumbbell/reiserfs/images/REISERFS.bz2

I was able to mount and read it on amd64 but I had to modify
src/sys/modules/reiserfs/Makefile a bit (I will explain it later).

beastie# bunzip2 REISERFS.bz2
beastie# mdconfig -a -t vnode -f REISERFS -u 0
beastie# mount_reiserfs /dev/md0 /mnt
beastie# ls -l /mnt
total 8056
drwxr-xr-x  2 root  wheel       96  8  6  2004 Evanescence
drwxr-xr-x  5 1000  1000       120  9  1  2004 GNUstep
-rw-r--r--  1 1000  1000   4548644  8 23  2004 Shrek.mp3
lrwxrwxrwx  1 root  wheel       27  9  1  2004 dir_symlink -> GNUstep/Library/WindowMaker
lrwxrwxrwx  1 root  wheel       41  9  1  2004 evanesnce.mp3 -> Evanescence/Evanescence - My Immortal.mp3
-rw-r--r--  2 1000  1000      3176  9  1  2004 file_hardlink
lrwxrwxrwx  1 root  wheel       23  9  1  2004 file_symlink -> GNUstep/Defaults/WPrefs
-r-xr-xr-x  1 root  wheel  3680076 10 28  2004 ls
-rw-r--r--  1 root  wheel       70  8  6  2004 motd
beastie# cat /mnt/motd 
Linux yui 2.4.26 #1 SMP Tue Jun 15 11:04:53 CEST 2004 i686 GNU/Linux

beastie# uname -a
FreeBSD beastie.xxx.xxx.xxx 6.0-CURRENT FreeBSD 6.0-CURRENT #0: Wed Jun  1 17:22:23 EDT 2005     jkim at beastie.xxx.xxx.xxx:/usr/src/sys/amd64/compile/BEASTIE  amd64
beastie# umount /mnt
beastie# mdconfig -d -u 0

The kernel module doesn't load because of an amd64-specific GCC 3.4
optimization bug.  To work around:

Index: Makefile
===================================================================
RCS file: /home/ncvs/src/sys/modules/reiserfs/Makefile,v
retrieving revision 1.1
diff -u -r1.1 Makefile
--- Makefile    24 May 2005 12:30:13 -0000      1.1
+++ Makefile    1 Jun 2005 22:22:52 -0000
@@ -8,4 +8,8 @@
        reiserfs_namei.c reiserfs_prints.c reiserfs_stree.c \
        reiserfs_vfsops.c reiserfs_vnops.c
 
+.if ${MACHINE_ARCH} == "amd64"
+CFLAGS+=       -minline-all-stringops
+.endif
+
 .include <bsd.kmod.mk>

Without this, I get:

link_elf_obj: symbol memset undefined
kldload: Unsupported file type

Note: 'Unsupported file type' is somewhat misleading here.  It just
      means linker failed to find a symbol, in this case.

For more information about the GCC bug, follow the thread:

http://docs.freebsd.org/cgi/mid.cgi?IDTR9T00.LMF

Thanks a lot for your work!

Jung-uk Kim

* Postscript: Is it legal to redistribute your MP3 files? ;-)


More information about the freebsd-amd64 mailing list