Re: [Yaffs] Lockup in 2.6.28-rc8 (double lock)

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Charles Manning
Date:  
To: yaffs
Subject: Re: [Yaffs] Lockup in 2.6.28-rc8 (double lock)
On Tuesday 10 February 2009 07:02:05 Peter Barada wrote:
> I pulled a new copy of CVS YAFFS2 just after Charles added his patch for
> write_begin/write_end to build YAFFS for 2.6.28 kernels.
>

<snip>
> yaffs locking
> yaffs_mknod: making file
> yaffs_clear_inode: ino 1489, count 0 object exists
> yaffs locking
> yaffs_write_super
> yaffs_write_super
> yaffs_write_super
> yaffs_write_super
>
> It looks like a lookup for "Podgorica" came back as not there, but
> creating the object for "Podgorica" needs to clear the inode which tries
> to lock it, and YAFFS (and the upper FS layers) are wedged.
>
> Any ideas on how to fix this?


Peter

You say you pulled CVS just after I checked in the 2.6.28 stuff.

A while later I checked in change to yportenv.h

http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/yaffs2/yportenv.h?r1=1.20&r2=1.21

This patch **should** fix what you're seeing.

Basically what I think is happening is this:

yaffs wants to allocate more memory and calls kmalloc
kmalloc prunes the inode cache to free up memory and calls yaffs_clear_inode
deadlock

The change in yportenv.h tells kmalloc that the call is from within an fs and
not to do fs harvesting.

Hope that does something for you.

-- CHarles