Skip to content
  1. Sep 19, 2009
  2. Sep 17, 2009
  3. Sep 15, 2009
  4. Sep 12, 2009
    • Theodore Ts'o's avatar
      ext4: Fix initalization of s_flex_groups · 7ad9bb65
      Theodore Ts'o authored
      
      
      The s_flex_groups array should have been initialized using atomic_add
      to sum up the free counts from the block groups that make up a
      flex_bg.  By using atomic_set, the value of the s_flex_groups array
      was set to the values of the last block group in the flex_bg.  
      
      The impact of this bug is that the block and inode allocation
      algorithms might not pick the best flex_bg for new allocation.
      
      Thanks to Damien Guibouret for pointing out this problem!
      
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      7ad9bb65
  5. Sep 11, 2009
    • Andreas Schlick's avatar
      ext4: Always set dx_node's fake_dirent explicitly. · 1f7bebb9
      Andreas Schlick authored
      
      
      When ext4_dx_add_entry() has to split an index node, it has to ensure that
      name_len of dx_node's fake_dirent is also zero, because otherwise e2fsck
      won't recognise it as an intermediate htree node and consider the htree to
      be corrupted.
      
      Signed-off-by: default avatarAndreas Schlick <schlick@lavabit.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      1f7bebb9
    • Theodore Ts'o's avatar
      ext4: Fix async commit mode to be safe by using a barrier · 0e3d2a63
      Theodore Ts'o authored
      
      
      Previously the journal_async_commit mount option was equivalent to
      using barrier=0 (and just as unsafe).  This patch fixes it so that we
      eliminate the barrier before the commit block (by not using ordered
      mode), and explicitly issuing an empty barrier bio after writing the
      commit block.  Because of the journal checksum, it is safe to do this;
      if the journal blocks are not all written before a power failure, the
      checksum in the commit block will prevent the last transaction from
      being replayed.
      
      Using the fs_mark benchmark, using journal_async_commit shows a 50%
      improvement:
      
      FSUse%        Count         Size    Files/sec     App Overhead
           8         1000        10240         30.5            28242
      
      vs.
      
      FSUse%        Count         Size    Files/sec     App Overhead
           8         1000        10240         45.8            28620
      
      
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      0e3d2a63
    • Theodore Ts'o's avatar
      ext4: Don't update superblock write time when filesystem is read-only · 71290b36
      Theodore Ts'o authored
      
      
      This avoids updating the superblock write time when we are mounting
      the root file system read/only but we need to replay the journal; at
      that point, for people who are east of GMT and who make their clock
      tick in localtime for Windows bug-for-bug compatibility, and this will
      cause e2fsck to complain and force a full file system check.
      
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      71290b36
  6. Sep 10, 2009
  7. Sep 13, 2009
  8. Sep 10, 2009
    • Theodore Ts'o's avatar
      ext4: Use bforget() in no journal mode for ext4_journal_{forget,revoke}() · c7acb4c1
      Theodore Ts'o authored
      
      
      When ext4 is using a journal, a metadata block which is deallocated
      must be passed into the journal layer so it can be dropped from the
      current transaction and/or revoked.  This is done by calling the
      functions ext4_journal_forget() and ext4_journal_revoke(), which call
      jbd2_journal_forget(), and jbd2_journal_revoke(), respectively.
      
      Since the jbd2_journal_forget() and jbd2_journal_revoke() call
      bforget(), if ext4 is not using a journal, ext4_journal_forget() and
      ext4_journal_revoke() must call bforget() to avoid a dirty metadata
      block overwriting a block after it has been reallocated and reused for
      another inode's data block.
      
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      c7acb4c1
  9. Sep 08, 2009
  10. Sep 10, 2009
  11. Sep 06, 2009
  12. Sep 17, 2009
  13. Sep 06, 2009
  14. Sep 17, 2009
    • Theodore Ts'o's avatar
      ext4: fix tracepoint format string warnings · a3710fd1
      Theodore Ts'o authored
      
      
      Unlike on some other architectures ino_t is an unsigned int on s390.
      So add an explicit cast to avoid lots of compile warnings:
      
      In file included from include/trace/ftrace.h:285,
                       from include/trace/define_trace.h:61,
                       from include/trace/events/ext4.h:711,
                       from fs/ext4/super.c:50:
      include/trace/events/ext4.h: In function 'ftrace_raw_output_ext4_free_inode':
      include/trace/events/ext4.h:12: warning: format '%lu' expects type 'long unsigned int', but argument 4 has type 'ino_t'
      
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      a3710fd1
  15. Sep 05, 2009
  16. Sep 01, 2009
  17. Sep 17, 2009
  18. Aug 30, 2009
  19. Aug 29, 2009
  20. Aug 28, 2009
    • Theodore Ts'o's avatar
      ext4: fix extent sanity checking code with AGGRESSIVE_TEST · 55ad63bf
      Theodore Ts'o authored
      
      
      The extents sanity-checking code depends on the ext4_ext_space_*()
      functions returning the maximum alloable size for eh_max; however,
      when the debugging #ifdef AGGRESSIVE_TEST is enabled to test the
      extent tree handling code, this prevents a normally created ext4
      filesystem from being mounted with the errors:
      
      Aug 26 15:43:50 bsd086 kernel: [   96.070277] EXT4-fs error (device sda8): ext4_ext_check_inode: bad header/extent in inode #8: too large eh_max - magic f30a, entries 1, max 4(3), depth 0(0)
      Aug 26 15:43:50 bsd086 kernel: [   96.070526] EXT4-fs (sda8): no journal found
      
      Bug reported by Akira Fujita.
      
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      55ad63bf
  21. Aug 26, 2009
    • Eric Sandeen's avatar
      ext4: use ext4_grpblk_t more extensively · a36b4498
      Eric Sandeen authored
      
      
      unsigned  short is potentially too small to track blocks within
      a group; today it is safe due to restrictions in e2fsprogs but
      we have _lo / _hi bits for group blocks with the intent to go
      up to 32 bits, so clean this up now.
      
      There are many more places where we use unsigned/int/unsigned int
      to contain a group block but this should at least fix all the
      short types.
      
      I added a few comments to the struct ext4_group_info definition
      as well.
      
      Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      a36b4498
    • Eric Sandeen's avatar
      ext4: use variables not types in sizeofs() for allocations · 1927805e
      Eric Sandeen authored
      
      
      Precursor to changing some types; to keep things in sync, it 
      seems better to allocate/memset based on the size of the 
      variables we are using rather than on some disconnected 
      basic type like "unsigned short"
      
      Signed-off-by: default avatarEric Sandeen <sandeen@redhat.com>
      1927805e
    • Aneesh Kumar K.V's avatar
      ext4: Add missing unlock_new_inode() call in extent migration code · a8526e84
      Aneesh Kumar K.V authored
      
      
      We need to unlock the new inode before iput.  This patch fixes the
      following warning when calling chattr +e to migrate a file to use
      extents.  It also fixes problems in when e4defrag attempts to
      defragment an inode.
      
      [  470.400044] ------------[ cut here ]------------
      [  470.400065] WARNING: at fs/inode.c:1210 generic_delete_inode+0x65/0x16a()
      [  470.400072] Hardware name: N/A
      .....
      ...
      [  470.400353] Pid: 4451, comm: chattr Not tainted 2.6.31-rc7-red-debug #4
      [  470.400359] Call Trace:
      [  470.400372]  [<ffffffff81037771>] warn_slowpath_common+0x77/0x8f
      [  470.400385]  [<ffffffff81037798>] warn_slowpath_null+0xf/0x11
      [  470.400395]  [<ffffffff810b7f28>] generic_delete_inode+0x65/0x16a
      [  470.400405]  [<ffffffff810b8044>] generic_drop_inode+0x17/0x1bd
      [  470.400413]  [<ffffffff810b7083>] iput+0x61/0x65
      [  470.400455]  [<ffffffffa003b229>] ext4_ext_migrate+0x5eb/0x66a [ext4]
      [  470.400492]  [<ffffffffa002b1f8>] ext4_ioctl+0x340/0x756 [ext4]
      [  470.400507]  [<ffffffff810b1a91>] vfs_ioctl+0x1d/0x82
      [  470.400517]  [<ffffffff810b1ff0>] do_vfs_ioctl+0x483/0x4c9
      [  470.400527]  [<ffffffff81059c30>] ? trace_hardirqs_on+0xd/0xf
      [  470.400537]  [<ffffffff810b2087>] sys_ioctl+0x51/0x74
      [  470.400549]  [<ffffffff8100ba6b>] system_call_fastpath+0x16/0x1b
      [  470.400557] ---[ end trace ab85723542352dac ]---
      
      Signed-off-by: default avatarAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: default avatar"Theodore Ts'o" <tytso@mit.edu>
      a8526e84