lkml.org 
[lkml]   [2008]   [Sep]   [21]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
/
DateSat, 20 Sep 2008 21:04:44 -0700
FromAndrew Morton <>
SubjectRe: [PATCH] block: Find bio sector offset given idx and offset
On Sat, 20 Sep 2008 20:13:29 -0400 "Martin K. Petersen" <martin.petersen@oracle.com> wrote:

> @@ -1300,6 +1300,30 @@ struct bio_pair *bio_split(struct bio *bi, mempool_t *pool, int first_sectors)
>  	return bp;
>  }
> 
> +sector_t bio_sector_offset(struct bio *bio, unsigned short index, unsigned int offset)
> +{
> +	struct bio_vec *bv;
> +	unsigned int sector_sz = bio->bi_bdev->bd_disk->queue->hardsect_size;
> +	sector_t sectors;
> +	int i;
> +
> +	sectors = 0;
> +
> +	BUG_ON(index >= bio->bi_vcnt);
> +
> +	bio_for_each_segment(bv, bio, i) {
> +		if (i == index) {
> +			if (offset > bv->bv_offset)
> +				sectors += (offset - bv->bv_offset) / sector_sz;
> +			return sectors;
> +		}
> +
> +		sectors += bv->bv_len / sector_sz;
> +	}
> +
> +	BUG();
> +}
> +EXPORT_SYMBOL(bio_sector_offset);

Please avoid sending out kenrel-wide exported-to-modules utility
functions which have no documentation.

Not only is it a bad thing from a maintainability and reliability point
of view - it also makes code review significantly less effective.


\
 
 \ /
  Last update: 2008-09-21 06:07    [from the cache]
©2003-2008