public inbox for linux-scsi@vger.kernel.org
 help / color / mirror / Atom feed
From: Brian King <brking@linux.vnet.ibm.com>
To: Martin Wilck <mwilck@suse.com>, Brian King <brking@linux.ibm.com>,
	martin.petersen@oracle.com
Cc: James.Bottomley@HansenPartnership.com,
	linux-scsi@vger.kernel.org, tyreld@linux.ibm.com,
	brking@pobox.com
Subject: Re: [PATCH] ibmvfc: Add max_sectors module parameter
Date: Mon, 12 Aug 2024 16:45:27 -0500	[thread overview]
Message-ID: <cd5c3b50-e928-4e2c-b4c4-d5fb03ae514d@linux.vnet.ibm.com> (raw)
In-Reply-To: <646b3701a9a3d8131eb7f0bf16c0fa6b1a0d49b4.camel@suse.com>

On 8/12/24 3:22 PM, Martin Wilck wrote:
> On Tue, 2024-07-30 at 12:51 -0500, Brian King wrote:
>> There are some scenarios that can occur, such as performing an
>> upgrade of the virtual I/O server, where the supported max transfer
>> of the backing device for an ibmvfc HBA can change. If the max
>> transfer of the backing device decreases, this can cause issues with
>> previously discovered LUNs. This patch accomplishes two things.
>> First, it changes the default ibmvfc max transfer value to 1MB.
>> This is generally supported by all backing devices, which should
>> mitigate this issue out of the box. Secondly, it adds a module
>> parameter, enabling a user to increase the max transfer value to
>> values that are larger than 1MB, as long as they have configured
>> these larger values on the virtual I/O server as well.
>>
>> Signed-off-by: Brian King <brking@linux.ibm.com>
>> ---
>>  drivers/scsi/ibmvscsi/ibmvfc.c | 10 +++++++---
>>  drivers/scsi/ibmvscsi/ibmvfc.h |  2 +-
>>  2 files changed, 8 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/scsi/ibmvscsi/ibmvfc.c
>> b/drivers/scsi/ibmvscsi/ibmvfc.c
>> index a3d1013c8307..611901562e06 100644
>> --- a/drivers/scsi/ibmvscsi/ibmvfc.c
>> +++ b/drivers/scsi/ibmvscsi/ibmvfc.c
>> @@ -37,6 +37,7 @@ static unsigned int default_timeout =
>> IBMVFC_DEFAULT_TIMEOUT;
>>  static u64 max_lun = IBMVFC_MAX_LUN;
>>  static unsigned int max_targets = IBMVFC_MAX_TARGETS;
>>  static unsigned int max_requests = IBMVFC_MAX_REQUESTS_DEFAULT;
>> +static unsigned int max_sectors = IBMVFC_MAX_SECTORS;
>>  static u16 scsi_qdepth = IBMVFC_SCSI_QDEPTH;
>>  static unsigned int disc_threads = IBMVFC_MAX_DISC_THREADS;
>>  static unsigned int ibmvfc_debug = IBMVFC_DEBUG;
>> @@ -83,6 +84,9 @@ MODULE_PARM_DESC(default_timeout,
>>  module_param_named(max_requests, max_requests, uint, S_IRUGO);
>>  MODULE_PARM_DESC(max_requests, "Maximum requests for this adapter. "
>>  		 "[Default="
>> __stringify(IBMVFC_MAX_REQUESTS_DEFAULT) "]");
>> +module_param_named(max_sectors, max_sectors, uint, S_IRUGO);
>> +MODULE_PARM_DESC(max_sectors, "Maximum sectors for this adapter. "
>> +		 "[Default=" __stringify(IBMVFC_MAX_SECTORS) "]");
>>  module_param_named(scsi_qdepth, scsi_qdepth, ushort, S_IRUGO);
>>  MODULE_PARM_DESC(scsi_qdepth, "Maximum scsi command depth per
>> adapter queue. "
>>  		 "[Default=" __stringify(IBMVFC_SCSI_QDEPTH) "]");
>> @@ -1494,7 +1498,7 @@ static void ibmvfc_set_login_info(struct
>> ibmvfc_host *vhost)
>>  	memset(login_info, 0, sizeof(*login_info));
>>  
>>  	login_info->ostype = cpu_to_be32(IBMVFC_OS_LINUX);
>> -	login_info->max_dma_len = cpu_to_be64(IBMVFC_MAX_SECTORS <<
>> 9);
>> +	login_info->max_dma_len = cpu_to_be64(max_sectors << 9);
>>  	login_info->max_payload = cpu_to_be32(sizeof(struct
>> ibmvfc_fcp_cmd_iu));
>>  	login_info->max_response = cpu_to_be32(sizeof(struct
>> ibmvfc_fcp_rsp));
>>  	login_info->partition_num = cpu_to_be32(vhost-
>>> partition_number);
>> @@ -5230,7 +5234,7 @@ static void ibmvfc_npiv_login_done(struct
>> ibmvfc_event *evt)
>>  	}
>>  
>>  	vhost->logged_in = 1;
>> -	npiv_max_sectors = min((uint)(be64_to_cpu(rsp->max_dma_len)
>>>> 9), IBMVFC_MAX_SECTORS);
>> +	npiv_max_sectors = min((uint)(be64_to_cpu(rsp->max_dma_len)
>>>> 9), max_sectors);
>>  	dev_info(vhost->dev, "Host partition: %s, device: %s %s %s
>> max sectors %u\n",
>>  		 rsp->partition_name, rsp->device_name, rsp-
>>> port_loc_code,
>>  		 rsp->drc_name, npiv_max_sectors);
>> @@ -6329,7 +6333,7 @@ static int ibmvfc_probe(struct vio_dev *vdev,
>> const struct vio_device_id *id)
>>  	shost->can_queue = scsi_qdepth;
>>  	shost->max_lun = max_lun;
>>  	shost->max_id = max_targets;
>> -	shost->max_sectors = IBMVFC_MAX_SECTORS;
>> +	shost->max_sectors = max_sectors;
> 
> Would it make sense to check whether the user-provided max_sectors
> value is within some reasonable limits?

Agreed.  I'll follow up with an updated version.

Thanks,

Brian


-- 
Brian King
Power Linux I/O
IBM Linux Technology Center



  reply	other threads:[~2024-08-12 21:45 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-30 17:51 [PATCH] ibmvfc: Add max_sectors module parameter Brian King
2024-08-12 20:22 ` Martin Wilck
2024-08-12 21:45   ` Brian King [this message]
2024-08-30 20:42     ` [PATCH v2] " Brian King
2024-09-02  9:52       ` Martin Wilck
2024-09-03 13:47         ` [PATCH v3] " Brian King
2024-09-03 14:42           ` Martin Wilck
2024-09-09  9:07             ` Martin Wilck
2024-09-13  0:19           ` Martin K. Petersen
2024-09-19 15:52           ` Martin K. Petersen
2024-09-10 13:25 ` [PATCH] " Hannes Reinecke

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cd5c3b50-e928-4e2c-b4c4-d5fb03ae514d@linux.vnet.ibm.com \
    --to=brking@linux.vnet.ibm.com \
    --cc=James.Bottomley@HansenPartnership.com \
    --cc=brking@linux.ibm.com \
    --cc=brking@pobox.com \
    --cc=linux-scsi@vger.kernel.org \
    --cc=martin.petersen@oracle.com \
    --cc=mwilck@suse.com \
    --cc=tyreld@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox