[Yaffs] Problem with deleted files after unmount/mount

Top Page
Attachments:
Message as email
+ (text/plain)
Delete this message
Reply to this message
Author: Beat Morf
Date:  
To: yaffs
Subject: [Yaffs] Problem with deleted files after unmount/mount
Hi

I am testing YAFFS with the direct implementation on my hardware. All
work well until I tried following code.


for (j=0; j<2; j++)
{
     h = yaffs_open("/flash/yaffs1", O_CREAT | O_RDWR | O_TRUNC, S_IREAD 

| S_IWRITE);

     if (0 <= h)
     {
         if (200 == yaffs_write(h, buffer, 200))
         {
             if (0 == yaffs_close(h))
             {
                 yaffs_unmount("/flash");
                 yaffs_mount("/flash");
                 if (0 == yaffs_rename("/flash/yaffs1", "/flash/yaffs2"))
                 {
                     if (0 == yaffs_unlink("/flash/yaffs2"))
                     {
                         /* OK */
                         diag_printf("round %d is OK\n", j);
                     }
                     else
                     {
                         diag_printf("unlink error\n");
                     }
                 }
                 else
                 {
                     diag_printf("rename error\n");
                 }
             }
             else
             {
                 diag_printf("close error\n");
             }
         }
         else
         {
             diag_printf("write error\n");
         }
     }
     else
     {
         diag_printf("open error\n");
     }
}


For (j==0) the loop works well and no file called /flash/yaffs1 or
/flash/yaffs2 is available at the end.
For (j==1) the procedure fails at the function
yaffs_rename("/flash/yaffs1", "/flash/yaffs2") with the return value
'-1'. If I list the directory "/flash", I see two files called
"/flash/yaffs1" and "/flash/yaffs2" !!!

Disabling the procedures 'yaffs_unmount("/flash")' and
'yaffs_mount("/flash")' will fix the problem!

Does anybody know such a file-problem of unmounting and remounting a
YAFFS partition during normal operation? (of course in normal operation
a YAFFS partition is mounting at the beginning and unmounting at the end
of an application).


Thanks in advance,
Beat Morf