diff mbox series

[v1] IB/iser: Support up to 16MB data transfer in a single command

Message ID 20190912103534.18210-1-sergeygo@mellanox.com (mailing list archive)
State Mainlined
Commit 1ba7c8f800586805c409f5b1ff1803318a41933a
Delegated to: Jason Gunthorpe
Headers show
Series [v1] IB/iser: Support up to 16MB data transfer in a single command | expand

Commit Message

Sergey Gorenko Sept. 12, 2019, 10:35 a.m. UTC
Maximum supported IO size is 8MB for the iSER driver. The
current value is limited by the ISCSI_ISER_MAX_SG_TABLESIZE
macro. But the driver is able to handle 16MB IOs without any
significant changes. Increasing this limit can be useful for
the storage arrays which are fine tuned for IOs larger than
8 MB.

This commit allows to configure maximum IO size up to 16MB
using the max_sectors module parameter.

Signed-off-by: Sergey Gorenko <sergeygo@mellanox.com>
Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
Acked-by: Sagi Grimberg <sagi@grimberg.me>
---
Changes from v0:
- Change 512 to SECTOR_SIZE (suggested by Sagi)

 drivers/infiniband/ulp/iser/iscsi_iser.h | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Jason Gunthorpe Sept. 12, 2019, 3:19 p.m. UTC | #1
On Thu, Sep 12, 2019 at 10:35:34AM +0000, Sergey Gorenko wrote:
> Maximum supported IO size is 8MB for the iSER driver. The
> current value is limited by the ISCSI_ISER_MAX_SG_TABLESIZE
> macro. But the driver is able to handle 16MB IOs without any
> significant changes. Increasing this limit can be useful for
> the storage arrays which are fine tuned for IOs larger than
> 8 MB.
> 
> This commit allows to configure maximum IO size up to 16MB
> using the max_sectors module parameter.
> 
> Signed-off-by: Sergey Gorenko <sergeygo@mellanox.com>
> Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
> Acked-by: Sagi Grimberg <sagi@grimberg.me>
> ---
> Changes from v0:
> - Change 512 to SECTOR_SIZE (suggested by Sagi)
> 
>  drivers/infiniband/ulp/iser/iscsi_iser.h | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)

Applied to for-next with Sagi's ack

Thanks,
Jason
Max Gurtovoy Sept. 12, 2019, 9:14 p.m. UTC | #2
On 9/12/2019 6:19 PM, Jason Gunthorpe wrote:
> On Thu, Sep 12, 2019 at 10:35:34AM +0000, Sergey Gorenko wrote:
>> Maximum supported IO size is 8MB for the iSER driver. The
>> current value is limited by the ISCSI_ISER_MAX_SG_TABLESIZE
>> macro. But the driver is able to handle 16MB IOs without any
>> significant changes. Increasing this limit can be useful for
>> the storage arrays which are fine tuned for IOs larger than
>> 8 MB.
>>
>> This commit allows to configure maximum IO size up to 16MB
>> using the max_sectors module parameter.
>>
>> Signed-off-by: Sergey Gorenko <sergeygo@mellanox.com>
>> Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
>> Acked-by: Sagi Grimberg <sagi@grimberg.me>
>> ---
>> Changes from v0:
>> - Change 512 to SECTOR_SIZE (suggested by Sagi)

is this always true ? 512 == SECTOR_SIZE ?


>>
>>   drivers/infiniband/ulp/iser/iscsi_iser.h | 7 ++++---
>>   1 file changed, 4 insertions(+), 3 deletions(-)
> Applied to for-next with Sagi's ack
>
> Thanks,
> Jason
Sagi Grimberg Sept. 12, 2019, 9:45 p.m. UTC | #3
>>> Maximum supported IO size is 8MB for the iSER driver. The
>>> current value is limited by the ISCSI_ISER_MAX_SG_TABLESIZE
>>> macro. But the driver is able to handle 16MB IOs without any
>>> significant changes. Increasing this limit can be useful for
>>> the storage arrays which are fine tuned for IOs larger than
>>> 8 MB.
>>>
>>> This commit allows to configure maximum IO size up to 16MB
>>> using the max_sectors module parameter.
>>>
>>> Signed-off-by: Sergey Gorenko <sergeygo@mellanox.com>
>>> Reviewed-by: Max Gurtovoy <maxg@mellanox.com>
>>> Acked-by: Sagi Grimberg <sagi@grimberg.me>
>>> ---
>>> Changes from v0:
>>> - Change 512 to SECTOR_SIZE (suggested by Sagi)
> 
> is this always true ? 512 == SECTOR_SIZE ?

 From the documentation it is, and nothing suggest otherwise.
/*
  * The basic unit of block I/O is a sector. It is used in a number of 
contexts
  * in Linux (blk, bio, genhd). The size of one sector is 512 = 2**9
  * bytes. Variables of type sector_t represent an offset or size that is a
  * multiple of 512 bytes. Hence these two constants.
  */
#ifndef SECTOR_SHIFT
#define SECTOR_SHIFT 9
#endif
#ifndef SECTOR_SIZE
#define SECTOR_SIZE (1 << SECTOR_SHIFT)
#endif
diff mbox series

Patch

diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h
index 39bf213444cb..52ce63592dcf 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.h
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.h
@@ -102,9 +102,10 @@ 
 
 /* Default support is 512KB I/O size */
 #define ISER_DEF_MAX_SECTORS		1024
-#define ISCSI_ISER_DEF_SG_TABLESIZE	((ISER_DEF_MAX_SECTORS * 512) >> SHIFT_4K)
-/* Maximum support is 8MB I/O size */
-#define ISCSI_ISER_MAX_SG_TABLESIZE	((16384 * 512) >> SHIFT_4K)
+#define ISCSI_ISER_DEF_SG_TABLESIZE                                            \
+	((ISER_DEF_MAX_SECTORS * SECTOR_SIZE) >> SHIFT_4K)
+/* Maximum support is 16MB I/O size */
+#define ISCSI_ISER_MAX_SG_TABLESIZE	((32768 * SECTOR_SIZE) >> SHIFT_4K)
 
 #define ISER_DEF_XMIT_CMDS_DEFAULT		512
 #if ISCSI_DEF_XMIT_CMDS_MAX > ISER_DEF_XMIT_CMDS_DEFAULT