1. 09 2月, 2009 1 次提交
  2. 19 1月, 2009 1 次提交
  3. 16 1月, 2009 1 次提交
  4. 10 11月, 2008 1 次提交
    • D
      [XFS] Account for allocated blocks when expanding directories · 6f9f51ad
      David Chinner 提交于
      When we create a directory, we reserve a number of blocks for the maximum
      possible expansion of of the directory due to various btree splits,
      freespace allocation, etc. Unfortunately, each allocation is not reflected
      in the total number of blocks still available to the transaction, so the
      maximal reservation is used over and over again.
      
      This leads to problems where an allocation group has only enough blocks
      for *some* of the allocations required for the directory modification.
      After the first N allocations, the remaining blocks in the allocation
      group drops below the total reservation, and subsequent allocations fail
      because the allocator will not allow the allocation to proceed if the AG
      does not have the enough blocks available for the entire allocation total.
      
      This results in an ENOSPC occurring after an allocation has already
      occurred. This results in aborting the directory operation (leaving the
      directory in an inconsistent state) and cancelling a dirty transaction,
      which results in a filesystem shutdown.
      
      Avoid the problem by reflecting the number of blocks allocated in any
      directory expansion in the total number of blocks available to the
      modification in progress. This prevents a directory modification from
      being aborted part way through with an ENOSPC.
      
      SGI-PV: 988144
      
      SGI-Modid: xfs-linux-melb:xfs-kern:32340a
      Signed-off-by: NDavid Chinner <david@fromorbit.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      6f9f51ad
  5. 30 10月, 2008 1 次提交
    • D
      [XFS] Account for allocated blocks when expanding directories · a7444053
      David Chinner 提交于
      When we create a directory, we reserve a number of blocks for the maximum
      possible expansion of of the directory due to various btree splits,
      freespace allocation, etc. Unfortunately, each allocation is not reflected
      in the total number of blocks still available to the transaction, so the
      maximal reservation is used over and over again.
      
      This leads to problems where an allocation group has only enough blocks
      for *some* of the allocations required for the directory modification.
      After the first N allocations, the remaining blocks in the allocation
      group drops below the total reservation, and subsequent allocations fail
      because the allocator will not allow the allocation to proceed if the AG
      does not have the enough blocks available for the entire allocation total.
      
      This results in an ENOSPC occurring after an allocation has already
      occurred. This results in aborting the directory operation (leaving the
      directory in an inconsistent state) and cancelling a dirty transaction,
      which results in a filesystem shutdown.
      
      Avoid the problem by reflecting the number of blocks allocated in any
      directory expansion in the total number of blocks available to the
      modification in progress. This prevents a directory modification from
      being aborted part way through with an ENOSPC.
      
      SGI-PV: 988144
      
      SGI-Modid: xfs-linux-melb:xfs-kern:32340a
      Signed-off-by: NDavid Chinner <david@fromorbit.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      a7444053
  6. 28 7月, 2008 4 次提交
    • C
      [XFS] streamline init/exit path · 9f8868ff
      Christoph Hellwig 提交于
      Currently the xfs module init/exit code is a mess. It's farmed out over a
      lot of function with very little error checking. This patch makes sure we
      propagate all initialization failures properly and clean up after them.
      Various runtime initializations are replaced with compile-time
      initializations where possible to make this easier. The exit path is
      similarly consolidated.
      
      There's now split out function to create/destroy the kmem zones and
      alloc/free the trace buffers. I've also changed the ktrace allocations to
      KM_MAYFAIL and handled errors resulting from that.
      
      And yes, we really should replace the XFS_*_TRACE ifdefs with a single
      XFS_TRACE..
      
      SGI-PV: 976035
      
      SGI-Modid: xfs-linux-melb:xfs-kern:31354a
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      Signed-off-by: NNiv Sardi <xaiki@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      9f8868ff
    • B
      [XFS] Add op_flags field and helpers to xfs_da_args · 6a178100
      Barry Naujok 提交于
      The end of the xfs_da_args structure has 4 unsigned char fields for
      true/false information on directory and attr operations using the
      xfs_da_args structure.
      
      The following converts these 4 into a op_flags field that uses the first 4
      bits for these fields and allows expansion for future operation
      information (eg. case-insensitive lookup request).
      
      SGI-PV: 981520
      SGI-Modid: xfs-linux-melb:xfs-kern:31206a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      6a178100
    • B
      [XFS] Name operation vector for hash and compare · 5163f95a
      Barry Naujok 提交于
      Adds two pieces of functionality for the basis of case-insensitive support
      in XFS:
      
      1. A comparison result enumerated type: xfs_dacmp. It represents an
      
      exact match, case-insensitive match or no match at all. This patch
      
      only implements different and exact results.
      
      2. xfs_nameops vector for specifying how to perform the hash generation
      
      of filenames and comparision methods. In this patch the hash vector
      
      points to the existing xfs_da_hashname function and the comparison
      
      method does a length compare, and if the same, does a memcmp and
      
      return the xfs_dacmp result.
      
      All filename functions that use the hash (create, lookup remove, rename,
      etc) now use the xfs_nameops.hashname function and all directory lookup
      functions also use the xfs_nameops.compname function.
      
      The lookup functions also handle case-insensitive results even though the
      default comparison function cannot return that. And important aspect of
      the lookup functions is that an exact match always has precedence over a
      case-insensitive. So while a case-insensitive match is found, we have to
      keep looking just in case there is an exact match. In the meantime, the
      info for the first case-insensitive match is retained if no exact match is
      found.
      
      SGI-PV: 981519
      SGI-Modid: xfs-linux-melb:xfs-kern:31205a
      Signed-off-by: NBarry Naujok <bnaujok@sgi.com>
      Signed-off-by: NChristoph Hellwig <hch@infradead.org>
      5163f95a
    • D
      [XFS] Remove unused arg from kmem_free() · f0e2d93c
      Denys Vlasenko 提交于
      kmem_free() function takes (ptr, size) arguments but doesn't actually use
      second one.
      
      This patch removes size argument from all callsites.
      
      SGI-PV: 981498
      SGI-Modid: xfs-linux-melb:xfs-kern:31050a
      Signed-off-by: NDenys Vlasenko <vda.linux@googlemail.com>
      Signed-off-by: NDavid Chinner <dgc@sgi.com>
      Signed-off-by: NLachlan McIlroy <lachlan@sgi.com>
      f0e2d93c
  7. 14 2月, 2008 1 次提交
  8. 07 2月, 2008 1 次提交
  9. 05 9月, 2007 1 次提交
  10. 10 2月, 2007 2 次提交
  11. 28 9月, 2006 1 次提交
  12. 20 6月, 2006 1 次提交
  13. 09 6月, 2006 3 次提交
  14. 29 3月, 2006 1 次提交
  15. 17 3月, 2006 7 次提交
  16. 03 11月, 2005 1 次提交
  17. 02 11月, 2005 5 次提交
  18. 21 6月, 2005 1 次提交
  19. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4