[Fwd: Re: a problem about jffs2]
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% /SysdiskIs it jffs2 filesystem's bug?
Thanks!
Best Regards,
Richard
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
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 +0800Quoted 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% /SysdiskQuoted 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 anjffs2_raw_inode+ 4 bytes on flash.sizeof(jffs2_raw_inode)is 68 bytes.Thanks,
Forrest