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

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Charles Manning
Date:  
To: yaffs
Subject: Re: [Yaffs] Some problem of yaffs_delete_inode , causee page fault
Thank you for your testing.

The test is bogus for the link removal case you outline below so I have just
removed the test.

Please try cvs now.

Thank you.

-- Charles

On Thursday 05 March 2009 21:49:38 fs p wrote:
> 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_AddObjectTo
>Directory, 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);

> > >
> > > }