1. 09 10月, 2008 9 次提交
  2. 27 8月, 2008 2 次提交
  3. 06 8月, 2008 1 次提交
  4. 27 7月, 2008 1 次提交
  5. 03 7月, 2008 3 次提交
  6. 08 5月, 2008 1 次提交
  7. 07 5月, 2008 1 次提交
  8. 29 4月, 2008 1 次提交
  9. 21 4月, 2008 1 次提交
    • F
      block: convert bio_copy_user to bio_copy_user_iov · c5dec1c3
      FUJITA Tomonori 提交于
      This patch enables bio_copy_user to take struct sg_iovec (renamed
      bio_copy_user_iov). bio_copy_user uses bio_copy_user_iov internally as
      bio_map_user uses bio_map_user_iov.
      
      The major changes are:
      
      - adds sg_iovec array to struct bio_map_data
      
      - adds __bio_copy_iov that copy data between bio and
      sg_iovec. bio_copy_user_iov and bio_uncopy_user use it.
      Signed-off-by: NFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Cc: Tejun Heo <htejun@gmail.com>
      Cc: Mike Christie <michaelc@cs.wisc.edu>
      Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      c5dec1c3
  10. 18 3月, 2008 1 次提交
  11. 19 2月, 2008 1 次提交
    • A
      fs/block_dev.c: remove #if 0'ed code · 86b6c7a7
      Adrian Bunk 提交于
      Commit b2e895db #if 0'ed this code stating:
      
      <--  snip  -->
      
          [PATCH] revert blockdev direct io back to 2.6.19 version
      
          Andrew Vasquez is reporting as-iosched oopses and a 65% throughput
          slowdown due to the recent special-casing of direct-io against
          blockdevs.  We don't know why either of these things are occurring.
      
          The patch minimally reverts us back to the 2.6.19 code for a 2.6.20
          release.
      
      <--  snip  -->
      
      It has since been dead code, and unless someone wants to revive it now
      it's time to remove it.
      
      This patch also makes bio_release_pages() static again and removes the
      ki_bio_count member from struct kiocb, reverting changes that had been
      done for this dead code.
      Signed-off-by: NAdrian Bunk <bunk@kernel.org>
      Signed-off-by: NJens Axboe <axboe@carl.home.kernel.dk>
      86b6c7a7
  12. 28 1月, 2008 1 次提交
  13. 16 10月, 2007 2 次提交
  14. 10 10月, 2007 3 次提交
    • N
      Drop 'size' argument from bio_endio and bi_end_io · 6712ecf8
      NeilBrown 提交于
      As bi_end_io is only called once when the reqeust is complete,
      the 'size' argument is now redundant.  Remove it.
      
      Now there is no need for bio_endio to subtract the size completed
      from bi_size.  So don't do that either.
      
      While we are at it, change bi_end_io to return void.
      Signed-off-by: NNeil Brown <neilb@suse.de>
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      6712ecf8
    • N
      Don't decrement bi_size in bio_endio · 5bb23a68
      NeilBrown 提交于
      The only caller of bio_endio that does not pass the full bi_size
      is end_that_request_first.  Also, no ->bi_end_io method is really
      interested in bi_size being decremented.
      
      So move the decrement and related code into ll_rw_blk and merge it
      with order_bio_endio to form req_bio_endio which does endio functionality
      specific to request completion.
      
      As some ->bi_end_io methods do check bi_size of 0, we set it thus for
      now, but that will go in the next patch.
      Signed-off-by: NNeil Brown <neilb@suse.de>
      
      ### Diffstat output
       ./block/ll_rw_blk.c |   42 +++++++++++++++++++++++++++---------------
       ./fs/bio.c          |   23 +++++++++++------------
       2 files changed, 38 insertions(+), 27 deletions(-)
      
      diff .prev/block/ll_rw_blk.c ./block/ll_rw_blk.c
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      5bb23a68
    • N
      Only call bi_end_io once for any bio · 9cc54d40
      NeilBrown 提交于
      Currently bi_end_io can be called multiple times as sub-requests
      complete.  However no ->bi_end_io function wants to know about that.
      So only call when the bio is complete.
      Signed-off-by: NNeil Brown <neilb@suse.de>
      
      ### Diffstat output
       ./fs/bio.c |    4 +++-
       1 file changed, 3 insertions(+), 1 deletion(-)
      
      diff .prev/fs/bio.c ./fs/bio.c
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      9cc54d40
  15. 24 7月, 2007 1 次提交
  16. 20 7月, 2007 1 次提交
    • P
      mm: Remove slab destructors from kmem_cache_create(). · 20c2df83
      Paul Mundt 提交于
      Slab destructors were no longer supported after Christoph's
      c59def9f change. They've been
      BUGs for both slab and slub, and slob never supported them
      either.
      
      This rips out support for the dtor pointer from kmem_cache_create()
      completely and fixes up every single callsite in the kernel (there were
      about 224, not including the slab allocator definitions themselves,
      or the documentation references).
      Signed-off-by: NPaul Mundt <lethal@linux-sh.org>
      20c2df83
  17. 10 7月, 2007 1 次提交
  18. 08 5月, 2007 1 次提交
  19. 30 4月, 2007 1 次提交
    • J
      [BLOCK] Don't pin lots of memory in mempools · 5972511b
      Jens Axboe 提交于
      Currently we scale the mempool sizes depending on memory installed
      in the machine, except for the bio pool itself which sits at a fixed
      256 entry pre-allocation.
      
      There's really no point in "optimizing" this OOM path, we just need
      enough preallocated to make progress. A single unit is enough, lets
      scale it down to 2 just to be on the safe side.
      
      This patch saves ~150kb of pinned kernel memory on a 32-bit box.
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      5972511b
  20. 14 12月, 2006 1 次提交
    • C
      [PATCH] optimize o_direct on block devices · e61c9018
      Chen, Kenneth W 提交于
      Implement block device specific .direct_IO method instead of going through
      generic direct_io_worker for block device.
      
      direct_io_worker() is fairly complex because it needs to handle O_DIRECT on
      file system, where it needs to perform block allocation, hole detection,
      extents file on write, and tons of other corner cases.  The end result is
      that it takes tons of CPU time to submit an I/O.
      
      For block device, the block allocation is much simpler and a tight triple
      loop can be written to iterate each iovec and each page within the iovec in
      order to construct/prepare bio structure and then subsequently submit it to
      the block layer.  This significantly speeds up O_D on block device.
      
      [akpm@osdl.org: small speedup]
      Signed-off-by: NKen Chen <kenneth.w.chen@intel.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Zach Brown <zach.brown@oracle.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      e61c9018
  21. 08 12月, 2006 1 次提交
  22. 01 12月, 2006 2 次提交
  23. 22 11月, 2006 1 次提交
    • D
      WorkStruct: Pass the work_struct pointer instead of context data · 65f27f38
      David Howells 提交于
      Pass the work_struct pointer to the work function rather than context data.
      The work function can use container_of() to work out the data.
      
      For the cases where the container of the work_struct may go away the moment the
      pending bit is cleared, it is made possible to defer the release of the
      structure by deferring the clearing of the pending bit.
      
      To make this work, an extra flag is introduced into the management side of the
      work_struct.  This governs auto-release of the structure upon execution.
      
      Ordinarily, the work queue executor would release the work_struct for further
      scheduling or deallocation by clearing the pending bit prior to jumping to the
      work function.  This means that, unless the driver makes some guarantee itself
      that the work_struct won't go away, the work function may not access anything
      else in the work_struct or its container lest they be deallocated..  This is a
      problem if the auxiliary data is taken away (as done by the last patch).
      
      However, if the pending bit is *not* cleared before jumping to the work
      function, then the work function *may* access the work_struct and its container
      with no problems.  But then the work function must itself release the
      work_struct by calling work_release().
      
      In most cases, automatic release is fine, so this is the default.  Special
      initiators exist for the non-auto-release case (ending in _NAR).
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      65f27f38
  24. 12 10月, 2006 1 次提交
    • A
      [PATCH] fs/bio.c: tweaks · bf02c082
      Andreas Mohr 提交于
      - Calculate a variable in bvec_alloc_bs() only once needed, not earlier
        (bio.o down from 18408 to 18376 Bytes, 32 Bytes saved, probably due to
        data locality improvements).
      
      - Init variable idx to silence a gcc warning which already existed in the
        unmodified original base file (bvec_alloc_bs() handles idx correctly, so
        there's no need for the warning):
      
      	fs/bio.c: In function `bio_alloc_bioset':
      	fs/bio.c:169: warning: `idx' may be used uninitialized in this function
      Signed-off-by: NAndreas Mohr <andi@lisas.de>
      Acked-by: NJens Axboe <axboe@kernel.dk>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      bf02c082
  25. 01 10月, 2006 1 次提交