projects
/
yaffs2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't mark objects deleted during scanning
[yaffs2.git]
/
yaffs_guts.c
diff --git
a/yaffs_guts.c
b/yaffs_guts.c
index b17262beee992cfedb11d4b7031791188fe248ef..7d9fd4122669909035080897c9dcb2bc2df35e9f 100644
(file)
--- a/
yaffs_guts.c
+++ b/
yaffs_guts.c
@@
-13,7
+13,7
@@
*/
const char *yaffs_guts_c_version =
*/
const char *yaffs_guts_c_version =
- "$Id: yaffs_guts.c,v 1.2
4 2005-12-07 21:49
:18 charles Exp $";
+ "$Id: yaffs_guts.c,v 1.2
7 2005-12-20 04:02
:18 charles Exp $";
#include "yportenv.h"
#include "yportenv.h"
@@
-541,7
+541,7
@@
static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes)
int tnodeSize;
yaffs_Tnode *newTnodes;
__u8 *mem;
int tnodeSize;
yaffs_Tnode *newTnodes;
__u8 *mem;
- yaffs_Tnode *curr
ent
;
+ yaffs_Tnode *curr;
yaffs_Tnode *next;
yaffs_TnodeList *tnl;
yaffs_Tnode *next;
yaffs_TnodeList *tnl;
@@
-554,7
+554,8
@@
static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes)
/* make these things */
/* make these things */
- mem = newTnodes = YMALLOC(nTnodes * tnodeSize);
+ newTnodes = YMALLOC(nTnodes * tnodeSize);
+ mem = (__u8 *)newTnodes;
if (!newTnodes) {
T(YAFFS_TRACE_ERROR,
if (!newTnodes) {
T(YAFFS_TRACE_ERROR,
@@
-579,13
+580,13
@@
static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes)
#else
/* New hookup for wide tnodes */
for(i = 0; i < nTnodes -1; i++) {
#else
/* New hookup for wide tnodes */
for(i = 0; i < nTnodes -1; i++) {
- curr
ent
= (yaffs_Tnode *) &mem[i * tnodeSize];
+ curr = (yaffs_Tnode *) &mem[i * tnodeSize];
next = (yaffs_Tnode *) &mem[(i+1) * tnodeSize];
next = (yaffs_Tnode *) &mem[(i+1) * tnodeSize];
- curr
ent
->internal[0] = next;
+ curr->internal[0] = next;
}
}
- curr
ent
= (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize];
- curr
ent
->internal[0] = dev->freeTnodes;
+ curr = (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize];
+ curr->internal[0] = dev->freeTnodes;
dev->freeTnodes = (yaffs_Tnode *)mem;
#endif
dev->freeTnodes = (yaffs_Tnode *)mem;
#endif
@@
-4436,7
+4437,7
@@
static int yaffs_ScanBackwards(yaffs_Device * dev)
yaffs_Object *in;
yaffs_Object *parent;
int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
yaffs_Object *in;
yaffs_Object *parent;
int nBlocks = dev->internalEndBlock - dev->internalStartBlock + 1;
-
+ int itsUnlinked;
__u8 *chunkData;
yaffs_BlockIndex *blockIndex = NULL;
__u8 *chunkData;
yaffs_BlockIndex *blockIndex = NULL;
@@
-4846,11
+4847,8
@@
static int yaffs_ScanBackwards(yaffs_Device * dev)
yaffs_AddObjectToDirectory(parent, in);
yaffs_AddObjectToDirectory(parent, in);
- if ((parent == dev->deletedDir ||
- parent == dev->unlinkedDir)) {
- /* If it is unlinked at start up then it wants deleting */
- in->deleted = 1;
- }
+ itsUnlinked = (parent == dev->deletedDir) ||
+ (parent == dev->unlinkedDir);
if (oh->isShrink) {
/* Mark the block as having a shrinkHeader */
if (oh->isShrink) {
/* Mark the block as having a shrinkHeader */
@@
-4893,11
+4891,13
@@
static int yaffs_ScanBackwards(yaffs_Device * dev)
break;
case YAFFS_OBJECT_TYPE_HARDLINK:
break;
case YAFFS_OBJECT_TYPE_HARDLINK:
- in->variant.hardLinkVariant.equivalentObjectId =
+ if(!itsUnlinked) {
+ in->variant.hardLinkVariant.equivalentObjectId =
oh->equivalentObjectId;
oh->equivalentObjectId;
- in->hardLinks.next =
+
in->hardLinks.next =
(struct list_head *) hardList;
(struct list_head *) hardList;
- hardList = in;
+ hardList = in;
+ }
break;
case YAFFS_OBJECT_TYPE_DIRECTORY:
/* Do nothing */
break;
case YAFFS_OBJECT_TYPE_DIRECTORY:
/* Do nothing */