Re: [Iprdd-devel] [PATCH V2]iprutils: Check inquiry support page before inquiry c7
Brought to you by:
brking
|
From: Greg J. <gj...@li...> - 2025-10-01 17:48:57
|
Looks good.
Reviewed-by: Greg Joyce<gj...@li...>
On Wed, 2025-09-24 at 11:33 -0500, wen...@li... wrote:
> From: Wen Xiong <wen...@li...>
>
> The patch checkes if device supports inquiry c7 page before
> calling to inquiry c7 page.
>
> Signed-off-by: Wen Xiong <wen...@li...>
> ---
> iprlib.c | 25 +++++++++++++++++++++++--
> 1 file changed, 23 insertions(+), 2 deletions(-)
>
> diff --git a/iprlib.c b/iprlib.c
> index 624dcdd..c024ea2 100644
> --- a/iprlib.c
> +++ b/iprlib.c
> @@ -6508,6 +6508,25 @@ int ipr_get_logical_block_size(struct ipr_dev
> *dev)
> return rc;
> }
>
> +bool inquiry_support_pages(struct ipr_dev *dev, u_int page_no)
> +{
> + struct ipr_inquiry_page0 page0_inq;
> + int rc, i;
> +
> + rc = ipr_inquiry(dev, 0, &page0_inq, sizeof(page0_inq));
> +
> + if (rc != 0) {
> + scsi_dbg(dev, "Inquiry support pages failed =
> `%d\n", rc);
> + return false;
> + }
> +
> + for (i = 0; i < page0_inq.page_length; i++)
> + if (page0_inq.supported_page_codes[i] == page_no)
> + return true;
> +
> + return false;
> +}
> +
> /**
> * init_inquiry_c7 - Page 0xC7 Inquiry to disks
> * @dev: ipr dev struct
> @@ -6770,7 +6789,8 @@ void __check_current_config(bool
> allow_rebuild_refresh, bool device_details_only
> memcpy(ra, &res_addr, sizeof(*ra));
>
> if (ipr_is_gscsi(dev) ||
> ipr_is_af_dasd_device(dev) && !device_details_only)
> - init_inquiry_c7(dev);
> + if (inquiry_support_pages(dev,
> 0xc7))
> + init_inquiry_c7(dev);
>
> if (!dev->qac_entry)
> continue;
> @@ -7366,7 +7386,8 @@ static int get_format_timeout(struct ipr_dev
> *dev)
> int rc, i, records, timeout;
> char temp[100];
>
> - rc = init_inquiry_c7(dev);
> + if (inquiry_support_pages(dev, 0xc7))
> + rc = init_inquiry_c7(dev);
>
> if (rc && ipr_is_af_dasd_device(dev)) {
> rc = ipr_query_dasd_timeouts(dev, &tos);
|