1. 17 4月, 2008 1 次提交
  2. 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
  3. 30 4月, 2008 2 次提交
  4. 29 4月, 2008 4 次提交
  5. 17 4月, 2008 1 次提交
  6. 29 4月, 2008 2 次提交
  7. 17 4月, 2008 1 次提交
  8. 30 4月, 2008 1 次提交
  9. 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
  10. 30 4月, 2008 1 次提交
  11. 29 4月, 2008 2 次提交
  12. 28 4月, 2008 1 次提交
  13. 22 4月, 2008 1 次提交
  14. 19 4月, 2008 1 次提交
  15. 16 4月, 2008 1 次提交
  16. 26 2月, 2008 1 次提交
  17. 23 2月, 2008 1 次提交
  18. 26 2月, 2008 3 次提交
  19. 16 2月, 2008 3 次提交
  20. 22 2月, 2008 1 次提交
  21. 26 2月, 2008 1 次提交
  22. 22 2月, 2008 1 次提交
  23. 16 2月, 2008 2 次提交
  24. 26 2月, 2008 1 次提交
  25. 15 2月, 2008 2 次提交
  26. 10 2月, 2008 3 次提交
    • T
      ext4: Add new "development flag" to the ext4 filesystem · 469108ff
      Theodore Tso 提交于
      This flag is simply a generic "this is a crash/burn test filesystem"
      marker.  If it is set, then filesystem code which is "in development"
      will be allowed to mount the filesystem.  Filesystem code which is not
      considered ready for prime-time will check for this flag, and if it is
      not set, it will refuse to touch the filesystem.
      
      As we start rolling ext4 out to distro's like Fedora, et. al, this makes
      it less likely that a user might accidentally start using ext4 on a
      production filesystem; a bad thing, since that will essentially make it
      be unfsckable until e2fsprogs catches up.
      Signed-off-by: NTheodore Tso <tytso@MIT.EDU>
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      469108ff
    • A
      ext4: Don't panic in case of corrupt bitmap · 26346ff6
      Aneesh Kumar K.V 提交于
      Multiblock allocator calls BUG_ON in many case if the free and used
      blocks count obtained looking at the bitmap is different from what
      the allocator internally accounted for. Use ext4_error in such case
      and don't panic the system.
      Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      26346ff6
    • E
      ext4: allocate struct ext4_allocation_context from a kmem cache · 256bdb49
      Eric Sandeen 提交于
      struct ext4_allocation_context is rather large, and this bloats
      the stack of many functions which use it.  Allocating it from
      a named slab cache will alleviate this.
      
      For example, with this change (on top of the noinline patch sent earlier):
      
      -ext4_mb_new_blocks		200
      +ext4_mb_new_blocks		 40
      
      -ext4_mb_free_blocks		344
      +ext4_mb_free_blocks		168
      
      -ext4_mb_release_inode_pa	216
      +ext4_mb_release_inode_pa	 40
      
      -ext4_mb_release_group_pa	192
      +ext4_mb_release_group_pa	 24
      
      Most of these stack-allocated structs are actually used only for
      mballoc history; and in those cases often a smaller struct would do.
      So changing that may be another way around it, at least for those
      functions, if preferred.  For now, in those cases where the ac
      is only for history, an allocation failure simply skips the history
      recording, and does not cause any other failures.
      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>
      
      256bdb49