block: Remove some unnecessary bi_vcnt usage
More prep work for immutable bvecs/effecient bio splitting - usage of bi_vcnt has to be auditing, so getting rid of all the unnecessary usage makes that easier. Plus, bio_segments() is really what this code wanted, as it respects the current value of bi_idx. Signed-off-by: Kent Overstreet <koverstreet@google.com> CC: Jens Axboe <axboe@kernel.dk> CC: Eric Moore <Eric.Moore@lsi.com> CC: "James E.J. Bottomley" <JBottomley@parallels.com> CC: linux-scsi@vger.kernel.org
This commit is contained in:
Родитель
4f2ac93c17
Коммит
2f477877f8
|
@ -2235,10 +2235,10 @@ static int mptsas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* do we need to support multiple segments? */
|
/* do we need to support multiple segments? */
|
||||||
if (req->bio->bi_vcnt > 1 || rsp->bio->bi_vcnt > 1) {
|
if (bio_segments(req->bio) > 1 || bio_segments(rsp->bio) > 1) {
|
||||||
printk(MYIOC_s_ERR_FMT "%s: multiple segments req %u %u, rsp %u %u\n",
|
printk(MYIOC_s_ERR_FMT "%s: multiple segments req %u %u, rsp %u %u\n",
|
||||||
ioc->name, __func__, req->bio->bi_vcnt, blk_rq_bytes(req),
|
ioc->name, __func__, bio_segments(req->bio), blk_rq_bytes(req),
|
||||||
rsp->bio->bi_vcnt, blk_rq_bytes(rsp));
|
bio_segments(rsp->bio), blk_rq_bytes(rsp));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2151,10 +2151,10 @@ int sas_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* do we need to support multiple segments? */
|
/* do we need to support multiple segments? */
|
||||||
if (req->bio->bi_vcnt > 1 || rsp->bio->bi_vcnt > 1) {
|
if (bio_segments(req->bio) > 1 || bio_segments(rsp->bio) > 1) {
|
||||||
printk("%s: multiple segments req %u %u, rsp %u %u\n",
|
printk("%s: multiple segments req %u %u, rsp %u %u\n",
|
||||||
__func__, req->bio->bi_vcnt, blk_rq_bytes(req),
|
__func__, bio_segments(req->bio), blk_rq_bytes(req),
|
||||||
rsp->bio->bi_vcnt, blk_rq_bytes(rsp));
|
bio_segments(rsp->bio), blk_rq_bytes(rsp));
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1939,7 +1939,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
ioc->transport_cmds.status = MPT2_CMD_PENDING;
|
ioc->transport_cmds.status = MPT2_CMD_PENDING;
|
||||||
|
|
||||||
/* Check if the request is split across multiple segments */
|
/* Check if the request is split across multiple segments */
|
||||||
if (req->bio->bi_vcnt > 1) {
|
if (bio_segments(req->bio) > 1) {
|
||||||
u32 offset = 0;
|
u32 offset = 0;
|
||||||
|
|
||||||
/* Allocate memory and copy the request */
|
/* Allocate memory and copy the request */
|
||||||
|
@ -1971,7 +1971,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
|
|
||||||
/* Check if the response needs to be populated across
|
/* Check if the response needs to be populated across
|
||||||
* multiple segments */
|
* multiple segments */
|
||||||
if (rsp->bio->bi_vcnt > 1) {
|
if (bio_segments(rsp->bio) > 1) {
|
||||||
pci_addr_in = pci_alloc_consistent(ioc->pdev, blk_rq_bytes(rsp),
|
pci_addr_in = pci_alloc_consistent(ioc->pdev, blk_rq_bytes(rsp),
|
||||||
&pci_dma_in);
|
&pci_dma_in);
|
||||||
if (!pci_addr_in) {
|
if (!pci_addr_in) {
|
||||||
|
@ -2038,7 +2038,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
sgl_flags = (MPI2_SGE_FLAGS_SIMPLE_ELEMENT |
|
sgl_flags = (MPI2_SGE_FLAGS_SIMPLE_ELEMENT |
|
||||||
MPI2_SGE_FLAGS_END_OF_BUFFER | MPI2_SGE_FLAGS_HOST_TO_IOC);
|
MPI2_SGE_FLAGS_END_OF_BUFFER | MPI2_SGE_FLAGS_HOST_TO_IOC);
|
||||||
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT;
|
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT;
|
||||||
if (req->bio->bi_vcnt > 1) {
|
if (bio_segments(req->bio) > 1) {
|
||||||
ioc->base_add_sg_single(psge, sgl_flags |
|
ioc->base_add_sg_single(psge, sgl_flags |
|
||||||
(blk_rq_bytes(req) - 4), pci_dma_out);
|
(blk_rq_bytes(req) - 4), pci_dma_out);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2054,7 +2054,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
MPI2_SGE_FLAGS_LAST_ELEMENT | MPI2_SGE_FLAGS_END_OF_BUFFER |
|
MPI2_SGE_FLAGS_LAST_ELEMENT | MPI2_SGE_FLAGS_END_OF_BUFFER |
|
||||||
MPI2_SGE_FLAGS_END_OF_LIST);
|
MPI2_SGE_FLAGS_END_OF_LIST);
|
||||||
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT;
|
sgl_flags = sgl_flags << MPI2_SGE_FLAGS_SHIFT;
|
||||||
if (rsp->bio->bi_vcnt > 1) {
|
if (bio_segments(rsp->bio) > 1) {
|
||||||
ioc->base_add_sg_single(psge, sgl_flags |
|
ioc->base_add_sg_single(psge, sgl_flags |
|
||||||
(blk_rq_bytes(rsp) + 4), pci_dma_in);
|
(blk_rq_bytes(rsp) + 4), pci_dma_in);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2099,7 +2099,7 @@ _transport_smp_handler(struct Scsi_Host *shost, struct sas_rphy *rphy,
|
||||||
le16_to_cpu(mpi_reply->ResponseDataLength);
|
le16_to_cpu(mpi_reply->ResponseDataLength);
|
||||||
/* check if the resp needs to be copied from the allocated
|
/* check if the resp needs to be copied from the allocated
|
||||||
* pci mem */
|
* pci mem */
|
||||||
if (rsp->bio->bi_vcnt > 1) {
|
if (bio_segments(rsp->bio) > 1) {
|
||||||
u32 offset = 0;
|
u32 offset = 0;
|
||||||
u32 bytes_to_copy =
|
u32 bytes_to_copy =
|
||||||
le16_to_cpu(mpi_reply->ResponseDataLength);
|
le16_to_cpu(mpi_reply->ResponseDataLength);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче