iscsi: Set number of blocks to 0 for blank CDROM devices
The number of blocks of the device is used to compute the device size in bdrv_getlength()/iscsi_getlength(). For MMC devices, the ReturnedLogicalBlockAddress in the READCAPACITY10 has a special meaning when it is 0. In this case it does not mean that LBA 0 is the last accessible LBA, and thus the device has 1 readable block, but instead it means that the disc is blank and there are no readable blocks. This change ensures that when the iSCSI LUN is loaded with a blank DVD-R disk or similar that bdrv_getlength() will return the correct size of the device as 0 bytes. Signed-off-by: Ronnie Sahlberg <ronniesahlberg@gmail.com>
This commit is contained in:
parent
0f1da449ec
commit
135b908878
@ -721,7 +721,12 @@ iscsi_readcapacity10_cb(struct iscsi_context *iscsi, int status,
|
|||||||
}
|
}
|
||||||
|
|
||||||
itask->iscsilun->block_size = rc10->block_size;
|
itask->iscsilun->block_size = rc10->block_size;
|
||||||
itask->iscsilun->num_blocks = rc10->lba + 1;
|
if (rc10->lba == 0) {
|
||||||
|
/* blank disk loaded */
|
||||||
|
itask->iscsilun->num_blocks = 0;
|
||||||
|
} else {
|
||||||
|
itask->iscsilun->num_blocks = rc10->lba + 1;
|
||||||
|
}
|
||||||
itask->bs->total_sectors = itask->iscsilun->num_blocks *
|
itask->bs->total_sectors = itask->iscsilun->num_blocks *
|
||||||
itask->iscsilun->block_size / BDRV_SECTOR_SIZE ;
|
itask->iscsilun->block_size / BDRV_SECTOR_SIZE ;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user