X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=yaffs_guts.c;h=7d9fd4122669909035080897c9dcb2bc2df35e9f;hp=b17262beee992cfedb11d4b7031791188fe248ef;hb=394fcf7b50181f9f4bde6748f1870de94c9e0732;hpb=f8ce690845de29ca75d312207c8e59eac8bf85d4 diff --git a/yaffs_guts.c b/yaffs_guts.c index b17262b..7d9fd41 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -13,7 +13,7 @@ */ const char *yaffs_guts_c_version = - "$Id: yaffs_guts.c,v 1.24 2005-12-07 21:49:18 charles Exp $"; + "$Id: yaffs_guts.c,v 1.27 2005-12-20 04:02:18 charles Exp $"; #include "yportenv.h" @@ -541,7 +541,7 @@ static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes) int tnodeSize; yaffs_Tnode *newTnodes; __u8 *mem; - yaffs_Tnode *current; + yaffs_Tnode *curr; yaffs_Tnode *next; yaffs_TnodeList *tnl; @@ -554,7 +554,8 @@ static int yaffs_CreateTnodes(yaffs_Device * dev, int nTnodes) /* make these things */ - mem = newTnodes = YMALLOC(nTnodes * tnodeSize); + newTnodes = YMALLOC(nTnodes * tnodeSize); + mem = (__u8 *)newTnodes; 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++) { - current = (yaffs_Tnode *) &mem[i * tnodeSize]; + curr = (yaffs_Tnode *) &mem[i * tnodeSize]; next = (yaffs_Tnode *) &mem[(i+1) * tnodeSize]; - current->internal[0] = next; + curr->internal[0] = next; } - current = (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize]; - current->internal[0] = dev->freeTnodes; + curr = (yaffs_Tnode *) &mem[(nTnodes - 1) * tnodeSize]; + curr->internal[0] = dev->freeTnodes; 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; - + int itsUnlinked; __u8 *chunkData; yaffs_BlockIndex *blockIndex = NULL; @@ -4846,11 +4847,8 @@ static int yaffs_ScanBackwards(yaffs_Device * dev) 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 */ @@ -4893,11 +4891,13 @@ static int yaffs_ScanBackwards(yaffs_Device * dev) break; case YAFFS_OBJECT_TYPE_HARDLINK: - in->variant.hardLinkVariant.equivalentObjectId = + if(!itsUnlinked) { + in->variant.hardLinkVariant.equivalentObjectId = oh->equivalentObjectId; - in->hardLinks.next = + in->hardLinks.next = (struct list_head *) hardList; - hardList = in; + hardList = in; + } break; case YAFFS_OBJECT_TYPE_DIRECTORY: /* Do nothing */