From: Charles Manning Date: Fri, 19 Mar 2010 03:45:49 +0000 (+1300) Subject: Re-enable soft delete for yaffs1 mode. X-Git-Tag: pre-name-change~94 X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=commitdiff_plain;h=329ebf2e9014af0fa876cd860a4525e2a98a0d50 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 --- diff --git a/yaffs_guts.c b/yaffs_guts.c index d8ca648..523bfb7 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -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. diff --git a/yaffs_guts.h b/yaffs_guts.h index dabcfe6..cf19391 100644 --- 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 */