Skip to contentSkip to conversation

[Fwd: Re: a problem about jffs2]

Fwd: Re: a problem about jffs2 Artem B. Bityutskiy 3 participants 3 messages Nov 10, 2005 – Nov 11, 2005 Memory technology devices (MTD)

lore
Share & tools
lore
#0 lore raw

Just forwarding to the appropriate mailing list.

Artem.

-------- Original Message --------
Subject: Re: a problem about jffs2
Date: Wed, 9 Nov 2005 20:02:02 -0800 (PST)
From: Linus Torvalds <[email protected]>
To: Thomas Gleixner <[email protected]>, David Woodhouse <[email protected]>, "Artem B. Bityutskiy" <[email protected]>, Todd Poynor <[email protected]>, Ferenc Havasi <[email protected]>
References: <[email protected]>

Just forwarding to people who are more appropriate.

Linus
--
YangLu YangLu <[email protected]>

Quoted 41 lines · YangLu YangLu

Dear Linus:

	I recently meet a problem about jffs2.

	There have three sectors in my mobilephone(OMAP730):
	/dev/mtdblock3           16384      3276     13108  20% /System
	/dev/mtdblock4            2048       388      1660  19% /Sysdisk
	/dev/mtdblock5            5120       388      4732   8% /Appdisk

	I built new file(ph_bk) in /Sysdisk dirctory. 	I write a test
program, as follows:
	1) open it.
	fd = fopen(argv[1], "r+");
	2) fseek with a random number, then write a number
	for (;;) {
		offset = rand();
		fseek(fd, offset % (1024*1024), SEEK_SET);
		fwrite(&offset,sizeof(int), 1, fd);
	}

	I want to limit the file with 1M size, but when the test program run
in background,
	this file maintain 1M size, but available space on /dev/mtdblock4
continue to reduce, as below:
	Filesystem           1k-blocks      Used Available Use% Mounted on
	/dev/mtdblock4            2048       512      1536  25% /Sysdisk
/dev/mtdblock4            2048       688      1360  34% /Sysdisk
	/dev/mtdblock4            2048       792      1256  39% /Sysdisk
	/dev/mtdblock4            2048       856      1192  42% /Sysdisk
	/dev/mtdblock4            2048      1212       836  59% /Sysdisk
	/dev/mtdblock4            2048      1516       532  74% /Sysdisk
	/dev/mtdblock4            2048      1920       128  94% /Sysdisk

Is it jffs2 filesystem's bug?

Thanks!

Best Regards,
Richard

#1 lore raw
Quoted 34 lines
Quoted 34 lines

Dear Linus:

	I recently meet a problem about jffs2.

	There have three sectors in my mobilephone(OMAP730):
	/dev/mtdblock3           16384      3276     13108  20% /System
	/dev/mtdblock4            2048       388      1660  19% /Sysdisk
	/dev/mtdblock5            5120       388      4732   8% /Appdisk

	I built new file(ph_bk) in /Sysdisk dirctory. 	I write a test
program, as follows:
	1) open it.
	fd = fopen(argv[1], "r+");
	2) fseek with a random number, then write a number
	for (;;) {
		offset = rand();
		fseek(fd, offset % (1024*1024), SEEK_SET);
		fwrite(&offset,sizeof(int), 1, fd);
	}

	I want to limit the file with 1M size, but when the test program run
in background,
	this file maintain 1M size, but available space on /dev/mtdblock4
continue to reduce, as below:
	Filesystem           1k-blocks      Used Available Use% Mounted on
	/dev/mtdblock4            2048       512      1536  25% /Sysdisk
/dev/mtdblock4            2048       688      1360  34% /Sysdisk
	/dev/mtdblock4            2048       792      1256  39% /Sysdisk
	/dev/mtdblock4            2048       856      1192  42% /Sysdisk
	/dev/mtdblock4            2048      1212       836  59% /Sysdisk
	/dev/mtdblock4            2048      1516       532  74% /Sysdisk
	/dev/mtdblock4            2048      1920       128  94% /Sysdisk
Quoted 2 lines
Quoted 2 lines

Is it jffs2 filesystem's bug?

I once did some testing like yours, and had the same result.

I would say that this is an intrinsic nature of JFFS2 instead of a JFFS2's bug.
Updating 4 bytes of a file for every write operation will cause flash space wasting since every write operation generate an jffs2_raw_inode + 4 bytes on flash. sizeof(jffs2_raw_inode) is 68 bytes.

Thanks,
Forrest

#2 lore raw

But in linux-2.4.18(Now in linux-2.6.12) with same flash(NOR),

I used the same test routine, available space on /dev/mtdblock4

would not continue to reduce.

Had GC's method been changed?

Thanks!

Regards,
Richard

Quoted 53 lines

From: "zhao, forrest" <[email protected]>
To: "Artem B. Bityutskiy" <[email protected]>
CC: [email protected], [email protected]
Subject: Re: [Fwd: Re: a problem about jffs2]
Date: Fri, 11 Nov 2005 11:32:27 +0800

Quoted 33 lines
Quoted 33 lines

Dear Linus:

	I recently meet a problem about jffs2.

	There have three sectors in my mobilephone(OMAP730):
	/dev/mtdblock3           16384      3276     13108  20% /System
	/dev/mtdblock4            2048       388      1660  19% /Sysdisk
	/dev/mtdblock5            5120       388      4732   8% /Appdisk

	I built new file(ph_bk) in /Sysdisk dirctory. 	I write a test
program, as follows:
	1) open it.
	fd = fopen(argv[1], "r+");
	2) fseek with a random number, then write a number
	for (;;) {
		offset = rand();
		fseek(fd, offset % (1024*1024), SEEK_SET);
		fwrite(&offset,sizeof(int), 1, fd);
	}

	I want to limit the file with 1M size, but when the test program run
in background,
	this file maintain 1M size, but available space on /dev/mtdblock4
continue to reduce, as below:
	Filesystem           1k-blocks      Used Available Use% Mounted on
	/dev/mtdblock4            2048       512      1536  25% /Sysdisk
/dev/mtdblock4            2048       688      1360  34% /Sysdisk
	/dev/mtdblock4            2048       792      1256  39% /Sysdisk
	/dev/mtdblock4            2048       856      1192  42% /Sysdisk
	/dev/mtdblock4            2048      1212       836  59% /Sysdisk
	/dev/mtdblock4            2048      1516       532  74% /Sysdisk
	/dev/mtdblock4            2048      1920       128  94% /Sysdisk
Quoted 2 lines
Quoted 2 lines

Is it jffs2 filesystem's bug?

I once did some testing like yours, and had the same result.

I would say that this is an intrinsic nature of JFFS2 instead of a JFFS2's bug.
Updating 4 bytes of a file for every write operation will cause flash space wasting since every write operation generate an jffs2_raw_inode + 4 bytes on flash. sizeof(jffs2_raw_inode) is 68 bytes.

Thanks,
Forrest