On Friday 11 August 2006 05:15, Vladimir V. Saveliev wrote:
> Hello
> 
> On Thursday 10 August 2006 21:55, Andrew James Wade wrote:
> > Hello,
> >
> > I've had another panic on a fscked filesystem:
> >
> > reiser4 panicked cowardly: reiser4[updatedb(3302)]: reiser4_writepage
> > (fs/reiser4/page_cache.c:521)[]: assertion failed: can_hit_entd(ctx, s)
> > Kernel panic - not syncing: reiser4[updatedb(3302)]: reiser4_writepage
> > (fs/reiser4/page_cache.c:521)[]: assertion failed: can_hit_entd(ctx, s)
> >
> 
> What kernel do you use? Recently we had few fixes of such problem.

2.6.18-rc3-mm2 + the patch below.

I've been unable to observe any corruption in over 300 GB of file data
written to the hd, so I don't think I have a hardware issue.

I will continue poking away at the problem.

Andrew Wade

------

re-add to reiser4_releasepage mistakenly removed page_count check.
extra page reference is used to protect page from detaching from the 
jnode.

Signed-off-by: Alexander Zarochentsev <[EMAIL PROTECTED]>
---
 fs/reiser4/as_ops.c |    5 +++++
 1 file changed, 5 insertions(+)

Index: linux-2.6-git/fs/reiser4/as_ops.c
===================================================================
--- linux-2.6-git.orig/fs/reiser4/as_ops.c
+++ linux-2.6-git/fs/reiser4/as_ops.c
@@ -350,6 +350,11 @@ int reiser4_releasepage(struct page *pag
        if (PageDirty(page))
                return 0;
 
+       /* extra page reference is used by reiser4 to protect
+        * jnode<->page link from this ->releasepage(). */
+       if (page_count(page) > 3)
+               return 0;
+
        /* releasable() needs jnode lock, because it looks at the jnode fields
         * and we need jload_lock here to avoid races with jload(). */
        spin_lock_jnode(node);

Reply via email to