Skip to contentSkip to conversation

: reiser4 [0/8] overview

PATCH Marc-Christian Petersen 3 participants 6 messages Oct 31, 2002 – Nov 1, 2002

lore
Share & tools
lore
#0 lore raw

Hi Nikita,

Quoted 9 lines

This message starts set of 8 patches against your current BK tree to include reiser4.
Changes to the core code are fairly small and trivial: mostly function exports, plus one patch to share ->journal_info pointer with Ext3. All patches are available at http://namesys.com/snapshots/2002.10.31/,
they can be applied in any order.

Utilities, including mkfs.reiser4 are available at
http://namesys.com/snapshots/2002.10.31/reiser4progs-0.1.0.tar.gz

Forbidden

You don't have permission to access /snapshots/2002.10.31/reiser4progs-0.1.0.tar.gz on this server.

Apache/1.3.23 Server at thebsh.namesys.com Port 80

The directory itself does _not_ contain any reiserfs progs.

ciao, Marc

#1 lore raw
Quoted 13 lines · Marc-Christian Petersen

Hi Nikita,

Quoted 9 lines

This message starts set of 8 patches against your current BK tree to include reiser4.
Changes to the core code are fairly small and trivial: mostly function exports, plus one patch to share ->journal_info pointer with Ext3. All patches are available at http://namesys.com/snapshots/2002.10.31/,
they can be applied in any order.

Utilities, including mkfs.reiser4 are available at
http://namesys.com/snapshots/2002.10.31/reiser4progs-0.1.0.tar.gz

Quoted 8 lines

Forbidden

You don't have permission to access /snapshots/2002.10.31/reiser4progs-0.1.0.tar.gz on this server.

Apache/1.3.23 Server at thebsh.namesys.com Port 80

The directory itself does _not_ contain any reiserfs progs.

Fixed.

Quoted 2 lines

ciao, Marc

Nikita.

#2 lore raw

On Thursday 31 October 2002 19:18, Nikita Danilov wrote:

Hi Nikita,

Quoted 6 lines
Quoted 5 lines

Forbidden
You don't have permission to access /snapshots/2002.10.31/reiser4progs-0.1.0.tar.gz on this server. Apache/1.3.23 Server at thebsh.namesys.com Port 80 The directory itself does _not_ contain any reiserfs progs.

Fixed.

thank you :)

ok, here we go: 2.5.45, Reiser4 patches from today.

Mounting newly created Reiser4 partition:

Debug: sleeping function called from illegal context at mm/page_alloc.c:409

Call Trace:
 [<c01152b4>] __might_sleep+0x54/0x60
 [<c01326ac>] __alloc_pages+0x24/0x278
 [<c0132928>] __get_free_pages+0x28/0x60
 [<c0115563>] dup_task_struct+0x47/0xbc
 [<c0115f28>] copy_process+0xa0/0xa40
 [<c01e10f0>] ide_do_request+0x2d4/0x334
 [<c01168eb>] do_fork+0x23/0xa8
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<c0105574>] kernel_thread+0x74/0x8c
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<e4a209a0>] ktxnmgrd+0x0/0x1e4 [reiser4]
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<c01054f4>] kernel_thread_helper+0x0/0xc
 [<e4a20c33>] ktxnmgrd_attach+0x53/0x88 [reiser4]
 [<e4a209a0>] ktxnmgrd+0x0/0x1e4 [reiser4]
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<e4a4ee60>] format_plugins+0x0/0xa0 [reiser4]
 [<e4a254bf>] reiser4_fill_super+0x313/0x540 [reiser4]
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<e4a3f490>] PSEUDO_FILES_PREFIX+0x123/0x12b [reiser4]
 [<c0142f04>] get_sb_bdev+0x1bc/0x220
 [<e4a4dbc0>] reiser4_fs_type+0x0/0x20 [reiser4]
 [<e4a4dbc0>] reiser4_fs_type+0x0/0x20 [reiser4]
 [<e4a25953>] reiser4_get_sb+0x1f/0x24 [reiser4]
 [<e4a4dbc0>] reiser4_fs_type+0x0/0x20 [reiser4]
 [<e4a251ac>] reiser4_fill_super+0x0/0x540 [reiser4]
 [<c01430e0>] do_kern_mount+0x48/0xa8
 [<e4a4dbc0>] reiser4_fs_type+0x0/0x20 [reiser4]
 [<c0155235>] do_add_mount+0x65/0x148
 [<c015551a>] do_mount+0x15e/0x178
 [<c015536d>] copy_mount_options+0x55/0xa4
 [<c0155970>] sys_mount+0xa4/0x110
 [<c0106f13>] syscall_call+0x7/0xb

