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);

Reply via email to