bdev/iscsi: Add unmap support for iscsi initiator

Change-Id: I6dc83322385ecd332f6898f182192773824375cf
Signed-off-by: Chunyang Hui <Chunyang.hui@intel.com>
Reviewed-on: https://review.gerrithub.io/417086
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Chunyang Hui 2018-06-28 10:47:11 +08:00 committed by Daniel Verkamp
parent a4d22f7bdc
commit 8b38468db4

View File

@ -324,6 +324,24 @@ bdev_iscsi_flush(struct bdev_iscsi_lun *lun, struct bdev_iscsi_io *iscsi_io, uin
} }
} }
static void
bdev_iscsi_unmap(struct bdev_iscsi_lun *lun, struct bdev_iscsi_io *iscsi_io,
uint64_t lba, uint64_t num_blocks)
{
struct scsi_task *task;
struct unmap_list list[1];
list[0].lba = lba;
list[0].num = num_blocks;
task = iscsi_unmap_task(lun->context, 0, 0, 0, list, 1,
bdev_iscsi_command_cb, iscsi_io);
if (task == NULL) {
SPDK_ERRLOG("failed to get unmap_task\n");
bdev_iscsi_io_complete(iscsi_io, SPDK_BDEV_IO_STATUS_FAILED);
return;
}
}
static int static int
bdev_iscsi_poll_lun(struct bdev_iscsi_lun *lun) bdev_iscsi_poll_lun(struct bdev_iscsi_lun *lun)
{ {
@ -408,6 +426,11 @@ static void _bdev_iscsi_submit_request(void *_bdev_io)
ISCSI_IMMEDIATE_DATA_NO, ISCSI_IMMEDIATE_DATA_NO,
bdev_io->u.bdev.offset_blocks); bdev_io->u.bdev.offset_blocks);
break; break;
case SPDK_BDEV_IO_TYPE_UNMAP:
bdev_iscsi_unmap(lun, iscsi_io,
bdev_io->u.bdev.offset_blocks,
bdev_io->u.bdev.num_blocks);
break;
default: default:
bdev_iscsi_io_complete(iscsi_io, SPDK_BDEV_IO_STATUS_FAILED); bdev_iscsi_io_complete(iscsi_io, SPDK_BDEV_IO_STATUS_FAILED);
break; break;
@ -436,6 +459,7 @@ bdev_iscsi_io_type_supported(void *ctx, enum spdk_bdev_io_type io_type)
case SPDK_BDEV_IO_TYPE_READ: case SPDK_BDEV_IO_TYPE_READ:
case SPDK_BDEV_IO_TYPE_WRITE: case SPDK_BDEV_IO_TYPE_WRITE:
case SPDK_BDEV_IO_TYPE_FLUSH: case SPDK_BDEV_IO_TYPE_FLUSH:
case SPDK_BDEV_IO_TYPE_UNMAP:
return true; return true;
default: default: