Re-enable soft delete for yaffs1 mode.
authorCharles Manning <cdhmanning@gmail.com>
Fri, 19 Mar 2010 03:45:49 +0000 (16:45 +1300)
committerCharles Manning <cdhmanning@gmail.com>
Fri, 19 Mar 2010 03:45:49 +0000 (16:45 +1300)
Soft deletion was disabled because it messed up yaffs2 mode.
Soft deletion is not very valuable for yaffs2 mode, but has been
re-enabled for yaffs1 mode where it is far more value.

Also added a parameter to disable soft delete.

Signed-off-by: Charles Manning <cdhmanning@gmail.com>
yaffs_guts.c
yaffs_guts.h

index d8ca648..523bfb7 100644 (file)
@@ -5478,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;
@@ -5491,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 {
@@ -5508,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.
index dabcfe6..cf19391 100644 (file)
@@ -606,6 +606,7 @@ struct yaffs_DeviceParamStruct {
        int useHeaderFileSize;  /* Flag to determine if we should use file sizes from the header */
        int disableLazyLoad;    /* Disable lazy loading on this device */
        int wideTnodesDisabled; /* Set to disable wide tnodes */
+       int disableSoftDelete;  /* yaffs 1 only: Set to disable the use of softdeletion. */
        
        int deferDirectoryUpdate; /* Set to defer directory updates */