Message ID | 1571725628-132736-1-git-send-email-chenxiang66@hisilicon.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 0cf9f4e547cebb5f5d2d046437c71ddcc8ea4a39 |
Headers | show |
Series | scsi:sd: define variable dif as unsigned int instead of bool | expand |
On 10/21/19 11:27 PM, chenxiang wrote: > From: Xiang Chen <chenxiang66@hisilicon.com> > > Variable dif in function sd_setup_read_write_cmnd() is the return value > of function scsi_host_dif_capable() which returns dif capability of disks. > If define it as bool, even for the disks which support DIF3, the function > still return dif=1, which causes IO error. So define variable dif as > unsigned int instead of bool. > > Fixes: e249e42d277e ("scsi: sd: Clean up sd_setup_read_write_cmnd()") > Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com> > --- > 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 32d9517..a763b70 100644 > --- a/drivers/scsi/sd.c > +++ b/drivers/scsi/sd.c > @@ -1166,11 +1166,12 @@ static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) > sector_t lba = sectors_to_logical(sdp, blk_rq_pos(rq)); > sector_t threshold; > unsigned int nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq)); > - bool dif, dix; > unsigned int mask = logical_to_sectors(sdp, 1) - 1; > bool write = rq_data_dir(rq) == WRITE; > unsigned char protect, fua; > blk_status_t ret; > + unsigned int dif; > + bool dix; > > ret = scsi_init_io(cmd); > if (ret != BLK_STS_OK) > Reviewed-by: Bart Van Assche <bvanassche@acm.org>
> Variable dif in function sd_setup_read_write_cmnd() is the return > value of function scsi_host_dif_capable() which returns dif capability > of disks. If define it as bool, even for the disks which support > DIF3, the function still return dif=1, which causes IO error. So > define variable dif as unsigned int instead of bool. Applied to 5.4/scsi-fixes, thanks!
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index 32d9517..a763b70 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c @@ -1166,11 +1166,12 @@ static blk_status_t sd_setup_read_write_cmnd(struct scsi_cmnd *cmd) sector_t lba = sectors_to_logical(sdp, blk_rq_pos(rq)); sector_t threshold; unsigned int nr_blocks = sectors_to_logical(sdp, blk_rq_sectors(rq)); - bool dif, dix; unsigned int mask = logical_to_sectors(sdp, 1) - 1; bool write = rq_data_dir(rq) == WRITE; unsigned char protect, fua; blk_status_t ret; + unsigned int dif; + bool dix; ret = scsi_init_io(cmd); if (ret != BLK_STS_OK)