浏览代码

scsi: sd: Unlock zone in case of error in sd_setup_write_same_cmnd()

scsi_io_init() may fail, leaving a zone of a zoned block device locked.
Fix this by properly unlocking the write same request target zone if
scsi_io_init() fails.

Signed-off-by: Damien Le Moal <damien.lemoal@wdc.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Damien Le Moal 8 年之前
父节点
当前提交
29f6ca6916
共有 1 个文件被更改,包括 4 次插入0 次删除
  1. 4 0
      drivers/scsi/sd.c

+ 4 - 0
drivers/scsi/sd.c

@@ -948,6 +948,10 @@ static int sd_setup_write_same_cmnd(struct scsi_cmnd *cmd)
 	rq->__data_len = sdp->sector_size;
 	rq->__data_len = sdp->sector_size;
 	ret = scsi_init_io(cmd);
 	ret = scsi_init_io(cmd);
 	rq->__data_len = nr_bytes;
 	rq->__data_len = nr_bytes;
+
+	if (sd_is_zoned(sdkp) && ret != BLKPREP_OK)
+		sd_zbc_write_unlock_zone(cmd);
+
 	return ret;
 	return ret;
 }
 }