All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Vladimir V. Saveliev" <vs@namesys.com>
To: Guillaume Pelat <guillaume.pelat@winch-hebergement.net>
Cc: linux-kernel@vger.kernel.org, gp@winch-hebergement.net
Subject: Re: Reiserfs 3.6 + quota enabled, crash on delete
Date: Wed, 27 Jul 2005 18:11:47 +0400	[thread overview]
Message-ID: <42E79623.1000309@namesys.com> (raw)
In-Reply-To: <42E7828E.9080903@winch-hebergement.net>

[-- Attachment #1: Type: text/plain, Size: 3166 bytes --]

Hello

Guillaume Pelat wrote:
> Hi,
> 
> I'm having a crash with reiserfs 3.6 + user quota enabled, on 2.6.11.10 
> kernel (no smp), apparently when deleting files (or maybe during a 
> truncate operation). The problem seems to happen under high load.
> When the error occurs, all the processes accessing the reiserfs 
> partition seems to hang. This problem happened several times on 
> different servers (having the same hardware configuration) during last 
> weeks.
> 
> You can find the error logs below :
> 
> ======================================================================
> ReiserFS: sda3: warning: vs-15011: reiserfs_release_objectid: tried to 
> free free object id (96557091)
> ReiserFS: sda3: warning: PAP-5660: reiserfs_do_truncate: wrong result -1 
> of search for [847141 185744 0xfffffffffffffff DIRECT]
> ReiserFS: sda3: warning: clm-2100: nesting info a different FS

The attached patch should help to get rid of clm-2100 and to avoid crash.

Also, I think you should reiserfsck sda3.

> ReiserFS: sda3: warning: clm-2100: nesting info a different FS
> ReiserFS: sda3: warning: clm-2100: nesting info a different FS
> ReiserFS: sda3: warning: clm-2100: nesting info a different FS
> REISERFS: panic (device sda3): journal-1577: handle trans id 1122409068 
> != current trans id 3947596
> ------------[ cut here ]------------
> kernel BUG at fs/reiserfs/prints.c:362!
> invalid operand: 0000 [#1]
> CPU:    0
> EIP:    0060:[<c019785f>]    Not tainted VLI
> EFLAGS: 00010282   (2.6.11.6)
> EIP is at reiserfs_panic+0x4f/0x80
> eax: 00000068   ebx: c02be9bf   ecx: c038e8f8   edx: c02eecac
> esi: f7eea000   edi: f7eea140   ebp: f3391944   esp: f339192c
> ds: 007b   es: 007b   ss: 0068
> Process pure-ftpd (pid: 27841, threadinfo=f3390000 task=d3053530)
> Stack: c02c3ee0 f7eea140 c03b3580 f7eea000 00000000 f895d000 f3391984 
> c01a6d01
>        f7eea000 c02c6440 42e69a6c 003c3c4c 00000002 f3391970 cdc49b40 
> 00000002
>        cdc49b40 f3391984 00000000 052f8dee 00000000 f2bbfe60 f3391a08 
> c019ebba
> Call Trace:
>  [<c010282f>] show_stack+0x7f/0xa0
>  [<c01029d1>] show_registers+0x151/0x1c0
>  [<c0102bc8>] die+0xc8/0x150
>  [<c010307c>] do_invalid_op+0xbc/0xd0
>  [<c01024bb>] error_code+0x2b/0x30
>  [<c01a6d01>] journal_mark_dirty+0x271/0x2a0
>  [<c019ebba>] prepare_for_delete_or_cut+0x54a/0x720
>  [<c019fdaa>] reiserfs_cut_from_item+0xca/0x5f0
>  [<c01a0668>] reiserfs_do_truncate+0x2e8/0x610
>  [<c019f7ef>] reiserfs_delete_object+0x3f/0x80
>  [<c018636c>] reiserfs_delete_inode+0x8c/0x110
>  [<c015ed85>] generic_delete_inode+0x95/0x130
>  [<c015efc6>] iput+0x56/0x80
>  [<c018995a>] reiserfs_new_inode+0x13a/0x740
>  [<c01847b7>] reiserfs_create+0x97/0x1b0
>  [<c0153e0f>] vfs_create+0x9f/0x120
>  [<c01546f9>] open_namei+0x5d9/0x630
>  [<c0144bbc>] filp_open+0x3c/0x60
>  [<c0144ed6>] sys_open+0x46/0x90
>  [<c0102313>] syscall_call+0x7/0xb
> Code: 01 00 00 89 04 24 e8 31 fd ff ff c7 04 24 e0 3e 2c c0 85 f6 89 d8 
> 0f 45 c7 ba 80 35 3b c0 89 54 24 08 89 44 24 04 e8 c1 a9 f7ff <0f> 0b 6a 
> 01 02 ef 2b c0 c7 04 24 20 3f 2c c0 85 f6 b9 80 35 3b
> ======================================================================
> 

[-- Attachment #2: reiserfs-add-missing-journal_end.patch --]
[-- Type: text/plain, Size: 1181 bytes --]


This patch adds missing calls to journal_end on error handling code paths.


 fs/reiserfs/inode.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletion(-)

diff -puN fs/reiserfs/inode.c~reiserfs-add-missing-journal_end fs/reiserfs/inode.c
--- linux-2.6.11.10/fs/reiserfs/inode.c~reiserfs-add-missing-journal_end	2005-07-27 18:03:06.197544430 +0400
+++ linux-2.6.11.10-vs/fs/reiserfs/inode.c	2005-07-27 18:04:07.363047159 +0400
@@ -46,6 +46,7 @@ void reiserfs_delete_inode (struct inode
 	reiserfs_update_inode_transaction(inode) ;
 
 	if (reiserfs_delete_object (&th, inode)) {
+	    journal_end(&th, inode->i_sb, jbegin_count);
 	    up (&inode->i_sem);
 	    goto out;
 	}
@@ -2015,8 +2016,10 @@ int reiserfs_truncate_file(struct inode 
 	       either appears truncated properly or not truncated at all */
 	add_save_link (&th, p_s_inode, 1);
     error = reiserfs_do_truncate (&th, p_s_inode, page, update_timestamps) ;
-    if (error)
+    if (error) {
+	journal_end (&th, p_s_inode->i_sb, JOURNAL_PER_BALANCE_CNT * 2 + 1);
         goto out;
+    }
     error = journal_end (&th, p_s_inode->i_sb, JOURNAL_PER_BALANCE_CNT * 2 + 1);
     if (error)
         goto out;

_

      reply	other threads:[~2005-07-27 14:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-07-27 12:48 Reiserfs 3.6 + quota enabled, crash on delete Guillaume Pelat
2005-07-27 14:11 ` Vladimir V. Saveliev [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42E79623.1000309@namesys.com \
    --to=vs@namesys.com \
    --cc=gp@winch-hebergement.net \
    --cc=guillaume.pelat@winch-hebergement.net \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.