All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steve Roemen <steve@friservices.com>
To: dedekind@infradead.org
Cc: David Woodhouse <dwmw2@infradead.org>,
	Andrew Morton <akpm@osdl.org>,
	linux-fsdevel@vger.kernel.org
Subject: Re: 2.6.12-rc4-mm1
Date: Wed, 18 May 2005 11:16:54 -0500	[thread overview]
Message-ID: <428B6A76.9000708@friservices.com> (raw)
In-Reply-To: <1116410791.20667.5.camel@sauron.oktetlabs.ru>

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

on 05/18/05 05:06 Artem B. Bityuckiy wrote the following:

>Steve,
>
>  
>
>>okay, reproduced after a couple hours of running (nothing intensive), 
>>then doing a grep blah -r /*
>>    
>>
>I can't reproduce your problem using 2.6.12-rc4 + the 2 patches.
>I created 50GB Reiserfs partition, copied a lot of data there (built
>linux sources in many exemplars) and issued 'grep -r blah *'. I also
>tried it with parallel writing to the partition - no help.
>
>I wonder, could you please try 2.6.12-rc4 + the 2 patches and see if the
>warning still there ?
>
>The above referred patches are (and they are also attached):
>ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-
>rc4/2.6.12-rc4-mm1/broken-out/vfs-bugfix-two-read_inode-calles-
>without.patch 
>ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.12-rc4/2.6.12-rc4-mm1/broken-out/__wait_on_freeing_inode-fix.patch
>
>P.S. I wanted to try 2.6.12-rc4-mm2, but it OOPSes during the kernel
>load in my system. Then I switched to 2.6.12-rc4 in order not to fight
>with -mm2's problems.
>
>  
>
>------------------------------------------------------------------------
>
>diff -puN fs/inode.c~vfs-bugfix-two-read_inode-calles-without fs/inode.c
>--- 25/fs/inode.c~vfs-bugfix-two-read_inode-calles-without	Fri May  6 15:12:47 2005
>+++ 25-akpm/fs/inode.c	Fri May  6 15:12:47 2005
>@@ -282,6 +282,13 @@ static void dispose_list(struct list_hea
> 		if (inode->i_data.nrpages)
> 			truncate_inode_pages(&inode->i_data, 0);
> 		clear_inode(inode);
>+
>+		spin_lock(&inode_lock);
>+		hlist_del_init(&inode->i_hash);
>+		list_del_init(&inode->i_sb_list);
>+		spin_unlock(&inode_lock);
>+
>+		wake_up_inode(inode);
> 		destroy_inode(inode);
> 		nr_disposed++;
> 	}
>@@ -317,8 +324,6 @@ static int invalidate_list(struct list_h
> 		inode = list_entry(tmp, struct inode, i_sb_list);
> 		invalidate_inode_buffers(inode);
> 		if (!atomic_read(&inode->i_count)) {
>-			hlist_del_init(&inode->i_hash);
>-			list_del(&inode->i_sb_list);
> 			list_move(&inode->i_list, dispose);
> 			inode->i_state |= I_FREEING;
> 			count++;
>@@ -439,8 +444,6 @@ static void prune_icache(int nr_to_scan)
> 			if (!can_unuse(inode))
> 				continue;
> 		}
>-		hlist_del_init(&inode->i_hash);
>-		list_del_init(&inode->i_sb_list);
> 		list_move(&inode->i_list, &freeable);
> 		inode->i_state |= I_FREEING;
> 		nr_pruned++;
>
>  
>
>------------------------------------------------------------------------
>
>diff -puN fs/inode.c~__wait_on_freeing_inode-fix fs/inode.c
>--- 25/fs/inode.c~__wait_on_freeing_inode-fix	2005-05-09 20:09:33.000000000 -0700
>+++ 25-akpm/fs/inode.c	2005-05-09 20:09:33.000000000 -0700
>@@ -1241,29 +1241,21 @@ int inode_wait(void *word)
> }
> 
> /*
>- * If we try to find an inode in the inode hash while it is being deleted, we
>- * have to wait until the filesystem completes its deletion before reporting
>- * that it isn't found.  This is because iget will immediately call
>- * ->read_inode, and we want to be sure that evidence of the deletion is found
>- * by ->read_inode.
>+ * If we try to find an inode in the inode hash while it is being
>+ * deleted, we have to wait until the filesystem completes its
>+ * deletion before reporting that it isn't found.  This function waits
>+ * until the deletion _might_ have completed.  Callers are responsible
>+ * to recheck inode state.
>+ *
>+ * It doesn't matter if I_LOCK is not set initially, a call to
>+ * wake_up_inode() after removing from the hash list will DTRT.
>+ *
>  * This is called with inode_lock held.
>  */
> static void __wait_on_freeing_inode(struct inode *inode)
> {
> 	wait_queue_head_t *wq;
> 	DEFINE_WAIT_BIT(wait, &inode->i_state, __I_LOCK);
>-
>-	/*
>-	 * I_FREEING and I_CLEAR are cleared in process context under
>-	 * inode_lock, so we have to give the tasks who would clear them
>-	 * a chance to run and acquire inode_lock.
>-	 */
>-	if (!(inode->i_state & I_LOCK)) {
>-		spin_unlock(&inode_lock);
>-		yield();
>-		spin_lock(&inode_lock);
>-		return;
>-	}
> 	wq = bit_waitqueue(&inode->i_state, __I_LOCK);
> 	prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE);
> 	spin_unlock(&inode_lock);
>
>  
>
okay,  recompiled with those two files back in, and after an hour of 
running, while doing a
tar -xjvf linux-2.6.11.tar.bz2, it kicks out that error (attached).



Steve

[-- Attachment #2: dmesg_output --]
[-- Type: text/plain, Size: 553 bytes --]

BUG: atomic counter underflow at:
 [<c01aadf1>] reiserfs_clear_inode+0x81/0xb0
 [<c0173484>] clear_inode+0xe4/0x130
 [<c0173540>] dispose_list+0x70/0x130
 [<c017385f>] prune_icache+0xbf/0x1b0
 [<c0173964>] shrink_icache_memory+0x14/0x40
 [<c01471b9>] shrink_slab+0x159/0x1a0
 [<c01486e7>] balance_pgdat+0x2b7/0x3b0
 [<c01488b2>] kswapd+0xd2/0xf0
 [<c0130430>] autoremove_wake_function+0x0/0x50
 [<c0102fd2>] ret_from_fork+0x6/0x14
 [<c0130430>] autoremove_wake_function+0x0/0x50
 [<c01487e0>] kswapd+0x0/0xf0
 [<c010136d>] kernel_thread_helper+0x5/0x18

  reply	other threads:[~2005-05-18 16:17 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-12 10:31 2.6.12-rc4-mm1 Andrew Morton
2005-05-12 12:21 ` 2.6.12-rc4-mm1, build results compared to 2.6.12-rc3-mm3 Jan Dittmer
2005-05-13  6:19   ` Maneesh Soni
2005-05-12 12:39 ` 2.6.12-rc4-mm1 Reuben Farrelly
2005-05-12 15:09   ` 2.6.12-rc4-mm1 Andrew Morton
2005-05-14 21:19   ` 2.6.12-rc4-mm1 Andrew James Wade
2005-05-12 12:58 ` kobject_register failed for intelfb (-EACCES) (Re: 2.6.12-rc4-mm1) Alexey Dobriyan
2005-05-12 15:43   ` Greg KH
2005-05-12 15:59     ` Andrew Morton
2005-05-12 16:04       ` Greg KH
2005-05-12 16:20       ` Alexey Dobriyan
2005-05-12 18:14 ` [PATCH -mm] Print KBD and AUX irqs correctly Alexey Dobriyan
2005-05-12 21:42 ` [-mm patch] mm.h: fix page_zone compile error Adrian Bunk
2005-05-12 22:09   ` Dave Hansen
2005-05-12 22:26     ` Adrian Bunk
2005-05-13 13:26   ` Andy Whitcroft
2005-05-12 21:54 ` 2.6.12-rc4-mm1 Greg KH
2005-05-19  6:25   ` 2.6.12-rc4-mm1 Greg KH
2005-05-13  0:47 ` [-mm patch] drivers/cpufreq/cpufreq_conservative.c: make cpufreq_gov_dbs static Adrian Bunk
2005-05-13  0:47   ` Adrian Bunk
2005-05-13  7:24 ` 2.6.12-rc4-mm1 Dave Airlie
2005-05-13  7:25   ` 2.6.12-rc4-mm1 Dave Airlie
2005-05-13 14:53 ` 2.6.12-rc4-mm1 steve
2005-05-13 18:13   ` 2.6.12-rc4-mm1 David Woodhouse
2005-05-14  1:07     ` 2.6.12-rc4-mm1 steve
2005-05-18 10:06       ` 2.6.12-rc4-mm1 Artem B. Bityuckiy
2005-05-18 16:16         ` Steve Roemen [this message]
2005-05-19 16:45           ` 2.6.12-rc4-mm1 David Woodhouse
2005-05-19 17:55             ` 2.6.12-rc4-mm1 Steve Roemen
2005-05-19 18:04               ` 2.6.12-rc4-mm1 David Woodhouse
2005-05-19 20:12                 ` 2.6.12-rc4-mm1 Steve Roemen
2005-05-19 20:21                   ` 2.6.12-rc4-mm1 David Woodhouse
     [not found]     ` <428508BB.8030604@friservices.com>
2005-05-14 10:46       ` 2.6.12-rc4-mm1 Artem B. Bityuckiy
2005-05-13 18:12 ` [-mm patch] kprobes: arch_supports_kretprobes cleanup Frederik Deweerdt
2005-05-13 19:40 ` 2.6.12-rc4-mm1 Johannes Stezenbach
2005-05-14 11:27 ` 2.6.12-rc4-mm1 Richard Purdie
2005-05-16 11:27   ` 2.6.12-rc4-mm2 Richard Purdie
2005-05-15  1:20 ` 2.6.12-rc4-mm1 William Lee Irwin III
2005-05-15  1:30   ` 2.6.12-rc4-mm1 Andrew Morton
2005-05-15  9:44     ` 2.6.12-rc4-mm1 Jesper Juhl
2005-05-15  9:54       ` 2.6.12-rc4-mm1 Andrew Morton
2005-05-15  9:43 ` 2.6.12-rc4-mm1: drivers/usb/gadget/ether.c compile error Adrian Bunk
2005-05-16 15:26   ` David Brownell
2005-05-15 11:32 ` [-mm patch] arch/i386/Kconfig: SELECT_MEMORY_MODEL -> ARCH_SELECT_MEMORY_MODEL Adrian Bunk
2005-05-15 18:24   ` Dave Hansen

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=428B6A76.9000708@friservices.com \
    --to=steve@friservices.com \
    --cc=akpm@osdl.org \
    --cc=dedekind@infradead.org \
    --cc=dwmw2@infradead.org \
    --cc=linux-fsdevel@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.