1. 30 4月, 2008 4 次提交
  2. 17 4月, 2008 9 次提交
  3. 29 4月, 2008 1 次提交
    • E
      ext4: reduce mballoc stack usage with noinline_for_stack · 4ddfef7b
      Eric Sandeen 提交于
      mballoc.c is a whole lot of static functions, which gcc seems to
      really like to inline.
      
      With the changes below, on x86, I can at least get from:
      
      432 ext4_mb_new_blocks
      240 ext4_mb_free_blocks
      208 ext4_mb_discard_group_preallocations
      188 ext4_mb_seq_groups_show
      164 ext4_mb_init_cache
      152 ext4_mb_release_inode_pa
      136 ext4_mb_seq_history_show
      ...
      
      to
      
      220 ext4_mb_free_blocks
      188 ext4_mb_seq_groups_show
      176 ext4_mb_regular_allocator
      164 ext4_mb_init_cache
      156 ext4_mb_new_blocks
      152 ext4_mb_release_inode_pa
      136 ext4_mb_seq_history_show
      124 ext4_mb_release_group_pa
      ...
      
      which still has some big functions in there, but not 432 bytes!
      Signed-off-by: NEric Sandeen <sandeen@redhat.com>
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      4ddfef7b
  4. 30 4月, 2008 2 次提交
  5. 29 4月, 2008 4 次提交
  6. 17 4月, 2008 1 次提交
  7. 29 4月, 2008 2 次提交
  8. 17 4月, 2008 1 次提交
  9. 30 4月, 2008 1 次提交
  10. 17 4月, 2008 1 次提交
    • H
      ext4: fdatasync should skip metadata writeout when overwriting · 53c550e9
      Hisashi Hifumi 提交于
      Currently fdatasync is identical to fsync in ext3.
      
      I think fdatasync should skip journal flush in data=ordered and
      data=writeback mode when it overwrites to already-instantiated blocks on
      HDD.  When I_DIRTY_DATASYNC flag is not set, fdatasync should skip journal
      writeout because this indicates only atime or/and mtime updates.
      
      Following patch is the same approach of ext2's fsync code(ext2_sync_file).
      
      I did a performance test using the sysbench.
      
      #sysbench --num-threads=128 --max-requests=50000 --test=fileio --file-total-size=128G
      --file-test-mode=rndwr --file-fsync-mode=fdatasync run
      
      The result on ext3 was:
      
      	-2.6.24
      	Operations performed:  0 Read, 50080 Write, 59600 Other = 109680 Total
      	Read 0b  Written 782.5Mb  Total transferred 782.5Mb  (12.116Mb/sec)
      	  775.45 Requests/sec executed
      
      	Test execution summary:
      	    total time:                          64.5814s
      	    total number of events:              50080
      	    total time taken by event execution: 3713.9836
      	    per-request statistics:
      	         min:                            0.0000s
      	         avg:                            0.0742s
      	         max:                            0.9375s
      	         approx.  95 percentile:         0.2901s
      
      	Threads fairness:
      	    events (avg/stddev):           391.2500/23.26
      	    execution time (avg/stddev):   29.0155/1.99
      
      	-2.6.24-patched
      	Operations performed:  0 Read, 50009 Write, 61596 Other = 111605 Total
      	Read 0b  Written 781.39Mb  Total transferred 781.39Mb  (16.419Mb/sec)
      	1050.83 Requests/sec executed
      
      	Test execution summary:
      	    total time:                          47.5900s
      	    total number of events:              50009
      	    total time taken by event execution: 2934.5768
      	    per-request statistics:
       	         min:                            0.0000s
      	         avg:                            0.0587s
       	         max:                            0.8938s
      	         approx.  95 percentile:         0.1993s
      
      	Threads fairness:
      	    events (avg/stddev):           390.6953/22.64
      	    execution time (avg/stddev):   22.9264/1.17
      
      Filesystem I/O throughput was improved.
      
      Signed-off-by :Hisashi Hifumi <hifumi.hisashi@oss.ntt.co.jp>
      Acked-by: NJan Kara <jack@suse.cz>
      Cc: <linux-ext4@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      53c550e9
  11. 30 4月, 2008 1 次提交
  12. 29 4月, 2008 2 次提交
  13. 28 4月, 2008 1 次提交
  14. 22 4月, 2008 1 次提交
  15. 19 4月, 2008 1 次提交
  16. 16 4月, 2008 1 次提交
  17. 26 2月, 2008 1 次提交
  18. 23 2月, 2008 1 次提交
  19. 26 2月, 2008 3 次提交
  20. 16 2月, 2008 2 次提交
    • T
      ext4: Don't use ext4_dec_count() if not needed · 825f1481
      Theodore Ts'o 提交于
      The ext4_dec_count() function is only needed when dropping the i_nlink
      count on inodes which are (or which could be) directories.  If we
      *know* that the inode in question can't possibly be a directory, use
      drop_nlink or clear_nlink() if we know i_nlink is 1.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      825f1481
    • V
      ext4: modify block allocation algorithm for the last group · 74d3487f
      Valerie Clement 提交于
      When a directory inode is allocated in the last group and the last group
      contains less than s_blocks_per_group blocks, the initial block allocated
      for the directory is not always allocated in the same group as the
      directory inode, but in one of the first groups of the filesystem (group 1
      for example).
      Depending on the current process's pid, ext4_find_near() and 
      ext4_ext_find_goal() can return a block number greater than the maximum
      blocks count in the filesystem and in that case the block will be not
      allocated in the same group as the inode.
      
      The following patch fixes the problem.
      
      Should the modification also be done in ext2/3 code?
      Signed-off-by: NValerie Clement <valerie.clement@bull.net>
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      74d3487f