From: "Udo Grabowski (IMK)" <udo.grabowski@kit.edu>
To: <developer@lists.illumos.org>
Subject: Re: [developer] Error scsi_vhci
Date: Wed, 20 Nov 2024 18:20:24 +0100 [thread overview]
Message-ID: <f5258bed-7204-4e58-b8a1-8576e2580f7f@kit.edu> (raw)
In-Reply-To: <639205d7-bf5e-4e23-9335-5421ad62f40b@kit.edu>
[-- Attachment #1.1: Type: text/plain, Size: 2744 bytes --]
On 19/11/2024 19:07, Udo Grabowski (IMK) wrote:
>
>
> On 19-11-2024 19:00, Udo Grabowski (IMK) wrote:
>> On 19-11-2024 18:46, Udo Grabowski (IMK) wrote:
>>> Hi,
>>> for a while now, stmsboot drops the error message below, but after
>>> reboot, it works fine. The message is actually caused by
>>> /lib/mpxio/stmsboot_util -D mpt_sas -N, which spits out '|iport'
>>> instead of 'iport', letting the search in /dev/dsk/* for it fail.
>>> The consequence is that former automatic discovery for vhci-capable
>>> disks fails and you have to revert to the failover list in
>>> /kernel/drv/scsi_vhci.conf again. stmsboot_util is a compiled
>>> executable.
>>>
>>> # stmsboot -e -D mpt_sas
>>> WARNING: This operation will require a reboot.
>>> Do you want to continue ? [y/n] (default: y) y
>>> egrep: RE error in |iport: invalid regular expression <===========
>>> ...
>>
>>
>> Looks like an oversight for an edge case:
>>
>> -N
>> 385 * same as the -n option, except that we only print the
>> 386 * node-name (dev_info :: devi_node_name). Multiple instances
>> 387 * through the libdevinfo snapshot are uniqified and
>> separated
>> 388 * by the "|" character for direct use by egrep(1).
>>
>> For only one item, there should be no "|" .
>>
>
> This is the relevant section in usr/src/cmd/stmsboot/stmsboot_util.c
>
> 1144 if (cap_N_option) {
> 1145 char *nodename = di_node_name(curnode);
> 1146 /* nodename is never going to be null */
> 1147 if (strstr(aliases, nodename) == NULL)
> 1148 /* haven't seen this nodename before */
> 1149 (void) snprintf(aliases,
> 1150 MAXPATHLEN + 1, "%s|%s",
> 1151 ((aliases != NULL) ? aliases : ""),
> 1152 nodename);
> 1153 } else
> 1154 (void) printf("%s\n", path);
>
The code seems a bit wrong, since aliases cannot be NULL (it
returns early before). calloc fills with 0-bytes, so
the simplest fix, avoiding strncat or such, would be:
if (strstr(aliases, nodename) == NULL)
(void) snprintf(aliases, MAXPATHLEN+1, "%s%s%s",
((*aliases == 0) ? "" : aliases),
((*aliases == 0) ? "" : "|"),
nodename);
And aliases and nodename (need free?) are not free()d after ...
[-- Attachment #1.2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5804 bytes --]
[-- Attachment #2: Type: text/plain, Size: 254 bytes --]
------------------------------------------
illumos: illumos-developer
Permalink: https://illumos.topicbox.com/groups/developer/Tf791f87e1cf696f7-Mb142d7df15d46c46afc7efe0
Delivery options: https://illumos.topicbox.com/groups/developer/subscription
prev parent reply other threads:[~2024-11-20 17:22 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-19 17:46 Udo Grabowski (IMK)
2024-11-19 18:00 ` Udo Grabowski (IMK)
2024-11-19 18:07 ` Udo Grabowski (IMK)
2024-11-19 18:13 ` Udo Grabowski (IMK)
2024-11-19 18:18 ` Udo Grabowski (IMK)
2024-11-20 17:20 ` Udo Grabowski (IMK) [this message]
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=f5258bed-7204-4e58-b8a1-8576e2580f7f@kit.edu \
--to=udo.grabowski@kit.edu \
--cc=developer@lists.illumos.org \
/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;
as well as URLs for NNTP newsgroup(s).