[Epic 4G General] plapczyn:
Background:

Ok, so I write flash drivers for a living, so I would consider myself somewhat knowledgeable regarding flash technology.

The flash is erased in 128k blocks and written in smaller pages. Data, once written, cannot be changed until you erase, so the FS will write to another page and invalidate the current page. The 100k program/erase cycle count is on a per block basis. It is not being erased every time you write a file, so calm down, your phone isn't going to die. The 10 year data retention time that people are quoting has nothing to do with this. It is how long once programmed...and not changed...data is guaranteed to be valid for.

The only thing that you need to remotely consider...and needs to actually be verified, is whether RFS actually writes to the file system more or less than EXT4, and how much more. The data wear leveling is done on a lower layer than the file system and Dameon87 already confirmed both RFS and EXT4 are using the same sector translation layer.

Sources:

XDA Post linking RFS documentation: http://xdaforums.com/showthread.php?t=801223

Reliability: http://www.samsung.com/global/busin...s/fusionmemory/Products_FAQs_Reliability.html

Datasheet: http://www.datasheetcatalog.org/datasheets2/12/1248447_1.pdf

Attached are app notes on RFS.

Regarding RFS:

Regarding EXT4:

EXT4 supposedly buffers more data before writing, thus in theory should require less program/erase cycles. This could in theory explain why people claim better battery life using EXT4. To program/erase flash, you must temporarily raise the flash voltage...this is why flashing ROMs and using ODIN drain your battery like crazy...and why you should always flash with a battery near 100%. This point is of course mute if there is no wear protection. If EXT4 is using the Samsung STL driver, the wear leveling should be implemented exactly the same as in RFS.

Regarding Bad Blocks:

It is typical to have some bad blocks in large flash arrays direct from the factory. It is normal and part of the manufacturing/validation process.

Check your bad datablocks by doing this...

adb shell
su
cat /proc/L*/bmlinfo

You will probably have a few. I have 3. The block size is 128KB. 512MB/128KB = 4096 blocks (thats why they are using the bottom blocks in the 4000 range for the 2% coverage. 2% of 4096 is apx 81 bad blocks. But don't worry. You would have to get about 3 bad blocks per month for 2 years straight before a failure.

Conclusion:

Now of course the best way to extend the life of the flash is to use the SD card for partitions that get continually written to like /data...and don't flash new roms 100 times a day for 2 years. But you really don't have to worry about the dreaded flash fairy coming and breaking your phone after a week. Since FAT writes to the fixed location file allocation table over and over, Samsung already has the wear leveling in place. Moreover, RFS adds journaling and posix commands to FAT and was mounted with atime. Most likely, it was doing MORE file IO than EXT4. Below is a link to some info on EXT4 disk writes. Clearly using noatime and journaling off is the best option for flash with regard to longevity, however, the difference isn't as big as you would think.

Further Reading:

The Truth About RFS (warning lacks citation): http://xdaforums.com/showthread.php?t=799931

EXT4 Performance testing: http://thunk.org/tytso/blog/2009/03/01/ssds-journaling-and-noatimerelatime/