[Yaffs-archive] YAFFS bugs?

Andras Toth Andras.Toth@guardware.com
Thu, 19 Sep 2002 09:34:33 +0200


Hello,

I tried YAFFS yesterday on a real NAND flash device of my SA1110 based ARM 
board. I found the following problems:

1.
After creating a new directory, first 'cd' fails ( kernel dump ) and kills my 
shell, later I can change the directory fine. 
Fix: Added a dget_locked(dentry) with the locking/unlocking necessary and 
FIXED!! Have you already tried this way ? I found in the source code, there 
were some efforts to solve this problem before.

Here we are the 'chunk' added to yaffs_lookup:

		if(inode)
		{
			T((KERN_DEBUG"yaffs_loookup looks good\n"));
			// try to fix ln -s prob dget(dentry); // try to solve directory bug
>>>>>>>>			spin_lock(&dcache_lock);
>>>>>>>>			dget_locked(dentry);
>>>>>>>>			spin_unlock(&dcache_lock);
			d_add(dentry,inode);

			yaffs_GrossUnlock(dev);

			return dentry;
		}


 ( dget() was not correct, because it fails if the d_count zero. )



2.
Strange behaviour about device nodes ( special files ) 
I've found a "copt/paste editing' bug in yaffs_guts.c.
MknodSpecial function created a DIRECTORY type object on the flash.
I changed to SPECIAL. See below:

yaffs_Object *yaffs_MknodSpecial(yaffs_Object *parent,const char *name, __u32 
mode, __u32 uid, __u32 gid, __u32 rdev)
{
	return 
yaffs_MknodObject(YAFFS_OBJECT_TYPE_SPECIAL,parent,name,mode,uid,gid,NULL,NULL,rdev);
}

I'll try it soon, I hope helps. Reporting later ...

Andras Toth
Senior Software Engineer
Guardware Systems Ltd.
Budapest, Hungary


---------------------------------------------------------------------------------------
This mailing list is hosted by Toby Churchill open software (www.toby-churchill.org).
If mailing list membership is no longer wanted you can remove yourself from the list by 
sending an email to yaffs-request@toby-churchill.org with the text "unsubscribe" 
(without the quotes) as the subject.