From 040c0193f460150c6abf219709e0ebe3c1bfcbc1 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 4 Aug 2016 15:56:54 -0700 Subject: [PATCH] bdev: change blocklen from uint64_t to uint32_t This is the size of a logical block in bytes; 4 GB is more than plenty. Also allows cleaning up casts to uint32_t in the SCSI translation layer. Change-Id: I3ec2e2f41fd378f1a83f31aac25c46ef780f63e9 Signed-off-by: Daniel Verkamp --- include/spdk/bdev.h | 2 +- lib/scsi/scsi_bdev.c | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/include/spdk/bdev.h b/include/spdk/bdev.h index e819868e2..214822ab1 100644 --- a/include/spdk/bdev.h +++ b/include/spdk/bdev.h @@ -107,7 +107,7 @@ struct spdk_bdev { char product_name[SPDK_BDEV_MAX_PRODUCT_NAME_LENGTH]; /** Size in bytes of a logical block for the backend */ - uint64_t blocklen; + uint32_t blocklen; /** Number of blocks */ uint64_t blockcnt; diff --git a/lib/scsi/scsi_bdev.c b/lib/scsi/scsi_bdev.c index f0455fb67..6fdbd4773 100644 --- a/lib/scsi/scsi_bdev.c +++ b/lib/scsi/scsi_bdev.c @@ -515,8 +515,7 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, /* support zero length in WRITE SAME */ /* MAXIMUM COMPARE AND WRITE LENGTH */ - blocks = SPDK_WORK_ATS_BLOCK_SIZE / - (uint32_t)bdev->blocklen; + blocks = SPDK_WORK_ATS_BLOCK_SIZE / bdev->blocklen; if (blocks > 0xff) blocks = 0xff; @@ -525,15 +524,14 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, /* force align to 4KB */ if (bdev->blocklen < 4096) { - blocks = 4096 / (uint32_t)bdev->blocklen; + blocks = 4096 / bdev->blocklen; /* OPTIMAL TRANSFER LENGTH GRANULARITY */ to_be16(&data[6], blocks); /* MAXIMUM TRANSFER LENGTH */ /* OPTIMAL TRANSFER LENGTH */ - blocks = SPDK_WORK_BLOCK_SIZE / - (uint32_t)bdev->blocklen; + blocks = SPDK_WORK_BLOCK_SIZE / bdev->blocklen; to_be32(&data[12], blocks); @@ -547,8 +545,7 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task, /* MAXIMUM TRANSFER LENGTH */ /* OPTIMAL TRANSFER LENGTH */ - blocks = SPDK_WORK_BLOCK_SIZE / - (uint32_t)bdev->blocklen; + blocks = SPDK_WORK_BLOCK_SIZE / bdev->blocklen; to_be32(&data[12], blocks); /* MAXIMUM PREFETCH XDREAD XDWRITE TRANSFER LENGTH */ @@ -1559,7 +1556,7 @@ spdk_bdev_scsi_process_block(struct spdk_bdev *bdev, case SPDK_SBC_SAI_READ_CAPACITY_16: spdk_scsi_task_alloc_data(task, 32, &data); to_be64(&data[0], bdev->blockcnt - 1); - to_be32(&data[8], (uint32_t)bdev->blocklen); + to_be32(&data[8], bdev->blocklen); /* * Set the TPE bit to 1 to indicate thin provisioning. * The position of TPE bit is the 7th bit in 14th byte