From: Andrew Morton Signed-off-by: Andrew Morton --- block/ll_rw_blk.c | 3 --- include/scsi/scsi_cmnd.h | 7 +++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff -puN block/ll_rw_blk.c~git-scsi-target-fixup block/ll_rw_blk.c --- a/block/ll_rw_blk.c~git-scsi-target-fixup +++ a/block/ll_rw_blk.c @@ -3469,9 +3469,6 @@ EXPORT_SYMBOL(end_request); void blk_rq_bio_prep(request_queue_t *q, struct request *rq, struct bio *bio) { - /* first two bits are identical in rq->cmd_flags and bio->bi_rw */ - rq->cmd_flags |= (bio->bi_rw & 3); - rq->nr_phys_segments = bio_phys_segments(q, bio); rq->nr_hw_segments = bio_hw_segments(q, bio); rq->current_nr_sectors = bio_cur_sectors(bio); diff -puN include/scsi/scsi_cmnd.h~git-scsi-target-fixup include/scsi/scsi_cmnd.h --- a/include/scsi/scsi_cmnd.h~git-scsi-target-fixup +++ a/include/scsi/scsi_cmnd.h @@ -73,6 +73,8 @@ struct scsi_cmnd { unsigned short use_sg; /* Number of pieces of scatter-gather */ unsigned short sglist_len; /* size of malloc'd scatter-gather list */ + /* offset in cmd we are at (for multi-transfer tgt cmds) */ + unsigned offset; unsigned underflow; /* Return error if less than this amount is transferred */ @@ -133,7 +135,10 @@ struct scsi_cmnd { #define SCSI_STATE_MLQUEUE 0x100b +extern struct scsi_cmnd *scsi_host_get_command(struct Scsi_Host *, + enum dma_data_direction, gfp_t); extern struct scsi_cmnd *scsi_get_command(struct scsi_device *, gfp_t); +extern void scsi_host_put_command(struct Scsi_Host *, struct scsi_cmnd *); extern void scsi_put_command(struct scsi_cmnd *); extern void scsi_io_completion(struct scsi_cmnd *, unsigned int); extern void scsi_finish_command(struct scsi_cmnd *cmd); @@ -142,5 +147,7 @@ extern void scsi_req_abort_cmd(struct sc extern void *scsi_kmap_atomic_sg(struct scatterlist *sg, int sg_count, size_t *offset, size_t *len); extern void scsi_kunmap_atomic_sg(void *virt); +extern struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *, gfp_t); +extern void scsi_free_sgtable(struct scatterlist *, int); #endif /* _SCSI_SCSI_CMND_H */ _