/dev/hda7 on /opt/squid/cache type reiser4
(rw,noexec,nosuid,nodev,noatime,nodiratime)

After creating 100,000 files (time seq -f "%06.0f" 1 100000 | xargs touch), I got _TONS_ of this:

Debug: sleeping function called from illegal context at include/asm/semaphore.h:119

Call Trace:
  [__might_sleep+84/96] __might_sleep+0x54/0x60
  [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
  [<e4a3347c>] load_and_lock_bnode+0x14/0x1a4 [reiser4]
  [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
  [<e4a336d7>] search_one_bitmap+0x5f/0x1f0 [reiser4]
  [<e4a33913>] bitmap_alloc+0xab/0x150 [reiser4]
  [<e4a33a6a>] bitmap_alloc_blocks+0xb2/0x13c [reiser4]
  [<e4a4eda0>] space_plugins+0x0/0xc0 [reiser4]
  [<e4a14e97>] reiser4_alloc_blocks+0xaf/0x13c [reiser4]
  [<e4a19ffa>] flush_allocate_znode_update+0x5e/0x198 [reiser4]
  [<e4a2d6ce>] internal_at+0xa/0x10 [reiser4]
  [<e4a2d6fe>] pointer_at+0xa/0x14 [reiser4]
  [<e4a125a5>] check_tree_pointer+0x5d/0x84 [reiser4]
  [<e4a19f02>] flush_allocate_znode+0x176/0x210 [reiser4]
  [<e4a19d2c>] jnode_check_flushprepped+0x18/0x54 [reiser4]
  [<e4a18aaf>] flush_alloc_one_ancestor+0x8b/0x124 [reiser4]
  [<e4a18b22>] flush_alloc_one_ancestor+0xfe/0x124 [reiser4]
  [<e4a18b09>] flush_alloc_one_ancestor+0xe5/0x124 [reiser4]
  [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
  [<e4a189d9>] flush_alloc_ancestors+0xa9/0xf4 [reiser4]
  [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
  [<e4a183da>] jnode_flush+0x3ea/0x568 [reiser4]
  [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
  [<e4a1608d>] flush_this_atom+0x41/0x14c [reiser4]
  [<e4a162e0>] flush_one_atom+0x148/0x164 [reiser4]
  [<e4a20da5>] scan_mgr+0x51/0x8c [reiser4]
  [<e4a4f3ac>] kdaemon+0x2c/0x40 [reiser4]
  [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
  [<e4a20b46>] ktxnmgrd+0x1a6/0x1e4 [reiser4]
  [<e4a209a0>] ktxnmgrd+0x0/0x1e4 [reiser4]
  [<e4a4f398>] kdaemon+0x18/0x40 [reiser4]
  [<e4a4f388>] kdaemon+0x8/0x40 [reiser4]
  [<e4a4f3a0>] kdaemon+0x20/0x40 [reiser4]
  [kernel_thread_helper+5/12] kernel_thread_helper+0x5/0xc
  [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]

and also _TONS_ of this:

bad: scheduling while atomic!

Call Trace:
  [schedule+61/712] schedule+0x3d/0x2c8
  [io_schedule+11/20] io_schedule+0xb/0x14
  [__lock_page+176/204] __lock_page+0xb0/0xcc
  [autoremove_wake_function+0/56] autoremove_wake_function+0x0/0x38
  [autoremove_wake_function+0/56] autoremove_wake_function+0x0/0x38
  [read_cache_page+315/484] read_cache_page+0x13b/0x1e4
  [<e4a4d6d8>] jnode_plugins+0x78/0x130 [reiser4]
  [<e4a0c8a6>] jload+0xc6/0x1fc [reiser4]
  [<e4a0c7c4>] page_filler+0x0/0x1c [reiser4]
  [<e4a33528>] load_and_lock_bnode+0xc0/0x1a4 [reiser4]
  [<e4a336d7>] search_one_bitmap+0x5f/0x1f0 [reiser4]
  [<e4a33913>] bitmap_alloc+0xab/0x150 [reiser4]
  [<e4a33a6a>] bitmap_alloc_blocks+0xb2/0x13c [reiser4]
  [<e4a4eda0>] space_plugins+0x0/0xc0 [reiser4]
  [<e4a14e97>] reiser4_alloc_blocks+0xaf/0x13c [reiser4]
  [<e4a19ffa>] flush_allocate_znode_update+0x5e/0x198 [reiser4]
  [<e4a2d6ce>] internal_at+0xa/0x10 [reiser4]
  [<e4a2d6fe>] pointer_at+0xa/0x14 [reiser4]
  [<e4a125a5>] check_tree_pointer+0x5d/0x84 [reiser4]
  [<e4a19f02>] flush_allocate_znode+0x176/0x210 [reiser4]
  [<e4a19d2c>] jnode_check_flushprepped+0x18/0x54 [reiser4]
  [<e4a18aaf>] flush_alloc_one_ancestor+0x8b/0x124 [reiser4]
  [<e4a18b22>] flush_alloc_one_ancestor+0xfe/0x124 [reiser4]
  [<e4a18b09>] flush_alloc_one_ancestor+0xe5/0x124 [reiser4]
  [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
  [<e4a189d9>] flush_alloc_ancestors+0xa9/0xf4 [reiser4]
  [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
  [<e4a183da>] jnode_flush+0x3ea/0x568 [reiser4]
  [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
  [<e4a1608d>] flush_this_atom+0x41/0x14c [reiser4]
  [<e4a162e0>] flush_one_atom+0x148/0x164 [reiser4]
  [<e4a20da5>] scan_mgr+0x51/0x8c [reiser4]
  [<e4a4f3ac>] kdaemon+0x2c/0x40 [reiser4]
  [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
  [<e4a20b46>] ktxnmgrd+0x1a6/0x1e4 [reiser4]
  [<e4a209a0>] ktxnmgrd+0x0/0x1e4 [reiser4]
  [<e4a4f398>] kdaemon+0x18/0x40 [reiser4]
  [<e4a4f388>] kdaemon+0x8/0x40 [reiser4]
  [<e4a4f3a0>] kdaemon+0x20/0x40 [reiser4]
  [kernel_thread_helper+5/12] kernel_thread_helper+0x5/0xc
  [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
bad: scheduling while atomic!
Call Trace:
 [<c0113ef1>] schedule+0x3d/0x2c8
 [<c0114e27>] __cond_resched+0x17/0x1c
 [<e4a0c114>] preempt_point+0x14/0x24 [reiser4]
 [<e4a0e903>] carry+0x153/0x1cc [reiser4]
 [<e4a199c3>] squeeze_right_non_twig+0xc3/0x114 [reiser4]
 [<e4a198f9>] squalloc_right_neighbor+0x29/0x30 [reiser4]
 [<e4a194d8>] flush_squalloc_one_changed_ancestor+0x23c/0x634 [reiser4]
 [<e4a0c821>] jload+0x41/0x1fc [reiser4]
 [<e4a18dcc>] flush_squalloc_changed_ancestors+0x40/0x510 [reiser4]
 [<e4a18d66>] flush_forward_squalloc+0x186/0x1ac [reiser4]
 [<e4a183da>] jnode_flush+0x3ea/0x568 [reiser4]
 [<e4a183ef>] jnode_flush+0x3ff/0x568 [reiser4]
 [<e4a4e8c0>] item_plugins+0x1e0/0x480 [reiser4]
 [<e4a1608d>] flush_this_atom+0x41/0x14c [reiser4]
 [<e4a162e0>] flush_one_atom+0x148/0x164 [reiser4]
 [<e4a20da5>] scan_mgr+0x51/0x8c [reiser4]
 [<e4a4f3ac>] kdaemon+0x2c/0x40 [reiser4]
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<e4a20b46>] ktxnmgrd+0x1a6/0x1e4 [reiser4]
 [<e4a209a0>] ktxnmgrd+0x0/0x1e4 [reiser4]
 [<e4a4f398>] kdaemon+0x18/0x40 [reiser4]
 [<e4a4f388>] kdaemon+0x8/0x40 [reiser4]
 [<e4a4f3a0>] kdaemon+0x20/0x40 [reiser4]
 [<c01054f9>] kernel_thread_helper+0x5/0xc
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]

and also _TONS_ of this:

Debug: sleeping function called from illegal context at include/asm/semaphore.h:119

Call Trace:
 [<c01152b4>] __might_sleep+0x54/0x60
 [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
 [<e4a3347c>] load_and_lock_bnode+0x14/0x1a4 [reiser4]
 [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
 [<e4a33e07>] bitmap_pre_commit_hook+0x12f/0x2b7 [reiser4]
 [<e4a15361>] pre_commit_hook+0x11/0x14 [reiser4]
 [<e4a1c2ab>] reiser4_write_logs+0x3f/0x2d0 [reiser4]
 [<e4a1fef6>] finish_all_fq+0x52/0x98 [reiser4]
 [<e4a1ff5c>] current_atom_finish_all_fq+0x20/0x70 [reiser4]
 [<e4a15c0d>] atom_try_commit_locked+0x165/0x210 [reiser4]
 [<e4a16551>] commit_txnh+0xcd/0x150 [reiser4]
 [<e4a15676>] txn_end+0x22/0x38 [reiser4]
 [<e4a16176>] flush_this_atom+0x12a/0x14c [reiser4]
 [<e4a162e0>] flush_one_atom+0x148/0x164 [reiser4]
 [<e4a1637a>] flush_some_atom+0x7e/0x88 [reiser4]
 [<e4a2602b>] reiser4_writepages+0xab/0x114 [reiser4]
 [<c013a314>] do_writepages+0x18/0x2c
 [<c0157a5d>] __sync_single_inode+0x69/0x168
 [<c0157bd0>] __writeback_single_inode+0x74/0x7c
 [<c0157d67>] sync_sb_inodes+0x18f/0x21c
 [<c0157e47>] writeback_inodes+0x53/0x98
 [<c013a1e7>] wb_kupdate+0x9f/0x100
 [<c0139cc1>] __pdflush+0x151/0x1f8
 [<c0139d68>] pdflush+0x0/0x14
 [<c0139d73>] pdflush+0xb/0x14
 [<c013a148>] wb_kupdate+0x0/0x100
 [<c01054f9>] kernel_thread_helper+0x5/0xc

Does not occur with ReiserFS 3 from 2.5.45 nor with any other FS doing those small stress test. My personal impression is that Reiser4 is slower than 3 but that might be because of above debugging.

I hope this helps.

ciao, Marc

#3 lore raw
Quoted 17 lines · Marc-Christian Petersen

On Thursday 31 October 2002 19:18, Nikita Danilov wrote:

Hi Nikita,

Quoted 6 lines
Quoted 5 lines

Forbidden
You don't have permission to access /snapshots/2002.10.31/reiser4progs-0.1.0.tar.gz on this server. Apache/1.3.23 Server at thebsh.namesys.com Port 80 The directory itself does _not_ contain any reiserfs progs.

Fixed.

thank you :)

ok, here we go: 2.5.45, Reiser4 patches from today.

Mounting newly created Reiser4 partition:

Debug: sleeping function called from illegal context at mm/page_alloc.c:409

Quoted 14 lines
Call Trace:
 [<c01152b4>] __might_sleep+0x54/0x60
 [<c01326ac>] __alloc_pages+0x24/0x278
 [<c0132928>] __get_free_pages+0x28/0x60
 [<c0115563>] dup_task_struct+0x47/0xbc
 [<c0115f28>] copy_process+0xa0/0xa40
 [<c01e10f0>] ide_do_request+0x2d4/0x334
 [<c01168eb>] do_fork+0x23/0xa8
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<c0105574>] kernel_thread+0x74/0x8c
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<e4a209a0>] ktxnmgrd+0x0/0x1e4 [reiser4]
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
 [<c01054f4>] kernel_thread_helper+0x0/0xc

kernel_thread() is called under spin-lock.

Quoted 1 line

[<e4a20c33>] ktxnmgrd_attach+0x53/0x88 [reiser4]

[...]

Quoted 8 lines

[<c0106f13>] syscall_call+0x7/0xb

/dev/hda7 on /opt/squid/cache type reiser4
(rw,noexec,nosuid,nodev,noatime,nodiratime)

After creating 100,000 files (time seq -f "%06.0f" 1 100000 | xargs touch), I got _TONS_ of this:

Quoted 6 lines

Debug: sleeping function called from illegal context at include/asm/semaphore.h:119

Call Trace:
  [__might_sleep+84/96] __might_sleep+0x54/0x60
  [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
  [<e4a3347c>] load_and_lock_bnode+0x14/0x1a4 [reiser4]

missed spin_unlock()/spin_lock() in flush_one_atom().

Quoted 1 line

[<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]

[...]

Quoted 4 lines
 [<c01054f9>] kernel_thread_helper+0x5/0xc
 [<e4a4f380>] kdaemon+0x0/0x40 [reiser4]
Quoted 8 lines

and also _TONS_ of this:

Debug: sleeping function called from illegal context at include/asm/semaphore.h:119

Call Trace:
 [<c01152b4>] __might_sleep+0x54/0x60
 [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
 [<e4a3347c>] load_and_lock_bnode+0x14/0x1a4 [reiser4]

This is unclear.

Quoted 2 lines
 [<e4a42a76>] ABSOLUTE_MIN_OID+0x13e/0x580 [reiser4]
 [<e4a33e07>] bitmap_pre_commit_hook+0x12f/0x2b7 [reiser4]

[...]

Quoted 4 lines

Does not occur with ReiserFS 3 from 2.5.45 nor with any other FS doing those small stress test. My personal impression is that Reiser4 is slower than 3 but that might be because of above debugging.

Run-time checks usually make reiser4 orders of magnitude slower.

Quoted 2 lines

I hope this helps.

Yes. Thanks a lot.

Quoted 3 lines

ciao, Marc

Nikita.

Quoted 1 line
#4 lore raw
In reply to Marc-Christian Petersen
Quoted 9 lines · Marc-Christian Petersen

Does not occur with ReiserFS 3 from 2.5.45 nor with any other FS doing those small stress test. My personal impression is that Reiser4 is slower than 3 but that might be because of above debugging.

I hope this helps.

ciao, Marc

Please give us a script which is slower than v3 for us to reproduce with, and we will start analyzing it.

Signature · 1 line
Hans
#5 lore raw

On Friday 01 November 2002 21:56, Hans Reiser wrote:

Hi Hans,

Quoted 6 lines
Quoted 4 lines

Does not occur with ReiserFS 3 from 2.5.45 nor with any other FS doing those small stress test. My personal impression is that Reiser4 is slower than 3 but that might be because of above debugging.
I hope this helps.

Please give us a script which is slower than v3 for us to reproduce with, and we will start analyzing it.

Ok. Just small ones:

1. time seq -f "%06.0f" 1 100000 | xargs touch

2. while true; do dd if=/dev/zero of=/largefile bs=16384 count=131072; done

3. attached.

ciao, Marc

/*
* randfiles.c
*
* Usage: randfiles <basename> <count> <echo?>
*
* For benchmarking create performance - create <count> files with
* numbered names, in random order. The <echo?> flag, if y, echoes
* filenames created. For example, 'randfiles foo 10 y' will create
* 10 empty files with names ranging from foo0 to foo9.
*
* copyleft: Daniel Phillips, Oct 6, 2001, [email protected] *
*/

#include <stdlib.h>

#define swap(x, y) do { typeof(x) z = x; x = y; y = z; } while (0)

int main (int argc, char *argv[])

{
	int n = (argc > 2)? strtol(argv[2], 0, 10): 0;
	int i, size = 50, show = argc > 3 && !strncmp(argv[3], "y", 1);
	char name[size];
	int choose[n];
	for (i = 0; i < n; i++) choose[i] = i;
	
	for (i = n; i; i--)
	{
		int j = rand() % i;
		swap(choose[i-1], choose[j]);
	}
	
	for (i = 0; i < n; i++)
	{
		snprintf(name, size, "%s%i", argv[1], choose[i]);
		if (show) printf("create %s\n", name);
		close(open(name, 0100));
	}
	return 0;
}