This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Stress testing JFFS2


Today stress testing JFFS2 came up on the agenda, and I wrote a small
piece that demonstrates a problem with JFFS2 running out of space
when it shouldn't, leaving a corrupt JFFS2 image and continuously
allocating more ram.

The test consists of writing lots of files that overwrite existing
files. The total number of files is never >16.

/config is a JFFS2 fs. 6*0x10000bytes.

Should I expect this sort of thing to never fail and to
reach a plateau of memory usage?

20-30k ram seems excessive for 16 files.

    char *args="dummy";    
    for (int i=0; i<10000; i++)
    {
    	char name[5];
    	for (int j=0; j<(sizeof(name)-1); j++)
    	{
	    	name[j]=rand()%2+'a';
    	};
    	name[4]=0;
    	
		char nameBuffer[100];
		sprintf(nameBuffer, "/config/%s", name);

		int fd;
	    fd = open( nameBuffer, O_WRONLY|O_CREAT|O_TRUNC );
	    if (fd<0)
	    {
			diag_printf("Failed\r\n");
			break;
	    }
    
		int len=strlen(args);    
		ssize_t actual;
		actual=write(fd, args, len);
		if (actual<0)
		{
			diag_printf("Failed\r\n");
			break;
		}
		int err;
		err=close(fd);
		if (err<0)
		{
			diag_printf("Failed\r\n");
			break;
		}
		
		struct mallinfo info;
		info = mallinfo();
		
    	if ((i%100)==0)
    	{
	    	diag_printf("Created file %d  %d bytes ram free\r\n", i,
info.maxfree);
    	}
    }
    

Output:


Created file 0  153284 bytes ram free
Created file 100  149132 bytes ram free
Created file 200  146732 bytes ram free
Created file 300  144332 bytes ram free
Created file 400  141932 bytes ram free
Created file 500  139532 bytes ram free
Created file 600  137132 bytes ram free
Created file 700  134732 bytes ram free
Created file 800  132332 bytes ram free
Failed



-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]