1. 12 10月, 2011 15 次提交
  2. 13 8月, 2011 1 次提交
    • C
      xfs: remove subdirectories · c59d87c4
      Christoph Hellwig 提交于
      Use the move from Linux 2.6 to Linux 3.x as an excuse to kill the
      annoying subdirectories in the XFS source code.  Besides the large
      amount of file rename the only changes are to the Makefile, a few
      files including headers with the subdirectory prefix, and the binary
      sysctl compat code that includes a header under fs/xfs/ from
      kernel/.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      c59d87c4
  3. 27 7月, 2011 1 次提交
    • C
      xfs: flag all buffers as metadata · 34951f5c
      Christoph Hellwig 提交于
      Now that REQ_META bios aren't treated specially in the CFQ I/O schedule
      anymore, we can tag all buffers as metadata to make blktrace traces more
      meaningful.  Note that we use buffers also to zero out partial blocks
      in the preallocation / hole punching code, and while they operate on
      data blocks the zeros written certainly aren't data.  I think this case
      is borderline metadata enough to not bother special casing it.
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      34951f5c
  4. 26 7月, 2011 6 次提交
  5. 13 7月, 2011 2 次提交
  6. 08 7月, 2011 3 次提交
  7. 25 5月, 2011 1 次提交
  8. 20 5月, 2011 1 次提交
    • D
      xfs: reset buffer pointers before freeing them · 44396476
      Dave Chinner 提交于
      When we free a vmapped buffer, we need to ensure the vmap address
      and length we free is the same as when it was allocated. In various
      places in the log code we change the memory the buffer is pointing
      to before issuing IO, but we never reset the buffer to point back to
      it's original memory (or no memory, if that is the case for the
      buffer).
      
      As a result, when we free the buffer it points to memory that is
      owned by something else and attempts to unmap and free it. Because
      the range does not match any known mapped range, it can trigger
      BUG_ON() traps in the vmap code, and potentially corrupt the vmap
      area tracking.
      
      Fix this by always resetting these buffers to their original state
      before freeing them.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NAlex Elder <aelder@sgi.com>
      44396476
  9. 29 4月, 2011 1 次提交
  10. 08 4月, 2011 2 次提交
  11. 31 3月, 2011 2 次提交
  12. 26 3月, 2011 2 次提交
    • D
      xfs: stop using the page cache to back the buffer cache · 0e6e847f
      Dave Chinner 提交于
      Now that the buffer cache has it's own LRU, we do not need to use
      the page cache to provide persistent caching and reclaim
      infrastructure. Convert the buffer cache to use alloc_pages()
      instead of the page cache. This will remove all the overhead of page
      cache management from setup and teardown of the buffers, as well as
      needing to mark pages accessed as we find buffers in the buffer
      cache.
      
      By avoiding the page cache, we also remove the need to keep state in
      the page_private(page) field for persistant storage across buffer
      free/buffer rebuild and so all that code can be removed. This also
      fixes the long-standing problem of not having enough bits in the
      page_private field to track all the state needed for a 512
      sector/64k page setup.
      
      It also removes the need for page locking during reads as the pages
      are unique to the buffer and nobody else will be attempting to
      access them.
      
      Finally, it removes the buftarg address space lock as a point of
      global contention on workloads that allocate and free buffers
      quickly such as when creating or removing large numbers of inodes in
      parallel. This remove the 16TB limit on filesystem size on 32 bit
      machines as the page index (32 bit) is no longer used for lookups
      of metadata buffers - the buffer cache is now solely indexed by disk
      address which is stored in a 64 bit field in the buffer.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NAlex Elder <aelder@sgi.com>
      0e6e847f
    • D
      vmap: flush vmap aliases when mapping fails · a19fb380
      Dave Chinner 提交于
      On 32 bit systems, vmalloc space is limited and XFS can chew through
      it quickly as the vmalloc space is lazily freed. This can result in
      failure to map buffers, even when there is apparently large amounts
      of vmalloc space available. Hence, if we fail to map a buffer, purge
      the aliases that have not yet been freed to hopefuly free up enough
      vmalloc space to allow a retry to succeed.
      Signed-off-by: NDave Chinner <dchinner@redhat.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Reviewed-by: NAlex Elder <aelder@sgi.com>
      a19fb380
  13. 10 3月, 2011 1 次提交
  14. 07 3月, 2011 1 次提交
  15. 01 2月, 2011 1 次提交
    • T
      xfs: convert to alloc_workqueue() · 83e75904
      Tejun Heo 提交于
      Convert from create[_singlethread]_workqueue() to alloc_workqueue().
      
      * xfsdatad_workqueue and xfsconvertd_workqueue are identity converted.
        Using higher concurrency limit might be useful but given the
        complexity of workqueue usage in xfs, proceeding cautiously seems
        better.
      
      * xfs_mru_reap_wq is converted to non-ordered workqueue with max
        concurrency of 1 as the work items don't require any specific
        ordering and already have proper synchronization.  It seems it was
        singlethreaded to save worker threads, which is no longer a concern.
      Signed-off-by: NTejun Heo <tj@kernel.org>
      Cc: Alex Elder <aelder@sgi.com>
      Cc: xfs-masters@oss.sgi.com
      Cc: Christoph Hellwig <hch@infradead.org>
      83e75904