1. 10 10月, 2008 1 次提交
  2. 14 9月, 2008 1 次提交
    • A
      ext4: Properly update i_disksize. · cf17fea6
      Aneesh Kumar K.V 提交于
      With delayed allocation we use i_data_sem to update i_disksize.  We need
      to update i_disksize only if the new size specified is greater than the
      current value and we need to make sure we don't race with other
      i_disksize update.  With delayed allocation we will switch to the
      write_begin function for non-delayed allocation if we are low on free
      blocks.  This means the write_begin function for non-delayed allocation
      also needs to use the same locking.
      
      We also need to check and update i_disksize even if the new size is less
      that inode.i_size because of delayed allocation.
      Signed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      cf17fea6
  3. 09 9月, 2008 2 次提交
  4. 20 8月, 2008 3 次提交
    • M
      ext4: journal credit fix for the delayed allocation's writepages() function · 525f4ed8
      Mingming Cao 提交于
      Previous delalloc writepages implementation started a new transaction
      outside of a loop which called get_block() to do the block allocation.
      Since we didn't know exactly how many blocks would need to be allocated,
      the estimated journal credits required was very conservative and caused
      many issues.
      
      With the reworked delayed allocation, a new transaction is created for
      each get_block(), thus we don't need to guess how many credits for the
      multiple chunk of allocation.  We start every transaction with enough
      credits for inserting a single exent.  When estimate the credits for
      indirect blocks to allocate a chunk of blocks, we need to know the
      number of data blocks to allocate.  We use the total number of reserved
      delalloc datablocks; if that is too big, for non-extent files, we need
      to limit the number of blocks to EXT4_MAX_TRANS_BLOCKS.
      
      Code cleanup from Aneesh.
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      Reviewed-off-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      525f4ed8
    • M
      ext4: journal credits reservation fixes for DIO, fallocate · f3bd1f3f
      Mingming Cao 提交于
      DIO and fallocate credit calculation is different than writepage, as
      they do start a new journal right for each call to ext4_get_blocks_wrap().
      This patch uses the helper function in DIO and fallocate case, passing
      a flag indicating that the modified data are contigous thus could account
      less indirect/index blocks.
      
      This patch also fixed the journal credit reservation for direct I/O
      (DIO).  Previously the estimated credits for DIO only was calculated for
      non-extent files, which was not enough if the file is extent-based.
      
      Also fixed was fallocate double-counting credits for modifying the the
      superblock.
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      Reviewed-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      f3bd1f3f
    • M
      ext4: journal credits reservation fixes for extent file writepage · ee12b630
      Mingming Cao 提交于
      This patch modified the writepage/write_begin credit calculation for
      extent files, to use the credits caculation helper function.
      
      The current calculation of how many index/leaf blocks should be
      accounted is too conservetive, it always considered the worse case,
      where the tree level is 5, and in the case of multiple chunk
      allocations, it always assumed no blocks were dirtied in common across
      the allocations. This path uses the accurate depth of the inode with
      some extras to calculate the index blocks, and also less conservative in
      the case of multiple allocation accounting.
      Signed-off-by: NMingming Cao <cmm@us.ibm.com>
      Reviewed-by: NAneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      ee12b630
  5. 16 8月, 2008 1 次提交
  6. 27 7月, 2008 1 次提交
  7. 02 8月, 2008 2 次提交
    • T
      ext4: don't assume extents can't cross block groups when truncating · 34071da7
      Theodore Ts'o 提交于
      With the FLEX_BG layout, there is no reason why extents can't cross
      block groups, so make the truncate code reserve enough credits so we
      don't BUG if we come across such an extent.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      34071da7
    • T
      ext4: Fix ext4_ext_journal_restart() · 0123c939
      Theodore Ts'o 提交于
      The ext4_ext_journal_restart() is a convenience function which checks
      to see if the requested number of credits is present, and if so it
      closes the current transaction and attaches the current handle to the
      new transaction.  Unfortunately, it wasn't proprely checking the
      return value from ext4_journal_extend(), so it was starting a new
      transaction when one was not necessary, and returning an error when
      all that was necessary was to restart the handle with a new
      transaction.
      Signed-off-by: N"Theodore Ts'o" <tytso@mit.edu>
      0123c939
  8. 03 8月, 2008 1 次提交
  9. 12 7月, 2008 1 次提交
  10. 15 7月, 2008 1 次提交
    • M
      ext4: delayed allocation ENOSPC handling · d2a17637
      Mingming Cao 提交于
      This patch does block reservation for delayed
      allocation, to avoid ENOSPC later at page flush time.
      
      Blocks(data and metadata) are reserved at da_write_begin()
      time, the freeblocks counter is updated by then, and the number of
      reserved blocks is store in per inode counter.
              
      At the writepage time, the unused reserved meta blocks are returned
      back. At unlink/truncate time, reserved blocks are properly released.
      
      Updated fix from  Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
      to fix the oldallocator block reservation accounting with delalloc, added
      lock to guard the counters and also fix the reservation for meta blocks.
      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: NTheodore Ts'o <tytso@mit.edu>
      d2a17637
  11. 12 7月, 2008 9 次提交
  12. 30 4月, 2008 3 次提交
  13. 17 4月, 2008 2 次提交
  14. 30 4月, 2008 1 次提交
  15. 29 4月, 2008 3 次提交
  16. 17 4月, 2008 1 次提交
  17. 29 4月, 2008 1 次提交
  18. 17 4月, 2008 1 次提交
  19. 26 2月, 2008 2 次提交
  20. 16 2月, 2008 1 次提交
    • 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
  21. 22 2月, 2008 1 次提交
  22. 26 2月, 2008 1 次提交