Re: [Yaffs] Some problem of yaffs_delete_inode , causee page…

Top Page
Attachments:
Message as email
+ (text/plain)
+ (text/html)
Delete this message
Reply to this message
Author: fs p
Date:  
To: Charles Manning
CC: yaffs
Subject: Re: [Yaffs] Some problem of yaffs_delete_inode , causee page fault
I have test this patch, the problem is gone( rmdir ) , but a YBUG come :

create a reguar file test.bin , then create a hardlink :
ln test.bin foo.bin ,
then delete the test.bin,

NOW:
==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6862



The work flow is
yaffs_DoGenericObjectDeletion-->yaffs_ChangeObjectName--->yaffs_AddObjectToDirectory,
it seems that ylist_empty(&obj->siblings) ;

BTW , I have test the yaffs2 in nandsim , but the yaffs_delete_inode page
fault not come , why ?



2009/3/5 Charles Manning <>

> I have done some check ins which should have fixed this issue and the YBUG
> issues.
>
> I would really appreciate it if people could pick up those changes and give
> some feedback.
>
> What was happening was that the unlink was destroying the object, but this
> should have been defered until the delete_object happened. Regular files
> were
> being handled correctly (to handle the case where an unlinked file can
> still
> be live) but other object types were not being handled correctly.
>
> The problem was apparently benign until the extra checking was added.
>
> -- CHarles
>
>
> On Thursday 05 March 2009 02:15:04 fs p wrote:
> > My kenel is 2.6.19 , yaffs is 09-2-24 from cvs
> >
> > If I delete a dir named "oop ", use rmdir cmd , found that:
> >
> > 1. yaffs_DoGenericObjectDeletion is called (frist time) ,
> >                    the oop  is move to yaffs's deletedDir,  now oop's
> > parnet is deletedDir , then yaffs_RemoveObjectFromDirectory ( yaffs_gus.c
> > :5201 )is called ,  so the  oop 's parnet is NULL;  (

> >
> > 2. Then in the do_rmdir function, after the vfs_rmdir , will call :
> >
> > dput ----->yaffs_delete_inode( from inode get the yaffs_object , but
> the
> > obj's parnet is NULL )
> > --->yaffs_DeleteFile--->yaffs_DoGenericObjectDeletion( second time) ,
> from
> > here yaffs complain:
> >
> > ==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6836
> > ==>> yaffs bug: fs/yaffs2/yaffs_guts.c 6763
> >
> > The problem is    oop->parent=NULL , so run in   yaffs_VerifyDirectory ,
> > page fault come.

> >
> > Any Tips? I want change the yaffs_delete_inode like this:
> >
> > yaffs_Object *obj = yaffs_InodeToObject(inode);
> >
> >     if( obj && obj->parent){
> >     dev = obj->myDev;
> >         yaffs_GrossLock(dev);
> >         yaffs_DeleteFile(obj);
> >         yaffs_GrossUnlock(dev);

> >
> > }
>
>
>