dect
/
linux-2.6
Archived
13
0
Fork 0

libosd: Use new blk_rq_map_kern

Now that blk_rq_map_kern will append the buffer onto the
request we can use it easily for adding extra segments
(eg. attributes)

This patch is dependent on a block layer patch titled:
   [BLOCK] allow blk_rq_map_kern to append to requests

Signed-off-by: Boaz Harrosh <bharrosh@panasas.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
Boaz Harrosh 2009-05-17 18:56:17 +03:00 committed by Jens Axboe
parent 3a5a39276d
commit bc38bf106c
1 changed files with 2 additions and 22 deletions

View File

@ -826,26 +826,6 @@ int osd_req_add_set_attr_list(struct osd_request *or,
}
EXPORT_SYMBOL(osd_req_add_set_attr_list);
static int _append_map_kern(struct request *req,
void *buff, unsigned len, gfp_t flags)
{
struct bio *bio;
int ret;
bio = bio_map_kern(req->q, buff, len, flags);
if (IS_ERR(bio)) {
OSD_ERR("Failed bio_map_kern(%p, %d) => %ld\n", buff, len,
PTR_ERR(bio));
return PTR_ERR(bio);
}
ret = blk_rq_append_bio(req->q, req, bio);
if (ret) {
OSD_ERR("Failed blk_rq_append_bio(%p) => %d\n", bio, ret);
bio_put(bio);
}
return ret;
}
static int _req_append_segment(struct osd_request *or,
unsigned padding, struct _osd_req_data_segment *seg,
struct _osd_req_data_segment *last_seg, struct _osd_io_info *io)
@ -861,14 +841,14 @@ static int _req_append_segment(struct osd_request *or,
else
pad_buff = io->pad_buff;
ret = _append_map_kern(io->req, pad_buff, padding,
ret = blk_rq_map_kern(io->req->q, io->req, pad_buff, padding,
or->alloc_flags);
if (ret)
return ret;
io->total_bytes += padding;
}
ret = _append_map_kern(io->req, seg->buff, seg->total_bytes,
ret = blk_rq_map_kern(io->req->q, io->req, seg->buff, seg->total_bytes,
or->alloc_flags);
if (ret)
return ret;