[SCSI] Merge branch 'linus'

Conflicts:
	drivers/message/fusion/mptsas.c

fixed up conflict between req->data_len accessors and mptsas driver updates.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
James Bottomley
2009-06-12 10:02:03 -05:00
1794개의 변경된 파일103334개의 추가작업 그리고 35046개의 파일을 삭제

파일 보기

@@ -921,26 +921,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)
@@ -956,14 +936,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;
@@ -1324,6 +1304,21 @@ static int _osd_req_finalize_data_integrity(struct osd_request *or,
/*
* osd_finalize_request and helpers
*/
static struct request *_make_request(struct request_queue *q, bool has_write,
struct _osd_io_info *oii, gfp_t flags)
{
if (oii->bio)
return blk_make_request(q, oii->bio, flags);
else {
struct request *req;
req = blk_get_request(q, has_write ? WRITE : READ, flags);
if (unlikely(!req))
return ERR_PTR(-ENOMEM);
return req;
}
}
static int _init_blk_request(struct osd_request *or,
bool has_in, bool has_out)
@@ -1332,11 +1327,13 @@ static int _init_blk_request(struct osd_request *or,
struct scsi_device *scsi_device = or->osd_dev->scsi_device;
struct request_queue *q = scsi_device->request_queue;
struct request *req;
int ret = -ENOMEM;
int ret;
req = blk_get_request(q, has_out, flags);
if (!req)
req = _make_request(q, has_out, has_out ? &or->out : &or->in, flags);
if (IS_ERR(req)) {
ret = PTR_ERR(req);
goto out;
}
or->request = req;
req->cmd_type = REQ_TYPE_BLOCK_PC;
@@ -1351,9 +1348,10 @@ static int _init_blk_request(struct osd_request *or,
or->out.req = req;
if (has_in) {
/* allocate bidi request */
req = blk_get_request(q, READ, flags);
if (!req) {
req = _make_request(q, false, &or->in, flags);
if (IS_ERR(req)) {
OSD_DEBUG("blk_get_request for bidi failed\n");
ret = PTR_ERR(req);
goto out;
}
req->cmd_type = REQ_TYPE_BLOCK_PC;
@@ -1398,26 +1396,6 @@ int osd_finalize_request(struct osd_request *or,
return ret;
}
if (or->out.bio) {
ret = blk_rq_append_bio(or->request->q, or->out.req,
or->out.bio);
if (ret) {
OSD_DEBUG("blk_rq_append_bio out failed\n");
return ret;
}
OSD_DEBUG("out bytes=%llu (bytes_req=%u)\n",
_LLU(or->out.total_bytes), or->out.req->data_len);
}
if (or->in.bio) {
ret = blk_rq_append_bio(or->request->q, or->in.req, or->in.bio);
if (ret) {
OSD_DEBUG("blk_rq_append_bio in failed\n");
return ret;
}
OSD_DEBUG("in bytes=%llu (bytes_req=%u)\n",
_LLU(or->in.total_bytes), or->in.req->data_len);
}
or->out.pad_buff = sg_out_pad_buffer;
or->in.pad_buff = sg_in_pad_buffer;