Re: [2.6 patch] remove four superfluous BUG's in ReiserFS
The patch is a cleanup. It saves 85 bytes on x86. size hashes.o* textdata bss dec hex filename 1333 16 01349 545 hashes.o 1248 16 01264 4f0 hashes.o.new I tested the patch on uniprocessor x86 on filesystems created with: yes y | mkreiserfs --format 3.6 -h tea /dev/hdc1 mount -t reiserfs -o defaults,noatime,notail /dev/hdc1 /fs1 The keyed_hash function has 20 less instructions on x86, but performance improvement is very small. The default hash is r5, so in the common case, the patch doesn't do anything except save a few bytes. Time to run dbench-2.0 32 4x and dbench-2.0 64 5x. 2.6.0-test1-ac2-r 8560 seconds (patched) 2.6.0-test1-ac2-t 8615 seconds The patched version is about .5% faster. Oddly, the 3rd dbench 32 run on the unpatched version had 2 dbench processes that stayed Sleeping. Killing the dbench processes let everything continue. Because of that one skewed run, I deleted the 3rd dbench time from the seconds above for both kernels. bonnie++-1.03a didn't have much different between patched and unpatched except for sequential block i/o. Sequential Output --Block-- Kernel Size MB/sec %CPU Eff reiserfs-2.6.0-test1-ac2-r 1024 19.22 75.0 25.63 (patched) reiserfs-2.6.0-test1-ac2-t 1024 18.18 70.0 25.97 tiobench-0.3.3 improvement with the patch was also small. -- Randy Hron http://home.earthlink.net/~rwhron/kernel/bigbox.html
redundant tests in hashes.c
There are some BUG tests in hashes.c that will never be true. --- linux-2.5.63/fs/reiserfs/hashes.c.orig 2003-02-14 22:07:21.0 -0500 +++ linux-2.5.63/fs/reiserfs/hashes.c 2003-02-25 21:47:46.0 -0500 @@ -90,10 +90,6 @@ if (len = 12) { - //assert(len 16); - if (len = 16) - BUG(); - a = (u32)msg[ 0] | (u32)msg[ 1] 8 | (u32)msg[ 2] 16| @@ -116,9 +112,6 @@ } else if (len = 8) { - //assert(len 12); - if (len = 12) - BUG(); a = (u32)msg[ 0] | (u32)msg[ 1] 8 | (u32)msg[ 2] 16| @@ -137,9 +130,6 @@ } else if (len = 4) { - //assert(len 8); - if (len = 8) - BUG(); a = (u32)msg[ 0] | (u32)msg[ 1] 8 | (u32)msg[ 2] 16| @@ -154,9 +144,6 @@ } else { - //assert(len 4); - if (len = 4) - BUG(); a = b = c = d = pad; for(i = 0; i len; i++) { -- Randy Hron http://home.earthlink.net/~rwhron/kernel/bigbox.html
[reiserfs-list] oops from 2.5.42-mm3 running lilo on reiserfs
AMD Athlon 1333 1GB (highmem enabled) IDE disk reiserfs filesystems While running lilo I got this oops: kernel BUG at mm/highmem.c:177! invalid operand: CPU:0 EIP:0060:[c01325cf]Not tainted EFLAGS: 00010246 EIP is at kunmap_high+0xf/0x80 eax: ebx: c195fe70 ecx: c037bb1c edx: c037bb14 esi: 0a00 edi: f6b31df4 ebp: 1000 esp: f6b63f3c ds: 0068 es: 0068 ss: 0068 Process lilo (pid: 810, threadinfo=f6b62000 task=f7435940) Stack: c195fe70 0a00 c0111f5b c017c633 c195fe70 0001 f6b31df4 f737d3c0 0001 f6b31e50 c017c560 f6b31df4 f737d3c0 c01448e8 f6b31df4 f737d3c0 4004cd01 0001 4004cd01 ffe7 f737d3c0 0001 c0144aeb Call Trace: [c0111f5b] kunmap+0x2b/0x30 [c017c633] reiserfs_unpack+0xc3/0x108 [c017c560] reiserfs_ioctl+0x20/0x30 [c01448e8] file_ioctl+0x148/0x160 [c0144aeb] sys_ioctl+0x1eb/0x220 [c0106e0b] syscall_call+0x7/0xb -- Randy Hron http://home.earthlink.net/~rwhron/kernel/bigbox.html
[reiserfs-list] Re: oops from 2.5.42-mm3 running lilo on reiserfs
While running lilo I got this oops: kernel BUG at mm/highmem.c:177! invalid operand: Just delete it I think: Yep, that fixes it. By the way, system responsiveness with all this stuff running is impressive: Linux Test Project's runalltests.sh (lots of I/O). configure/make/make test Python-2.2.2 (all tests okay) setiathome (cpu bound) mp3blaster lilo in a loop every 30 seconds. mp3blaster was only quiet about 5 seconds during a point when runalltests.sh was executing 100 CPU bound threads. (float_bessel is the test) There was no skipping during the test that writes to all free memory + 600 megs swap. :) 2 python audio tests block on /dev/audio, but that's expected. You once had a 2.4 patch so lilo wouldn't wait too long when there is a lot of I/O going on. A couple of the LTP tests would make lilo pause ~ 60 seconds: growfiles -b -e 1 -i 0 -L 120 -u -g 4090 -T 100 -t 408990 -l -C 10 -c 1000 -S 10 -f Lgf02_ growfiles -b -e 1 -i 0 -L 120 -u -g 5000 -T 100 -t 40 -l -C 10 -c 1000 -S 10 -f Lgf03_ Those run for 120 seconds each in sync mode. I can enter and exit X with no problem. 2.5.42-mm3 is comfortable on my main box. Thanks for making it so good. -- Randy Hron http://home.earthlink.net/~rwhron/kernel/bigbox.html
Re: [reiserfs-list] big reiserfs regression in 2.4.20-pre2
Is regression going away if you pass this mount option to reiserfs: -o alloc=preallocmin=4:preallocsize=9 Yes. Great, I just found that we forgot to enable preallocation with new block allocator by default. This is easily fixable of course. Is that in the 2.5.patch: http://marc.theaimsgroup.com/?l=linux-kernelm=102984193227185w=2 Or will it be different for 2.4? -- Randy Hron http://home.earthlink.net/~rwhron/kernel/bigbox.html
[reiserfs-list] big reiserfs regression in 2.4.20-pre2
128 31.52 111.6%36.264 104743.20 0.40728 0.11428 28 2.4.20-pre2128 22.31 87.18%36.25178916.66 0.46791 0.10154 26 2.4.20-pre1256 28.95 132.7%75.959 163159.61 0.79301 0.24067 22 2.4.20-pre2256 20.08 93.50%74.113 114883.50 0.83399 0.23864 21 Random Writes reiserfs - slightly improved. NumAvg Maximum Lat% Lat% CPU Kernel Thr Rate (CPU%) Latency Latency 2s 10s Eff - --- -- 2.4.20-pre1 13.57 3.80% 0.0910.57 0.0 0.0 94 2.4.20-pre2 13.63 3.79% 0.0890.68 0.0 0.0 96 2.4.20-pre1 323.52 9.15% 0.654 268.43 0.0 0.0 38 2.4.20-pre2 323.57 8.15% 0.377 258.42 0.0 0.0 44 2.4.20-pre1 643.68 9.50% 0.567 196.77 0.0 0.0 39 2.4.20-pre2 643.78 9.76% 0.450 319.24 0.0 0.0 39 2.4.20-pre11283.48 8.38% 2.923 626.60 0.0 0.0 42 2.4.20-pre21283.54 8.98% 0.669 735.87 0.0 0.0 39 2.4.20-pre12563.45 9.11% 3.416 572.87 0.0 0.0 38 2.4.20-pre22563.59 10.12% 1.350 824.15 0.0 0.0 35 Bonnie++ did not have these regressions, but I run that as a single thread. More on the tests at: http://home.earthlink.net/~rwhron/kernel/bigbox.html -- Randy Hron
[reiserfs-list] 2.5.9 kreiserfsd and sync hung in D state
I didn't notice any of the 2.5.8.pending fixes in ChangeLog-2.5.9, and I haven't tried them with 2.5.9 yet. Linux 2.5.9 without any patches. Uninteruptable sleep created by: mkreiserfs /dev/sdc2 mount -t reiserfs -o defaults,noatime /dev/sdc2 /fs2 cpio -pdm filenames | /fs2 sync# this is what has hung ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1113 0.0 0.0 00 ?DW 03:49 0:00 [kreiserfsd] root 1265 0.0 0.0 1636 488 ttyp0D03:52 0:00 sync A similar mke2fs;mount;cpio;sync on ext2 did not hang. The SCSI drivers for this machine were recently fixed in 2.5.9. They may not be bulletproof yet. lspci 00:00.0 Host bridge: ServerWorks CNB20HE Host Bridge (rev 21) 00:00.1 Host bridge: ServerWorks CNB20HE Host Bridge (rev 01) 00:00.2 Host bridge: ServerWorks: Unknown device 0006 00:00.3 Host bridge: ServerWorks: Unknown device 0006 00:01.0 SCSI storage controller: Adaptec AIC-7880U (rev 02) 00:04.0 Ethernet controller: Intel Corp. 82557 [Ethernet Pro 100] (rev 08) 00:0c.0 VGA compatible controller: ATI Technologies Inc 3D Rage IIC 215IIC [Mach64 GT IIC] (rev 7a) 00:0f.0 ISA bridge: ServerWorks OSB4 South Bridge (rev 50) 00:0f.1 IDE interface: ServerWorks OSB4 IDE Controller 00:0f.2 USB Controller: ServerWorks OSB4/CSB5 OHCI USB Controller (rev 04) 01:05.0 PCI Hot-plug controller: Compaq Computer Corporation PCI Hotplug Controller (rev 11) 01:06.0 SCSI storage controller: Adaptec 7899P (rev 01) 01:06.1 SCSI storage controller: Adaptec 7899P (rev 01) 01:08.0 Ethernet controller: Intel Corp. 82557 [Ethernet Pro 100] (rev 08) 01:09.0 Ethernet controller: Intel Corp. 82557 [Ethernet Pro 100] (rev 08) 01:0a.0 Ethernet controller: Netgear GA620 (rev 01) 01:0b.0 Ethernet controller: Netgear GA620 (rev 01) 07:07.0 PCI Hot-plug controller: Compaq Computer Corporation PCI Hotplug Controller (rev 11) 07:0e.0 PCI bridge: Digital Equipment Corporation DECchip 21154 (rev 05) 09:04.0 SCSI storage controller: QLogic Corp. QLA2200 (rev 05) 09:05.0 SCSI storage controller: QLogic Corp. QLA2200 (rev 05) I would like to get reiserfs on 2.5.9 working on this machine. Any suggestions appreciated. -- Randy Hron
Re: [reiserfs-list] 2.5.9 kreiserfsd and sync hung in D state
Ok. This one is working fine for me right now: angband:~ # mount /testfs0 -o defaults,noatime angband:~ # find * | cpio -pdm /testfs0 4859 blocks angband:~ # sync angband:~ # That basically is the test. Can you see where it hung? (alt-sysrq-T, if you have sysrq enabled). It has a serial console. I'm checking on how to sysrq-T on it. (it's an OSDL machine). Waiting for your data. Will post sysrq-T when I find out how. One other thing I noticed is that the load average was 3.99 on this 4 way x86 box. The load average seems high, since it was Ah, so it is four way box. Mine is two way. Any other special things? HAve you enabled kernel preemption? Any other unusual config stuff? No preempt. It has highmem. It also has tagged queueing on AIC7 adapter. Here is the whole config: CONFIG_X86=y CONFIG_ISA=y CONFIG_UID16=y CONFIG_EXPERIMENTAL=y CONFIG_NET=y CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_MPENTIUMIII=y CONFIG_X86_WP_WORKS_OK=y CONFIG_X86_INVLPG=y CONFIG_X86_CMPXCHG=y CONFIG_X86_XADD=y CONFIG_X86_BSWAP=y CONFIG_X86_POPAD_OK=y CONFIG_RWSEM_XCHGADD_ALGORITHM=y CONFIG_X86_L1_CACHE_SHIFT=5 CONFIG_X86_TSC=y CONFIG_X86_GOOD_APIC=y CONFIG_X86_USE_PPRO_CHECKSUM=y CONFIG_HIGHMEM4G=y CONFIG_HIGHMEM=y CONFIG_MTRR=y CONFIG_SMP=y CONFIG_HAVE_DEC_LOCK=y CONFIG_X86_IO_APIC=y CONFIG_X86_LOCAL_APIC=y CONFIG_PCI=y CONFIG_PCI_GOANY=y CONFIG_PCI_BIOS=y CONFIG_PCI_DIRECT=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y CONFIG_PACKET=y CONFIG_PACKET_MMAP=y CONFIG_UNIX=y CONFIG_INET=y CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_SCSI=y CONFIG_BLK_DEV_SD=y CONFIG_SD_EXTRA_DEVS=40 CONFIG_BLK_DEV_SR=y CONFIG_BLK_DEV_SR_VENDOR=y CONFIG_SR_EXTRA_DEVS=2 CONFIG_SCSI_MULTI_LUN=y CONFIG_SCSI_CONSTANTS=y CONFIG_SCSI_AIC7XXX_OLD=y CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT=y CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8 CONFIG_SCSI_IPS=y CONFIG_SCSI_QLOGIC_ISP=y CONFIG_SCSI_QLOGIC_FC=y CONFIG_NETDEVICES=y CONFIG_NET_ETHERNET=y CONFIG_LANCE=y CONFIG_NET_PCI=y CONFIG_EEPRO100=y CONFIG_ACENIC=y CONFIG_SOUND_GAMEPORT=y CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_SERIAL=y CONFIG_SERIAL_CONSOLE=y CONFIG_UNIX98_PTYS=y CONFIG_UNIX98_PTY_COUNT=256 CONFIG_MOUSE=y CONFIG_PSMOUSE=y CONFIG_RTC=y CONFIG_REISERFS_FS=y CONFIG_EXT3_FS=y CONFIG_JBD=y CONFIG_RAMFS=y CONFIG_ISO9660_FS=y CONFIG_PROC_FS=y CONFIG_DEVPTS_FS=y CONFIG_EXT2_FS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFSD=y CONFIG_NFSD_V3=y CONFIG_SUNRPC=y CONFIG_LOCKD=y CONFIG_LOCKD_V4=y CONFIG_EXPORTFS=y CONFIG_MSDOS_PARTITION=y CONFIG_VGA_CONSOLE=y CONFIG_DEBUG_KERNEL=y CONFIG_MAGIC_SYSRQ=y -- Randy Hron
[reiserfs-list] reiserfsprogs-3.x.0k-pre13 mkreiserfs compatibility with linux-2.5.x
mkreiserfs-3.x.0j works fine with 2.5.1-pre8. mkreiserfs-3.x.0k-pre13 on linux-2.5.x prints this message: mkreiserfs: You should run either 2.4 or 2. to be able to create reiserfs filesystem or specify desired format with -v Is it safe to use this on 2.5.x?: mkreiserfs --format 3.6 /dev/hdX It worked for me like this: root@rushmore:/sbin# uname -a Linux rushmore 2.5.1-pre8 #1 Sun Dec 9 01:59:26 EST 2001 i686 unknown root@rushmore:/var/tmp# dd if=/dev/zero of=reiser bs=1M seek=100 count=1 1+0 records in 1+0 records out root@rushmore:/var/tmp# losetup /dev/loop0 reiser root@rushmore:/var/tmp# /usr/src/sources/r/reiserfsprogs-3.x.0k-pre13/mkreiserfs/mkreiserfs /dev/loop0 -mkreiserfs, 2001- reiserfsprogs 3.x.0k-pre13 mkreiserfs: Guessing about desired format.. mkreiserfs: Kernel 2.5.1-pre8 is running. mkreiserfs: You should run either 2.4 or 2. to be able to create reiserfs filesystem or specify desired format with -v root@rushmore:/var/tmp# /usr/src/sources/r/reiserfsprogs-3.x.0k-pre13/mkreiserfs/mkreiserfs --format 3.6 /dev/loop0 # filesystem builds ... -- Randy Hron