Checkpointing changes
[yaffs2.git] / direct / yaffsfs.c
index 914e714..67671ea 100644 (file)
@@ -25,7 +25,7 @@
 #endif
 
 
-const char *yaffsfs_c_version="$Id: yaffsfs.c,v 1.8 2006-02-08 22:38:24 charles Exp $";
+const char *yaffsfs_c_version="$Id: yaffsfs.c,v 1.12 2006-05-08 10:13:35 charles Exp $";
 
 // configurationList is the list of devices that are supported
 static yaffsfs_DeviceConfiguration *yaffsfs_configurationList;
@@ -999,13 +999,14 @@ int yaffs_fchmod(int fd, mode_t mode)
 int yaffs_mkdir(const char *path, mode_t mode)
 {
        yaffs_Object *parent = NULL;
-       yaffs_Object *dir;
+       yaffs_Object *dir = NULL;
        char *name;
        int retVal= -1;
        
        yaffsfs_Lock();
        parent = yaffsfs_FindDirectory(NULL,path,&name,0);
-       dir = yaffs_MknodDirectory(parent,name,mode,0,0);
+       if(parent)
+               dir = yaffs_MknodDirectory(parent,name,mode,0,0);
        if(dir)
        {
                retVal = 0;
@@ -1075,6 +1076,10 @@ int yaffs_unmount(const char *path)
                {
                        int i;
                        int inUse;
+                       
+                       yaffs_FlushEntireDeviceCache(dev);
+                       yaffs_CheckpointSave(dev);
+                       
                        for(i = inUse = 0; i < YAFFSFS_N_HANDLES && !inUse; i++)
                        {
                                if(yaffsfs_handle[i].inUse && yaffsfs_handle[i].obj->myDev == dev)
@@ -1407,7 +1412,7 @@ int yaffs_link(const char *oldpath, const char *newpath)
        // Creates a link called newpath to existing oldpath
        yaffs_Object *obj = NULL;
        yaffs_Object *target = NULL;
-       int retVal;
+       int retVal = 0;
 
                
        yaffsfs_Lock();