1. 18 Sep, 2002 4 commits
    • Jens Axboe's avatar
      [PATCH] partial bio completion notification · 392aaa18
      Jens Axboe authored
      Make bio->bi_end_io() take bytes_done and actual error as argument. This
      enables partial completion of bio's, which is important for latency
      reasons (bio can be huge, for slow media we want page-by-page
      completions).
      
      I think I got most of the bi_end_io() functions out there, but I might
      have missed a few. For the record, if you don't care about partial
      completions and just want to be notified when the entire bio completes,
      add a
      
      	if (bio->bi_size)
      		return 1;
      
      to the top of your bi_end_io(). It should return 0 on completion.
      bio_endio() will decrement bio->bi_size appropriately, it's recommended
      for people to go through that. Otherwise they will have to control
      BIO_UPTODATE and bi_size decrement themselves, there's really no reason
      to do that. I've deliberately avoided doing any functional changes to
      any of the end_io functions, as I think that would only make the patch
      more complex. It's simple right now, but this being i/o paths I prefer
      (as usual) to be careful and take small steps. The mpage_end_io_read()
      do-vecs-at-the-time change can come right after this, for instance.
      392aaa18
    • Jens Axboe's avatar
      [PATCH] make mpage use bio_add_page() · cf780a87
      Jens Axboe authored
      This makes mpage use bio_add_page().  It has the added advantage that
      users don't need to have deep knowledge about what the different bio
      fields mean, nor does it have to abuse some of them while building the
      bio.
      cf780a87
    • Jens Axboe's avatar
      [PATCH] bio_add_page() · f8b46092
      Jens Axboe authored
      This is bio_add_page(), 100% identical to the version I sent out for
      comments earlier this week.  With the previous queue restriction patch,
      this guarentees that we can always add a page worth of data to the bio.
      bio_add_page() returns 0 on success, and 1 on failure.  Either the page
      is added completely, or the attempt is aborted.
      
      bio_add_page() uses the normal queue restrictions to determine whether
      we an add the page or not. if a queue has further restrictions, it can
      define a q->merge_bvec_fn() to further impose limits.
      
      Patch also includes changes to ll_rw_kio(), if for nothing else to
      demonstrate how to use this piece of instrastructure.
      f8b46092
    • Jens Axboe's avatar
      [PATCH] impose sane queue restrictions · efbb72f9
      Jens Axboe authored
      Impose sane limits on queue restrictions. that means:
      
       - q->max_sectors must be able to at least span a page
       - q->max_phys_segments and q->max_hw_segments must be at least 1
       - q->max_segment_size must be at least page sized
       - q->seg_boundary_mask must be at least PAGE_CACHE_SIZE-1
      efbb72f9
  2. 17 Sep, 2002 36 commits