public inbox for developer@lists.illumos.org (since 2011-08)
 help / color / mirror / Atom feed
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

      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).