1. 03 1月, 2009 3 次提交
  2. 29 12月, 2008 5 次提交
    • J
      bio: get rid of bio_vec clearing · d3f76110
      Jens Axboe 提交于
      We don't need to clear the memory used for adding bio_vec entries,
      since nobody should be looking at members unitialized. Any valid
      use should be below bio->bi_vcnt, and that members up until that count
      must be valid since they were added through bio_add_page().
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      d3f76110
    • J
      bio: add support for inlining a number of bio_vecs inside the bio · 392ddc32
      Jens Axboe 提交于
      When we go and allocate a bio for IO, we actually do two allocations.
      One for the bio itself, and one for the bi_io_vec that holds the
      actual pages we are interested in.
      
      This feature inlines a definable amount of io vecs inside the bio
      itself, so we eliminate the bio_vec array allocation for IO's up
      to a certain size. It defaults to 4 vecs, which is typically 16k
      of IO.
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      392ddc32
    • J
      bio: allow individual slabs in the bio_set · bb799ca0
      Jens Axboe 提交于
      Instead of having a global bio slab cache, add a reference to one
      in each bio_set that is created. This allows for personalized slabs
      in each bio_set, so that they can have bios of different sizes.
      
      This means we can personalize the bios we return. File systems may
      want to embed the bio inside another structure, to avoid allocation
      more items (and stuffing them in ->bi_private) after the get a bio.
      Or we may want to embed a number of bio_vecs directly at the end
      of a bio, to avoid doing two allocations to return a bio. This is now
      possible.
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      bb799ca0
    • J
      bio: move the slab pointer inside the bio_set · 1b434498
      Jens Axboe 提交于
      In preparation for adding differently sized bios.
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      1b434498
    • J
      bio: only mempool back the largest bio_vec slab cache · 7ff9345f
      Jens Axboe 提交于
      We only very rarely need the mempool backing, so it makes sense to
      get rid of all but one of the mempool in a bio_set. So keep the
      largest bio_vec count mempool so we can always honor the largest
      allocation, and "upgrade" callers that fail.
      Signed-off-by: NJens Axboe <jens.axboe@oracle.com>
      7ff9345f
  3. 26 11月, 2008 2 次提交
  4. 09 10月, 2008 10 次提交
  5. 27 8月, 2008 2 次提交
  6. 06 8月, 2008 1 次提交
  7. 27 7月, 2008 1 次提交
  8. 03 7月, 2008 3 次提交
  9. 08 5月, 2008 1 次提交
  10. 07 5月, 2008 1 次提交
  11. 29 4月, 2008 1 次提交
  12. 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
  13. 18 3月, 2008 1 次提交
  14. 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
  15. 28 1月, 2008 1 次提交
  16. 16 10月, 2007 2 次提交
  17. 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
  18. 24 7月, 2007 1 次提交