Search code examples
androidlinuxfilesystemsext3journaling

Android filesystem journaling


ext3 has 3 journaling options: journal, ordered, and writeback. According to the wikipedia entry, these range from least risky to most risky for crash recovery. For some reason, Android's version of Linux only supports the latter two options, and defaults to writeback. (I'm running Froyo)

Is there a way to add support for journal mode? I'd like to do this on the /data partition, which is ext3, and also where most of the file writes happen. My device doesn't have a battery, so I need to make sure it's crash proof when someone disconnects power.

In case anyone is interested, the Linux options are defined in kernel/fs/ext3/Kconfig. The specific option is EXT3_DEFAULTS_TO_ORDERED.


Solution

  • The solution was to add the following to kernel/fs/ext3/Kconfig, and rebuild the kernel with EXT3_DEFAULTS_TO_JOURNAL.

    choice
        prompt "EXT3 default journal mode"
        default EXT3_DEFAULTS_TO_ORDERED
        help
          The journal mode options for ext3 have different tradeoffs
          between when data is guaranteed to be on disk and
          performance.  The use of "data=writeback" can cause
          unwritten data to appear in files after an system crash or
          power failure, which can be a security issue.  However,
          "data=ordered" mode can also result in major performance
          problems, including seconds-long delays before an fsync()
          call returns.  "data=journal" is the safest option but possibly
          the the great perfromance burden.  For details, see:
    
          http://ext4.wiki.kernel.org/index.php/Ext3_data_mode_tradeoffs
    
          If you have been historically happy with ext3's performance,
          data=ordered mode will be a safe choice.
    
    
    config EXT3_DEFAULTS_TO_JOURNAL
        bool "Default to 'data=journal' in ext3"
        depends on EXT3_FS
        help
          Both data and metadata are journaled.  Should be safe
          against crashes, power failure, etc.
    
    
    config EXT3_DEFAULTS_TO_ORDERED
        bool "Default to 'data=ordered' in ext3"
        depends on EXT3_FS
        help
          Only metadata are journaled. Data is written first and then
          metadata is update.  Mostly safe against crashes, power
          failures, etc., except if the anomally occurred while a file 
          is being overwritten.  Most of the time files are appended and
          not over written.
    
    config EXT3_DEFAULTS_TO_WRITEBACK
        bool "Default to 'data=writeback' in ext3"
        depends on EXT3_FS
        help
          Ext2 with a fast ckfs.  Not always safe against crashes, 
          power failure, etc., but has the best preformance
    
    endchoice