From f40b8435a109889e57bc37743ac7eb6badf1dd95 Mon Sep 17 00:00:00 2001 From: charles Date: Tue, 17 Sep 2002 22:36:08 +0000 Subject: [PATCH] *** empty log message *** --- devextras.h | 2 + snMakefile | 16 +++---- yaffs_fs.c | 61 +++++++++++++++++++++++--- yaffs_guts.c | 74 +++++++++++++++++++++++++++----- yaffs_guts.h | 7 ++- yaffs_mtdif.h | 3 ++ yaffs_nandemul.h | 3 ++ yaffsdev | Bin 123432 -> 126051 bytes yaffsdev.c | 108 ++++++++++++++++++++++++++++++++++++++++++++++- yaffsdev.proj | Bin 53248 -> 53248 bytes yaffsinterface.h | 2 + yportenv.h | 3 ++ 12 files changed, 250 insertions(+), 29 deletions(-) diff --git a/devextras.h b/devextras.h index bd749b6..9615362 100644 --- a/devextras.h +++ b/devextras.h @@ -11,6 +11,8 @@ * it under the terms of the GNU Lesser General Public License version 2.1 as * published by the Free Software Foundation. * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + * * This file is just holds extra declarations used during development. * Most of these are from kernel includes placed here so we can use them in * applications. diff --git a/snMakefile b/snMakefile index 6006c69..5f52d0f 100644 --- a/snMakefile +++ b/snMakefile @@ -1,6 +1,6 @@ ######################################################### # Makefile auto generated by Cygnus Source Navigator. -# Target: yaffsdev_disk_dump_disk Date: Sep 17 2002 Time: 06:47:40 AM +# Target: yaffsdev_disk Date: Sep 18 2002 Time: 10:19:04 AM # @@ -18,7 +18,7 @@ CPP = g++ YACC_FLAGS = LEX_FLAGS = JAVA_FLAGS = -CC_FLAGS = -g -Wall -DYAFFS_DUMP -DYAFFS_START=1281 -DYAFFS_END=32767 -DCONFIG_YAFFS_SHORT_OP_CACHE -DYAFFS_PARANOID -DYAFFS_FILEEM +CC_FLAGS = -g -Wall -DCONFIG_YAFFS_SHORT_OP_CACHE -DYAFFS_PARANOID -DYAFFS_FILEEM CPP_FLAGS = YACC_INCLUDES = LEX_INCLUDES = @@ -30,16 +30,16 @@ LEX_DEFINES = JAVA_DEFINES = CC_DEFINES = CPP_DEFINES = -yaffsdev_disk_dump_disk_LIBS = +yaffsdev_disk_LIBS = LINKER = gcc LINKER_FLAGS = LINKER_ENTRY = -yaffsdev_disk_dump_disk_OBJECTS = nand_ecc.o yaffs_fileem.o yaffs_guts.o yaffsdev.o +yaffsdev_disk_OBJECTS = nand_ecc.o yaffs_fileem.o yaffs_guts.o yaffsdev.o -all: yaffsdumpdisk +all: yaffsdev -yaffsdumpdisk: $(yaffsdev_disk_dump_disk_OBJECTS) - $(LINKER) -o yaffsdumpdisk $(LINKER_ENTRY) $(LINKER_FLAGS) $(yaffsdev_disk_dump_disk_OBJECTS) $(yaffsdev_disk_dump_disk_LIBS) +yaffsdev: $(yaffsdev_disk_OBJECTS) + $(LINKER) -o yaffsdev $(LINKER_ENTRY) $(LINKER_FLAGS) $(yaffsdev_disk_OBJECTS) $(yaffsdev_disk_LIBS) .y.c: $(YACC) $< $(YACC_FLAGS) $(YACC_DEFINES) $(YACC_INCLUDES) @@ -76,5 +76,5 @@ yaffsdev.o: /usr/include/stdio.h /usr/include/stdlib.h /usr/include/string.h /op clean: rm -f *.o - rm -f yaffsdumpdisk + rm -f yaffsdev diff --git a/yaffs_fs.c b/yaffs_fs.c index 29c8408..8ef7da7 100644 --- a/yaffs_fs.c +++ b/yaffs_fs.c @@ -1012,6 +1012,12 @@ static void yaffs_read_inode (struct inode *inode) } + +static yaffs_Device *yaffs_dev; +static yaffs_Device *yaffsram_dev; + + + static void yaffs_put_super(struct super_block *sb) { yaffs_Device *dev = yaffs_SuperToDevice(sb); @@ -1023,7 +1029,10 @@ static void yaffs_put_super(struct super_block *sb) } yaffs_Deinitialise(dev); yaffs_GrossUnlock(dev); - + + if(dev == yaffs_dev) yaffs_dev = NULL; + if(dev == yaffsram_dev) yaffsram_dev = NULL; + kfree(dev); } @@ -1045,6 +1054,7 @@ static void yaffs_MTDPutSuper(struct super_block *sb) #endif + static struct super_block *yaffs_internal_read_super(int useRam, struct super_block * sb, void * data, int silent) { int nBlocks; @@ -1106,6 +1116,8 @@ static struct super_block *yaffs_internal_read_super(int useRam, struct super_bl dev->readChunkFromNAND = nandemul_ReadChunkFromNAND; dev->eraseBlockInNAND = nandemul_EraseBlockInNAND; dev->initialiseNAND = nandemul_InitialiseNAND; + + yaffsram_dev = dev; #endif @@ -1185,8 +1197,11 @@ static struct super_block *yaffs_internal_read_super(int useRam, struct super_bl dev->readChunkFromNAND = nandmtd_ReadChunkFromNAND; dev->eraseBlockInNAND = nandmtd_EraseBlockInNAND; dev->initialiseNAND = nandmtd_InitialiseNAND; - + dev->putSuperFunc = yaffs_MTDPutSuper; + + yaffs_dev = dev; + #endif } @@ -1246,6 +1261,33 @@ static DECLARE_FSTYPE(yaffs_ram_fs_type, "yaffsram", yaffs_ram_read_super, FS_SI static struct proc_dir_entry *my_proc_entry; static struct proc_dir_entry *my_proc_ram_write_entry; +static char * yaffs_dump_dev(char *buf,yaffs_Device *dev,char *name) +{ + buf +=sprintf(buf,"\nDevice %s\n",name); + buf +=sprintf(buf,"startBlock......... %d\n",dev->startBlock); + buf +=sprintf(buf,"endBlock........... %d\n",dev->endBlock); + buf +=sprintf(buf,"chunkGroupBits..... %d\n",dev->chunkGroupBits); + buf +=sprintf(buf,"chunkGroupSize..... %d\n",dev->chunkGroupSize); + buf +=sprintf(buf,"nErasedBlocks...... %d\n",dev->nErasedBlocks); + buf +=sprintf(buf,"nTnodesCreated..... %d\n",dev->nTnodesCreated); + buf +=sprintf(buf,"nFreeTnodes........ %d\n",dev->nFreeTnodes); + buf +=sprintf(buf,"nObjectsCreated.... %d\n",dev->nObjectsCreated); + buf +=sprintf(buf,"nFreeObjects....... %d\n",dev->nFreeObjects); + buf +=sprintf(buf,"nFreeChunks........ %d\n",dev->nFreeChunks); + buf +=sprintf(buf,"nPageWrites........ %d\n",dev->nPageWrites); + buf +=sprintf(buf,"nPageReads......... %d\n",dev->nPageReads); + buf +=sprintf(buf,"nBlockErasures..... %d\n",dev->nBlockErasures); + buf +=sprintf(buf,"nGCCopies.......... %d\n",dev->nGCCopies); + buf +=sprintf(buf,"garbageCollections. %d\n",dev->garbageCollections); + buf +=sprintf(buf,"nRetriedWrites..... %d\n",dev->nRetriedWrites); + buf +=sprintf(buf,"nRetireBlocks...... %d\n",dev->nRetiredBlocks); + buf +=sprintf(buf,"cacheHits.......... %d\n",dev->cacheHits); + buf +=sprintf(buf,"nDeletedFiles...... %d\n",dev->nDeletedFiles); + buf +=sprintf(buf,"nUnlinkedFiles..... %d\n",dev->nUnlinkedFiles); + buf +=sprintf(buf,"nBackgroudDeletions %d\n",dev->nBackgroundDeletions); + + return buf; +} static int yaffs_proc_read( char *page, @@ -1257,15 +1299,18 @@ static int yaffs_proc_read( ) { - static char my_buffer[1000]; + char my_buffer[2000]; + char *buf; + buf = my_buffer; if (offset > 0) return 0; /* Fill the buffer and get its length */ - sprintf( my_buffer, - "YAFFS built:"__DATE__ " "__TIME__"\n" - - ); + buf +=sprintf(buf,"YAFFS built:"__DATE__ " "__TIME__"\n"); + + if(yaffs_dev) buf = yaffs_dump_dev(buf,yaffs_dev,"yaffs"); + if(yaffsram_dev) buf = yaffs_dump_dev(buf,yaffsram_dev,"yaffsram"); + strcpy(page,my_buffer); return strlen(my_buffer); @@ -1290,6 +1335,8 @@ static int __init init_yaffs_fs(void) { int error = 0; + yaffs_dev = yaffsram_dev = NULL; + printk(KERN_DEBUG "yaffs " __DATE__ " " __TIME__ " Initialisation\n"); #ifdef CONFIG_YAFFS_USE_GENERIC_RW printk(KERN_DEBUG "yaffs is using generic read/write (caching)\n"); diff --git a/yaffs_guts.c b/yaffs_guts.c index b042a9a..eaa18fd 100644 --- a/yaffs_guts.c +++ b/yaffs_guts.c @@ -72,7 +72,7 @@ static int yaffs_UpdateObjectHeader(yaffs_Object *in,const char *name, int force static void yaffs_DeleteChunk(yaffs_Device *dev,int chunkId); static void yaffs_RemoveObjectFromDirectory(yaffs_Object *obj); static int yaffs_CheckStructures(void); -static void yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, int chunkOffset,int *limit); +static int yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, int chunkOffset,int *limit); static int yaffs_DoGenericObjectDeletion(yaffs_Object *in); static yaffs_BlockInfo *yaffs_GetBlockInfo(yaffs_Device *dev,int blockNo); @@ -833,8 +833,9 @@ static yaffs_Tnode *yaffs_AddOrFindLevel0Tnode(yaffs_Device *dev, yaffs_FileStru // DeleteWorker scans backwards through the tnode tree and deletes all the // chunks and tnodes in the file +// Returns 1 if the tree was deleted. Returns 0 if it stopped early due to hitting the limit and the delete is incomplete. -static void yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, int chunkOffset,int *limit) +static int yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, int chunkOffset,int *limit) { int i; int chunkInInode; @@ -842,6 +843,7 @@ static void yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, i yaffs_Tags tags; int found; int chunkDeleted; + int allDone = 1; if(tn) @@ -849,17 +851,28 @@ static void yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, i if(level > 0) { - for(i = YAFFS_NTNODES_INTERNAL -1; i >= 0 && (!limit || *limit > 0); i--) + for(i = YAFFS_NTNODES_INTERNAL -1; allDone && i >= 0; i--) { if(tn->internal[i]) { - yaffs_DeleteWorker(in,tn->internal[i],level - 1, + if(limit && (*limit) < 0) + { + allDone = 0; + } + else + { + allDone = yaffs_DeleteWorker(in,tn->internal[i],level - 1, (chunkOffset << YAFFS_TNODES_INTERNAL_BITS ) + i ,limit); - yaffs_FreeTnode(in->myDev,tn->internal[i]); - tn->internal[i] = NULL; + } + if(allDone) + { + yaffs_FreeTnode(in->myDev,tn->internal[i]); + tn->internal[i] = NULL; + } } } + return (allDone) ? 1 : 0; } else if(level == 0) { @@ -904,11 +917,15 @@ static void yaffs_DeleteWorker(yaffs_Object *in, yaffs_Tnode *tn, __u32 level, i } } + return 1; + } } + return 1; + } @@ -1929,14 +1946,19 @@ static void yaffs_DoUnlinkedFileDeletion(yaffs_Device *dev) { yaffs_Object *obj = dev->unlinkedDeletion; int limit; + int delresult; limit = 50; // Max number of chunks to delete in a file. NB this can be exceeded, but not by much. - yaffs_DeleteWorker(obj, obj->variant.fileVariant.top, obj->variant.fileVariant.topLevel, 0,&limit); + delresult = yaffs_DeleteWorker(obj, obj->variant.fileVariant.top, obj->variant.fileVariant.topLevel, 0,&limit); + if(obj->nDataChunks == 0) { // Done all the deleting of data chunks. // Now dump the header and clean up - yaffs_DoGenericObjectDeletion(dev->unlinkedDeletion); + yaffs_FreeTnode(dev,obj->variant.fileVariant.top); + yaffs_DoGenericObjectDeletion(obj); dev->nDeletedFiles--; + dev->nUnlinkedFiles--; + dev->nBackgroundDeletions++; dev->unlinkedDeletion = NULL; } } @@ -3071,11 +3093,35 @@ static int yaffs_UnlinkFile(yaffs_Object *in) return yaffs_DoGenericObjectDeletion(in); #else int retVal; + int immediateDeletion=0; retVal = yaffs_ChangeObjectName(in, in->myDev->unlinkedDir,NULL); if(retVal == YAFFS_OK) { - in->unlinked = 1; - in->renameAllowed = 0; + //in->unlinked = 1; + //in->myDev->nUnlinkedFiles++; + //in->renameAllowed = 0; +#ifdef __KERNEL__ + if(in->myInode) + { + immediateDeletion = 1; + + } +#endif +#if WIN32 + if(in->inUse <= 0) + { + immediateDeletion = 1; + + } +#endif + + if(immediateDeletion) + { + T((TSTR("yaffs: immediate deletion of file %d" TENDSTR),in->objectId)); + in->deleted=1; + in->myDev->nDeletedFiles++; + } + } return retVal; @@ -3090,9 +3136,12 @@ int yaffs_DeleteFile(yaffs_Object *in) { retVal = yaffs_UnlinkFile(in); } - if(retVal == YAFFS_OK && in->unlinked) + if(retVal == YAFFS_OK && + in->unlinked && + !in->deleted) { in->deleted = 1; + in->myDev->nDeletedFiles++; } return in->deleted ? YAFFS_OK : YAFFS_FAIL; } @@ -3639,6 +3688,7 @@ static void yaffs_AddObjectToDirectory(yaffs_Object *directory, yaffs_Object *ob if(directory == obj->myDev->unlinkedDir) { obj->unlinked = 1; + obj->myDev->nUnlinkedFiles++; obj->renameAllowed = 0; } } @@ -3986,6 +4036,8 @@ int yaffs_GutsInitialise(yaffs_Device *dev) dev->doingBufferedBlockRewrite = 0; dev->blockSelectedForGC = -1; dev->nDeletedFiles = 0; + dev->nBackgroundDeletions=0; + dev->nUnlinkedFiles = 0; yaffs_InitialiseBlocks(dev,nBlocks); diff --git a/yaffs_guts.h b/yaffs_guts.h index 8553542..b42c7cb 100644 --- a/yaffs_guts.h +++ b/yaffs_guts.h @@ -11,6 +11,8 @@ * it under the terms of the GNU Lesser General Public License version 2.1 as * published by the Free Software Foundation. * + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. */ #ifndef __YAFFS_GUTS_H__ @@ -442,8 +444,9 @@ struct yaffs_DeviceStruct // Stuff for background deletion and unlinked files. yaffs_Object *unlinkedDir; // Directory where unlinked and deleted files live. yaffs_Object *unlinkedDeletion; // Current file being background deleted. - int nDeletedFiles; // Count of files awaiting deletion; - + int nDeletedFiles; // Count of files awaiting deletion; + int nUnlinkedFiles; // Count of unlinked files. + int nBackgroundDeletions; // Count of background deletions. }; diff --git a/yaffs_mtdif.h b/yaffs_mtdif.h index 42b65e2..dd908ec 100644 --- a/yaffs_mtdif.h +++ b/yaffs_mtdif.h @@ -11,6 +11,9 @@ * it under the terms of the GNU Lesser General Public License version 2.1 as * published by the Free Software Foundation. * + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + * */ #ifndef __YAFFS_MTDIF_H__ diff --git a/yaffs_nandemul.h b/yaffs_nandemul.h index 880d350..bd51465 100644 --- a/yaffs_nandemul.h +++ b/yaffs_nandemul.h @@ -10,6 +10,9 @@ * it under the terms of the GNU Lesser General Public License version 2.1 as * published by the Free Software Foundation. * + * + * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL. + * * yaffs_nandemul.h: Interface to emulated NAND functions * */ diff --git a/yaffsdev b/yaffsdev index 3a7e43e15266f58ed026ccec3094a6ffda448bf8..e1033293f8ed5dad5cea6fa8c7176c616a51b729 100755 GIT binary patch delta 42148 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 delta 39410 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�KQQv1 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 rU^C?LPZ{F&0=w)GDV zNmD`a2Q4jkC4xpHNOct+;z}j!Y#MOsN*B5l-IZ)i(v1sOE-oM3!#Uh@S4(8IMAnaV z{NAdBejIl;gu2iWxbH+=!0EgPr=w1+&hG9CP6a1rMZsTZ-20Xjx}J_-wrq`2-$Xo~ zo$^l@R;D%7SD>n2#Y1OztbMZ*UdTKDFGl`5hTl#f7Ww1zHNidV>UUMe_u@NoQ(O~^ zqAd!d%~KaUM68B~@$U69UJHBp=~y?MeBJq^^Cx_RudoF*_yixI0?%Os9>5CZ!Gd|X z3Sl?~M?r#d7=!`n1_BMTO@u**W1ejDjT;&Pjp+##5+MxD_2HM~9v;&o0tTZltg@jt zb<=}%ya$VV5314TB|CdErfaAi7#>O`42#ON{X2~F9Pi)-9i&>|#zGk`4a*yQ< z%W;<7EIV1&vdm`bWoc!pVyR%sVo7ERV)19OWHDz^XHjJlVG&|sVfoMeo%t&>qXYv( zGV|BX6BAOHCo?A6Otwi9ntUf&a&tmTIOAr;^cdF33Yvm!p?Nu(dD)W}Xex3-m~NRl zlLNCACnsoea5)#HCYGeSC1$5i*2z&r=EmkIfV5AZr{W7UVsEPQD(xT+lyu>nH0|iSn)5-I6v{kB$D|3^I6by}x6fDdX zj7