* [PATCH 5.10/5.15 v2] scsi: sd: Revert "scsi: sd: Remove a local variable"
@ 2022-11-01 1:31 Yu Kuai
2022-11-01 19:36 ` Greg KH
[not found] ` <166733132219544@kroah.com>
0 siblings, 2 replies; 3+ messages in thread
From: Yu Kuai @ 2022-11-01 1:31 UTC (permalink / raw)
To: gregkh, stable, jejb, martin.petersen, hare, bvanassche
Cc: linux-scsi, yukuai3, yukuai1, yi.zhang
From: Yu Kuai <yukuai3@huawei.com>
This reverts commit 84f7a9de0602704bbec774a6c7f7c8c4994bee9c.
Because it introduces a problem that rq->__data_len is set to the wrong
value.
before the patch:
1) nr_bytes = rq->__data_len
2) rq->__data_len = sdp->sector_size
3) scsi_init_io()
4) rq->__data_len = nr_bytes
after the patch:
1) rq->__data_len = sdp->sector_size
2) scsi_init_io()
3) rq->__data_len = rq->__data_len -> __data_len is wrong
It will cause that io can only complete one segment each time, and the io
will requeue in scsi_io_completion_action(), which will cause severe
performance degradation.
Scsi write same is removed in commit e383e16e84e9 ("scsi: sd: Remove
WRITE_SAME support") from mainline, hence this patch is only needed for
stable kernels.
Fixes: 84f7a9de0602 ("scsi: sd: Remove a local variable")
Signed-off-by: Yu Kuai <yukuai3@huawei.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
---
Changes in v2:
- add description that this patch is only needed for stable kernels.
drivers/scsi/sd.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index de6640ad1943..1e887c11e83d 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1072,6 +1072,7 @@ static blk_status_t sd_setup_write_same_cmnd(struct scsi_cmnd *cmd)
struct bio *bio = rq->bio;
u64 lba = sectors_to_logical(sdp, blk_rq_pos(rq));
u32 nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq));
+ unsigned int nr_bytes = blk_rq_bytes(rq);
blk_status_t ret;
if (sdkp->device->no_write_same)
@@ -1108,7 +1109,7 @@ static blk_status_t sd_setup_write_same_cmnd(struct scsi_cmnd *cmd)
*/
rq->__data_len = sdp->sector_size;
ret = scsi_alloc_sgtables(cmd);
- rq->__data_len = blk_rq_bytes(rq);
+ rq->__data_len = nr_bytes;
return ret;
}
--
2.31.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [PATCH 5.10/5.15 v2] scsi: sd: Revert "scsi: sd: Remove a local variable"
2022-11-01 1:31 [PATCH 5.10/5.15 v2] scsi: sd: Revert "scsi: sd: Remove a local variable" Yu Kuai
@ 2022-11-01 19:36 ` Greg KH
[not found] ` <166733132219544@kroah.com>
1 sibling, 0 replies; 3+ messages in thread
From: Greg KH @ 2022-11-01 19:36 UTC (permalink / raw)
To: Yu Kuai
Cc: stable, jejb, martin.petersen, hare, bvanassche, linux-scsi,
yukuai3, yi.zhang
On Tue, Nov 01, 2022 at 09:31:24AM +0800, Yu Kuai wrote:
> From: Yu Kuai <yukuai3@huawei.com>
>
> This reverts commit 84f7a9de0602704bbec774a6c7f7c8c4994bee9c.
>
> Because it introduces a problem that rq->__data_len is set to the wrong
> value.
Now queued up, thanks.
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread[parent not found: <166733132219544@kroah.com>]
* Re: Patch "scsi: sd: Revert "scsi: sd: Remove a local variable"" has been added to the 4.14-stable tree
[not found] ` <166733132219544@kroah.com>
@ 2022-11-01 19:37 ` Greg KH
0 siblings, 0 replies; 3+ messages in thread
From: Greg KH @ 2022-11-01 19:37 UTC (permalink / raw)
To: linux-kernel
Cc: bvanassche, hare, jejb, martin.petersen, yi.zhang, yukuai1,
yukuai3, stable-commits
On Tue, Nov 01, 2022 at 08:35:22PM +0100, gregkh@linuxfoundation.org wrote:
>
> This is a note to let you know that I've just added the patch titled
>
> scsi: sd: Revert "scsi: sd: Remove a local variable"
>
> to the 4.14-stable tree which can be found at:
> http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
Oops, nope, not 4.14, sorry for the noise, now dropped from there.
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-11-01 19:36 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-01 1:31 [PATCH 5.10/5.15 v2] scsi: sd: Revert "scsi: sd: Remove a local variable" Yu Kuai
2022-11-01 19:36 ` Greg KH
[not found] ` <166733132219544@kroah.com>
2022-11-01 19:37 ` Patch "scsi: sd: Revert "scsi: sd: Remove a local variable"" has been added to the 4.14-stable tree Greg KH
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.