Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Artem B. Bityuckiy
On Mon, 2005-04-18 at 23:16 +1000, David Woodhouse wrote: > On Mon, 2005-04-18 at 13:46 +0100, Christoph Hellwig wrote: > > Why doesn't __wait_on_freeing_inode get called? prune_icache sets > > I_FREEING before it's dropping the inode lock. > > Because prune_icache() _also_ removes the inode from

ntfs ->iput use - was: Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Anton Altaparmakov
Hi Christoph, If you remember you complained about ntfs' "fishy use of iput"? I think that David's explanation below is exactly the reason why I had to do it IIRC... So if the vfs is fixed so the below can _never_ happen anymore then I believe it would be safe to do as you and Al suggest and sto

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread David Woodhouse
On Mon, 2005-04-18 at 13:46 +0100, Christoph Hellwig wrote: > Why doesn't __wait_on_freeing_inode get called? prune_icache sets > I_FREEING before it's dropping the inode lock. Because prune_icache() _also_ removes the inode from the hash before dropping the inode lock. It shouldn't -- the inode s

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread David Woodhouse
On Mon, 2005-04-18 at 13:46 +0100, Christoph Hellwig wrote: > Any, this sounds like you'd want to use ilookup because you don't want > to read the inode in the cache anyway, right? We use ilookup() in some circumstances -- if the inode has zero nlink and hence we definitely don't want to pull it b

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Artem B. Bityuckiy
Christoph Hellwig wrote: Why doesn't __wait_on_freeing_inode get called? prune_icache sets I_FREEING before it's dropping the inode lock. I suppose because the inode is *deleted* from i_hash. But find_inode_fast looks for inode using *->i_hash*. Of course it will not find anything and call read_i

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread David Woodhouse
On Mon, 2005-04-18 at 16:31 +0400, Artem B. Bityuckiy wrote: > Yes, exactly. VFS developers may always say "it is your problem - > redesign JFFS2", but I think it is too late to redesign it. Bear in mind that the reason I added the state tracking to the internal jffs2_inode_cache state was specifi

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Christoph Hellwig
On Mon, Apr 18, 2005 at 04:31:06PM +0400, Artem B. Bityuckiy wrote: > On Mon, 2005-04-18 at 12:52 +0100, Christoph Hellwig wrote: > > Oh, I thought the problem is that JFFS2 thought an inode was freed when > > it still was in use. So you're problem is actually that it's no in the > > hash anymore

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Artem B. Bityuckiy
On Mon, 2005-04-18 at 12:52 +0100, Christoph Hellwig wrote: > Oh, I thought the problem is that JFFS2 thought an inode was freed when > it still was in use. So you're problem is actually that it's no in the > hash anymore but you don't know yet? Yes, exactly. VFS developers may always say "it is y

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Christoph Hellwig
On Mon, Apr 18, 2005 at 03:46:21PM +0400, Artem B. Bityuckiy wrote: > On Mon, 2005-04-18 at 11:53 +0100, Christoph Hellwig wrote: > > The VFS already has a method for freeing an struct inode pointer, and that > > is ->destroy_inode. You're probably better off updating your GC state from > > that

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Artem B. Bityuckiy
On Mon, 2005-04-18 at 11:53 +0100, Christoph Hellwig wrote: > The VFS already has a method for freeing an struct inode pointer, and that > is ->destroy_inode. You're probably better off updating your GC state from > that place. destroy_inode() does not help. JFFS2 already makes use of clear_inode

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Christoph Hellwig
On Mon, Apr 18, 2005 at 12:58:50PM +0400, Artem B. Bityuckiy wrote: > On Mon, 2005-04-18 at 09:51 +0100, Christoph Hellwig wrote: > > No, exporting locks is a really bad idea. Please try to find a better > > method to fix your problem that doesn't export random kernel symbols. > > > In general it

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Artem B. Bityuckiy
On Mon, 2005-04-18 at 09:51 +0100, Christoph Hellwig wrote: > No, exporting locks is a really bad idea. Please try to find a better > method to fix your problem that doesn't export random kernel symbols. > In general it must be true. But this specific case I believe is reasonable enough to export

Re: [PATC] small VFS change for JFFS2

2005-04-18 Thread Christoph Hellwig
On Mon, Apr 18, 2005 at 12:47:11PM +0400, Artem B. Bityuckiy wrote: > JFFS2 assumes that the above mentioned 'state' field is always coherent > with the real state of the inode. The state is changed on read_inode() > and clear_inode() inode operation calls. > One obvious thing to fix this JFFS2 p

[PATC] small VFS change for JFFS2

2005-04-18 Thread Artem B. Bityuckiy
Hello, tracing out an JFFS2's SMP/PREEMPT bug I've realized that I need to make a small change in VFS in order to fix the bug gracefully. I refer to the fs/inode.c file from the 2.6.11.5 Linux kernel. JFFS2 supports its own accounting of inodes by means of small 'struct jffs2_inode_cache' object