changeset 393:b5e0ebc1e8e5

Re-enable soft delete for yaffs1 mode. 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>
author Charles Manning <cdhmanning@gmail.com>
date Fri, 19 Mar 2010 16:45:49 +1300
parents 37c92ae29f6e
children bedc7047de18 0e4492050172
files yaffs_guts.c yaffs_guts.h
diffstat 2 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/yaffs_guts.c
+++ b/yaffs_guts.c
@@ -5478,6 +5478,7 @@ static int yaffs_UnlinkFileIfNeeded(yaff
 
 	int retVal;
 	int immediateDeletion = 0;
+	yaffs_Device *dev = in->myDev;
 
 	if (!in->myInode)
 		immediateDeletion = 1;
@@ -5491,7 +5492,7 @@ static int yaffs_UnlinkFileIfNeeded(yaff
 		   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_ResizeFile(in, 0);
+	yaffs_Device *dev = in->myDev;
+
+	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.
--- a/yaffs_guts.h
+++ b/yaffs_guts.h
@@ -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 */