Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc34a8e6 authored by Akinobu Mita's avatar Akinobu Mita Committed by James Bottomley
Browse files

[SCSI] scsi_debug: clear correct memory region when LBPRZ is enabled



The function unmap_region() clears memory region specified as the logical
block address and the number of logical blocks in ramdisk storage
(fake_storep) if lbpu and lbprz module parameters are enabled.

In the while loop of unmap_region(), it advances optimal unmap granularity
in logical blocks.  But it only clears one logical block at LBA 'block' per
loop iteration.  And furthermore, the 'block' is not pointing to a logical
block address which should be cleared, it is a index of probisioning map
(map_storep).

Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Acked-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent ac17078a
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -2059,8 +2059,9 @@ static void unmap_region(sector_t lba, unsigned int len)
			clear_bit(block, map_storep);
			if (scsi_debug_lbprz)
				memset(fake_storep +
				       block * scsi_debug_sector_size, 0,
				       scsi_debug_sector_size);
				       lba * scsi_debug_sector_size, 0,
				       scsi_debug_sector_size *
				       scsi_debug_unmap_granularity);
		}
		lba += granularity - rem;
	}