Re: reiser4 panic in do_readpage_extent

2007-03-11 Thread Edward Shishkin

Devils-Hawk wrote:

The problem still persists also trying to boot multiple times it 
sometimes triggers much earlier in the boot process than it did before.




Hmm.. can not reproduce it..
The attached patch (against reiser4-for-2.6[19, 20]) allows to dump stack
and some useful info noted as edward-200X among other boot messages.
Would you please send it.

Thanks,
Edward.


regards devh

Edward Shishkin wrote:



Would you please try the attached patch over reiser4-for-2.6.[19, 20]

Thanks,
Edward.







Handle possible race:
do not proceed uf_readpages_filler if page is already uptodate.
Print debugging info.

Signed-off-by: Edward Shishkin [EMAIL PROTECTED]
---
 linux-2.6.20-mm2/fs/reiser4/plugin/file/file.c|4 +++
 linux-2.6.20-mm2/fs/reiser4/plugin/item/extent_file_ops.c |   17 ++
 2 files changed, 21 insertions(+)

--- linux-2.6.20-mm2/fs/reiser4/plugin/file/file.c.orig
+++ linux-2.6.20-mm2/fs/reiser4/plugin/file/file.c
@@ -1619,6 +1619,10 @@
 		lock_page(page);
 		cbk_done = 1;
 	}
+	if (PageUptodate(page)) {
+		unlock_page(page);
+		return 0;
+	}
 	ret = zload(rc-coord.node);
 	if (ret) {
 		unlock_page(page);
--- linux-2.6.20-mm2/fs/reiser4/plugin/item/extent_file_ops.c.orig
+++ linux-2.6.20-mm2/fs/reiser4/plugin/item/extent_file_ops.c
@@ -1157,7 +1157,24 @@
 
 	case UNALLOCATED_EXTENT:
 		j = jfind(mapping, index);
+		if (j == NULL) {
+			dump_stack();
+			printk(edward-2000: oid = %llu\n,
+			   (unsigned long long)oid);
+			printk(edward-2001: Jnode not found\n);
+		}
 		assert(nikita-2688, j);
+		if (jnode_page(j) != NULL) {
+			dump_stack();
+			printk(edward-2002: oid = %llu\n,
+			   (unsigned long long)oid);
+			printk(edward-2003: read page  %p of idx %lu\n,
+			   page, page-index);
+			printk(edward-2004: jnode page %p of idx %lu\n,
+			   jnode_page(j), jnode_page(j)-index);
+			printk(edward-2005: jnode blknr =  %llu\n,
+			   (unsigned long long)(*jnode_get_block(j)));
+		}
 		assert(vs-1426, jnode_page(j) == NULL);
 
 		spin_lock_jnode(j);


Re: reiser4 panic in do_readpage_extent

2007-03-09 Thread Edward Shishkin

Devils-Hawk wrote:

Recently tried switching from 2.6.18 + reiser4-for-2.6.18-r3.patch.gz, 
which works perfectly fine to 2.6.19 + reiser4-for-2.6.19-r3.patch.gz
I also tried 2.6.20 laurent riffard's reiser4-for-2.6.20. The last 
both die somewhere during init when one of the 2 following asserts fails:

extent_file_ops, Line 1160: assert(nikita-2688),j)
extent_file_ops, Line 1161: assert(vs-1426),jnode_page(j) == NULL )

fs was fsck'ed with reiser4progs-1.0.5

regards DevH




Would you please try the attached patch over reiser4-for-2.6.[19, 20]

Thanks,
Edward.
Handle possible race:
do not proceed uf_readpages_filler if page is already uptodate.

Signed-off-by: Edward Shishkin [EMAIL PROTECTED]
---
 linux-2.6.20-mm2/fs/reiser4/plugin/file/file.c |4 
 1 files changed, 4 insertions(+)

--- linux-2.6.20-mm2/fs/reiser4/plugin/file/file.c.orig
+++ linux-2.6.20-mm2/fs/reiser4/plugin/file/file.c
@@ -1619,6 +1619,10 @@
 		lock_page(page);
 		cbk_done = 1;
 	}
+	if (PageUptodate(page)) {
+		unlock_page(page);
+		return 0;
+	}
 	ret = zload(rc-coord.node);
 	if (ret) {
 		unlock_page(page);


Re: reiser4 panic in do_readpage_extent

2007-03-09 Thread Devils-Hawk
The problem still persists also trying to boot multiple times it 
sometimes triggers much earlier in the boot process than it did before.


regards devh

Edward Shishkin wrote:


Would you please try the attached patch over reiser4-for-2.6.[19, 20]

Thanks,
Edward.





Re: reiser4 panic in do_readpage_extent

2007-03-08 Thread Edward Shishkin

Devils-Hawk wrote:

Recently tried switching from 2.6.18 + reiser4-for-2.6.18-r3.patch.gz, 
which works perfectly fine to 2.6.19 + reiser4-for-2.6.19-r3.patch.gz
I also tried 2.6.20 laurent riffard's reiser4-for-2.6.20. The last 
both die somewhere during init when one of the 2 following asserts fails:

extent_file_ops, Line 1160: assert(nikita-2688),j)
extent_file_ops, Line 1161: assert(vs-1426),jnode_page(j) == NULL )



It seems, new file_read is not happy.
Thanks for the report, we'll take a look.

Edward.


fs was fsck'ed with reiser4progs-1.0.5

regards DevH