Re-enable soft delete for yaffs1 mode.
[yaffs2.git] / yaffs_guts.c
index df66ec89860585636ffbfdaf0c80e7b90186493c..523bfb722b8afc31bd36f4e1ededd9805234460d 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 const char *yaffs_guts_c_version =
-    "$Id: yaffs_guts.c,v 1.119 2010-03-12 02:48:34 charles Exp $";
+    "$Id: yaffs_guts.c,v 1.120 2010-03-15 23:10:34 charles Exp $";
 
 #include "yportenv.h"
 #include "yaffs_trace.h"
@@ -3456,6 +3456,10 @@ static int yaffs_CheckGarbageCollection(yaffs_Device *dev)
 
        int checkpointBlockAdjust;
 
+       if(dev->param.gcControl &&
+               (dev->param.gcControl(dev) & 1) == 0)
+               return YAFFS_OK;
+
        if (dev->isDoingGC) {
                /* Bail out so we don't get recursive gc */
                return YAFFS_OK;
@@ -5474,6 +5478,7 @@ static int yaffs_UnlinkFileIfNeeded(yaffs_Object *in)
 
        int retVal;
        int immediateDeletion = 0;
+       yaffs_Device *dev = in->myDev;
 
        if (!in->myInode)
                immediateDeletion = 1;
@@ -5487,7 +5492,7 @@ static int yaffs_UnlinkFileIfNeeded(yaffs_Object *in)
                   in->objectId));
                in->deleted = 1;
                in->myDev->nDeletedFiles++;
-               if (1 || in->myDev->param.isYaffs2)
+               if (dev->param.disableSoftDelete || dev->param.isYaffs2)
                        yaffs_ResizeFile(in, 0);
                yaffs_SoftDeleteFile(in);
        } else {
@@ -5504,8 +5509,10 @@ int yaffs_DeleteFile(yaffs_Object *in)
 {
        int retVal = YAFFS_OK;
        int deleted = in->deleted;
+       yaffs_Device *dev = in->myDev;
 
-       yaffs_ResizeFile(in, 0);
+       if (dev->param.disableSoftDelete || dev->param.isYaffs2)
+               yaffs_ResizeFile(in, 0);
 
        if (in->nDataChunks > 0) {
                /* Use soft deletion if there is data in the file.