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