From 7bf7027431679fe3ee014e5ce6be8b9c50bc48c6 Mon Sep 17 00:00:00 2001 From: juhosg Date: Tue, 10 Jun 2008 08:20:19 +0000 Subject: [kernel] generic-2.6: revert yaffs changes [11378], the new code is not working correctly on RouterBoards git-svn-id: svn://svn.openwrt.org/openwrt/trunk@11427 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../files/fs/yaffs2/yaffs_packedtags2.c | 130 +++++++++------------ 1 file changed, 52 insertions(+), 78 deletions(-) (limited to 'target/linux/generic-2.6/files/fs/yaffs2/yaffs_packedtags2.c') diff --git a/target/linux/generic-2.6/files/fs/yaffs2/yaffs_packedtags2.c b/target/linux/generic-2.6/files/fs/yaffs2/yaffs_packedtags2.c index 957ed8bf0..e420f95da 100644 --- a/target/linux/generic-2.6/files/fs/yaffs2/yaffs_packedtags2.c +++ b/target/linux/generic-2.6/files/fs/yaffs2/yaffs_packedtags2.c @@ -37,70 +37,60 @@ #define EXTRA_OBJECT_TYPE_SHIFT (28) #define EXTRA_OBJECT_TYPE_MASK ((0x0F) << EXTRA_OBJECT_TYPE_SHIFT) - -static void yaffs_DumpPackedTags2TagsPart(const yaffs_PackedTags2TagsPart * ptt) +static void yaffs_DumpPackedTags2(const yaffs_PackedTags2 * pt) { T(YAFFS_TRACE_MTD, (TSTR("packed tags obj %d chunk %d byte %d seq %d" TENDSTR), - ptt->objectId, ptt->chunkId, ptt->byteCount, - ptt->sequenceNumber)); -} -static void yaffs_DumpPackedTags2(const yaffs_PackedTags2 * pt) -{ - yaffs_DumpPackedTags2TagsPart(&pt->t); + pt->t.objectId, pt->t.chunkId, pt->t.byteCount, + pt->t.sequenceNumber)); } static void yaffs_DumpTags2(const yaffs_ExtendedTags * t) { T(YAFFS_TRACE_MTD, (TSTR - ("ext.tags eccres %d blkbad %d chused %d obj %d chunk%d byte %d del %d ser %d seq %d" + ("ext.tags eccres %d blkbad %d chused %d obj %d chunk%d byte " + "%d del %d ser %d seq %d" TENDSTR), t->eccResult, t->blockBad, t->chunkUsed, t->objectId, t->chunkId, t->byteCount, t->chunkDeleted, t->serialNumber, t->sequenceNumber)); } -void yaffs_PackTags2TagsPart(yaffs_PackedTags2TagsPart * ptt, const yaffs_ExtendedTags * t) +void yaffs_PackTags2(yaffs_PackedTags2 * pt, const yaffs_ExtendedTags * t) { - ptt->chunkId = t->chunkId; - ptt->sequenceNumber = t->sequenceNumber; - ptt->byteCount = t->byteCount; - ptt->objectId = t->objectId; + pt->t.chunkId = t->chunkId; + pt->t.sequenceNumber = t->sequenceNumber; + pt->t.byteCount = t->byteCount; + pt->t.objectId = t->objectId; if (t->chunkId == 0 && t->extraHeaderInfoAvailable) { /* Store the extra header info instead */ /* We save the parent object in the chunkId */ - ptt->chunkId = EXTRA_HEADER_INFO_FLAG + pt->t.chunkId = EXTRA_HEADER_INFO_FLAG | t->extraParentObjectId; if (t->extraIsShrinkHeader) { - ptt->chunkId |= EXTRA_SHRINK_FLAG; + pt->t.chunkId |= EXTRA_SHRINK_FLAG; } if (t->extraShadows) { - ptt->chunkId |= EXTRA_SHADOWS_FLAG; + pt->t.chunkId |= EXTRA_SHADOWS_FLAG; } - ptt->objectId &= ~EXTRA_OBJECT_TYPE_MASK; - ptt->objectId |= + pt->t.objectId &= ~EXTRA_OBJECT_TYPE_MASK; + pt->t.objectId |= (t->extraObjectType << EXTRA_OBJECT_TYPE_SHIFT); if (t->extraObjectType == YAFFS_OBJECT_TYPE_HARDLINK) { - ptt->byteCount = t->extraEquivalentObjectId; + pt->t.byteCount = t->extraEquivalentObjectId; } else if (t->extraObjectType == YAFFS_OBJECT_TYPE_FILE) { - ptt->byteCount = t->extraFileLength; + pt->t.byteCount = t->extraFileLength; } else { - ptt->byteCount = 0; + pt->t.byteCount = 0; } } - yaffs_DumpPackedTags2TagsPart(ptt); + yaffs_DumpPackedTags2(pt); yaffs_DumpTags2(t); -} - - -void yaffs_PackTags2(yaffs_PackedTags2 * pt, const yaffs_ExtendedTags * t) -{ - yaffs_PackTags2TagsPart(&pt->t,t); #ifndef YAFFS_IGNORE_TAGS_ECC { @@ -111,60 +101,13 @@ void yaffs_PackTags2(yaffs_PackedTags2 * pt, const yaffs_ExtendedTags * t) #endif } - -void yaffs_UnpackTags2TagsPart(yaffs_ExtendedTags * t, yaffs_PackedTags2TagsPart * ptt) +void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt) { memset(t, 0, sizeof(yaffs_ExtendedTags)); yaffs_InitialiseTags(t); - if (ptt->sequenceNumber != 0xFFFFFFFF) { - t->blockBad = 0; - t->chunkUsed = 1; - t->objectId = ptt->objectId; - t->chunkId = ptt->chunkId; - t->byteCount = ptt->byteCount; - t->chunkDeleted = 0; - t->serialNumber = 0; - t->sequenceNumber = ptt->sequenceNumber; - - /* Do extra header info stuff */ - - if (ptt->chunkId & EXTRA_HEADER_INFO_FLAG) { - t->chunkId = 0; - t->byteCount = 0; - - t->extraHeaderInfoAvailable = 1; - t->extraParentObjectId = - ptt->chunkId & (~(ALL_EXTRA_FLAGS)); - t->extraIsShrinkHeader = - (ptt->chunkId & EXTRA_SHRINK_FLAG) ? 1 : 0; - t->extraShadows = - (ptt->chunkId & EXTRA_SHADOWS_FLAG) ? 1 : 0; - t->extraObjectType = - ptt->objectId >> EXTRA_OBJECT_TYPE_SHIFT; - t->objectId &= ~EXTRA_OBJECT_TYPE_MASK; - - if (t->extraObjectType == YAFFS_OBJECT_TYPE_HARDLINK) { - t->extraEquivalentObjectId = ptt->byteCount; - } else { - t->extraFileLength = ptt->byteCount; - } - } - } - - yaffs_DumpPackedTags2TagsPart(ptt); - yaffs_DumpTags2(t); - -} - - -void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt) -{ - - yaffs_UnpackTags2TagsPart(t,&pt->t); - if (pt->t.sequenceNumber != 0xFFFFFFFF) { /* Page is in use */ #ifdef YAFFS_IGNORE_TAGS_ECC @@ -199,10 +142,41 @@ void yaffs_UnpackTags2(yaffs_ExtendedTags * t, yaffs_PackedTags2 * pt) } } #endif + t->blockBad = 0; + t->chunkUsed = 1; + t->objectId = pt->t.objectId; + t->chunkId = pt->t.chunkId; + t->byteCount = pt->t.byteCount; + t->chunkDeleted = 0; + t->serialNumber = 0; + t->sequenceNumber = pt->t.sequenceNumber; + + /* Do extra header info stuff */ + + if (pt->t.chunkId & EXTRA_HEADER_INFO_FLAG) { + t->chunkId = 0; + t->byteCount = 0; + + t->extraHeaderInfoAvailable = 1; + t->extraParentObjectId = + pt->t.chunkId & (~(ALL_EXTRA_FLAGS)); + t->extraIsShrinkHeader = + (pt->t.chunkId & EXTRA_SHRINK_FLAG) ? 1 : 0; + t->extraShadows = + (pt->t.chunkId & EXTRA_SHADOWS_FLAG) ? 1 : 0; + t->extraObjectType = + pt->t.objectId >> EXTRA_OBJECT_TYPE_SHIFT; + t->objectId &= ~EXTRA_OBJECT_TYPE_MASK; + + if (t->extraObjectType == YAFFS_OBJECT_TYPE_HARDLINK) { + t->extraEquivalentObjectId = pt->t.byteCount; + } else { + t->extraFileLength = pt->t.byteCount; + } + } } yaffs_DumpPackedTags2(pt); yaffs_DumpTags2(t); } - -- cgit v1.2.3