Bug 1048679 - Leap 42.2: udev 228-25.6.1 update broke boot with encrypted partitions on NVMe
Leap 42.2: udev 228-25.6.1 update broke boot with encrypted partitions on NVMe
Status: RESOLVED FIXED
: 1049359 1050299 1051354 1051741 (view as bug list)
Classification: openSUSE
Product: openSUSE Distribution
Classification: openSUSE
Component: Basesystem
Leap 42.2
x86-64 Other
: P2 - High : Major (vote)
: ---
Assigned To: systemd maintainers
E-mail List
:
Depends on: 1047598
Blocks:
  Show dependency treegraph
 
Reported: 2017-07-14 08:23 UTC by Sebastian Parschauer
Modified: 2017-09-14 22:35 UTC (History)
17 users (show)

See Also:
Found By: L3
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---
fbui: needinfo? (digulla)


Attachments
restore old nvme by-id symlinks (1.81 KB, patch)
2017-07-19 13:48 UTC, Franck Bui
Details | Diff
patch that restores the old by-id symlinks for NVME devices (1.88 KB, patch)
2017-07-20 09:17 UTC, Franck Bui
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Sebastian Parschauer 2017-07-14 08:23:48 UTC
Yesterday I've installed the udev 228-25.6.1 update and this morning I've tried to boot my system but looking for the partition for cr_home on NVMe timed out.

I had to fix /etc/crypttab to use
> /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887-part5
instead of
> /dev/disk/by-id/nvme-20025386261008f3a-part5
.

Looks like one of these in the changelog:
>   bd03ae2cc Export NVMe WWID udev attribute (#5348) (bsc#1038865)
>   f7f877939 rules: introduce disk/by-id (model_serial) symlinks for NVMe drives (#3974)
>   ac36e2fe3 rules: add NVMe rules (#3136)

Is it possible to do a fix here or does everybody affected have to use a workaround?
Comment 1 Sebastian Parschauer 2017-07-14 08:34:14 UTC
This is openSUSE-SU-2017:1844-1.
Comment 2 Mischa Salle 2017-07-14 14:10:54 UTC
I can confirm that I was bitten by this same bug, which left me locked out completely. Even though there is an easy (once you know how) workaround, I would raise the priority/severity.

I think this might be related to Tumbleweed bug
https://bugzilla.suse.com/show_bug.cgi?id=1047598

For your information, the format should be
  /dev/disk/by-id/nvme-${model}_${serial}-part?
where any spaces in model (or serial) must be replace by underscores and the final question mark obviously needs to be the right part.

You can probably get both via
  udevadm info --query=all --name=/dev/nvme0
use the resulting MAJOR and MINOR values to get the model and serial:
  cat /sys/dev/char/${major}:${minor}/model
  cat /sys/dev/char/${major}:${minor}/serial
Alternatively, you can use a new smartctl -a /dev/nvme0
Comment 3 Sebastian Parschauer 2017-07-14 14:28:56 UTC
Raising priority. This has been synced from SUSE-SU-2017:1773-1. So also SLES12-SP2 is affected.
Comment 4 Sebastian Parschauer 2017-07-14 15:17:26 UTC
(In reply to Mischa Salle from comment #2)
I think it's easier to use the new EUI-64/128 WWID symlink.

In my case it would have been editing:
> /dev/disk/by-id/nvme-20025386261008f3a-part5
to
> /dev/disk/by-id/nvme-eui.0025386261008f3a-part5

The first '2' is the type of ID and means EUI-64 here.
So that "2" became "-eui.".
Comment 5 Aaron Digulla 2017-07-15 10:30:02 UTC
Add me to the list.

I have managed to boot from the rescue system (Leap 42.2 installer USB stick, boot using "More..." and then "Rescue system").

I made a backup of the /boot folder to an USB stick. Use blkid to identify which partition to mount. It's one without TYPE="crypto_LUKS"

Now I have the initrd images on a laptop.

I know that the entries are in /etc/crypttab but how do I modify this file? How can I unpack the initrd image, change a file and pack it again?
Comment 6 Carmen Bianca Bakker 2017-07-15 10:53:14 UTC
(In reply to Aaron Digulla from comment #5)
> I know that the entries are in /etc/crypttab but how do I modify this file?
> How can I unpack the initrd image, change a file and pack it again?

See https://bugzilla.suse.com/show_bug.cgi?id=1047598#c7 for a workaround.
Comment 7 Aaron Digulla 2017-07-15 12:49:12 UTC
Would it be possible to check that the disks exist which are listed in /etc/crypttab?

The first check should be when running mkinitrd. That wouldn't have caught this problem early but it would catch similar problems.

The second check should be when the ramdisk tries to mount the devices. If the links aren't there, fail with a good error message (and stop dracut from printing 100 "Warning: dracut-initqueue timeout" messages while I try to fix the problem).

And a tiny script to chroot (with the mount --bind). If you forget the three mount --bind, then chroot will fail with "/bin/sh: No such file or directory" which is confusing.
Comment 8 Andreas Stieger 2017-07-16 08:43:48 UTC
folding into earlier bug

*** This bug has been marked as a duplicate of bug 1047598 ***
Comment 9 Franck Bui 2017-07-19 13:48:25 UTC
Created attachment 732968 [details]
restore old nvme by-id symlinks
Comment 10 Franck Bui 2017-07-19 13:49:32 UTC
Sebastian, could you try the patch from comment #9 and check if both following symlinks are present after rebooting ?

  /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887-part5
  /dev/disk/by-id/nvme-20025386261008f3a-part5

Thanks
Comment 11 Sebastian Parschauer 2017-07-20 07:04:19 UTC
I've patched /usr/lib/udev/rules.d/60-persistent-storage.rules and regenerated the initrd. After a reboot, only the broken

  /dev/disk/by-id/-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887

symlinks were gone. The link /dev/disk/by-id/nvme-20025386261008f3a-part5 isn't there.

> $ ls -l /dev/disk/by-id/* | grep nvme | grep -o "\/dev\/.*"
> /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887 -> ../../nvme0n1
> /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887-part1 -> ../../nvme0n1p1
> /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887-part2 -> ../../nvme0n1p2
> /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887-part5 -> ../../nvme0n1p5
> /dev/disk/by-id/nvme-SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887-part6 -> ../../nvme0n1p6
> /dev/disk/by-id/nvme-eui.0025386261008f3a -> ../../nvme0n1
> /dev/disk/by-id/nvme-eui.0025386261008f3a-part1 -> ../../nvme0n1p1
> /dev/disk/by-id/nvme-eui.0025386261008f3a-part2 -> ../../nvme0n1p2
> /dev/disk/by-id/nvme-eui.0025386261008f3a-part5 -> ../../nvme0n1p5
> /dev/disk/by-id/nvme-eui.0025386261008f3a-part6 -> ../../nvme0n1p6
Comment 12 Franck Bui 2017-07-20 07:16:34 UTC
Any chance I can have access to your system ? Thanks.
Comment 13 Franck Bui 2017-07-20 09:16:14 UTC
Ok after debugging this on Sebastian's setup, I'm attaching a new patch which seems to work.

Thanks Sebastian for your help.
Comment 14 Franck Bui 2017-07-20 09:17:12 UTC
Created attachment 733098 [details]
patch that restores the old by-id symlinks for NVME devices
Comment 15 Franck Bui 2017-07-20 09:18:50 UTC
Thomas, could you double check the last patch before we merge it on the affected branches (v228, v233 at least) ? Thanks.
Comment 16 Franck Bui 2017-07-20 09:36:07 UTC
Aaron, could you please give the second patch a try ?
Comment 17 Thomas Blume 2017-07-20 09:57:46 UTC
(In reply to Franck Bui from comment #15)
> Thomas, could you double check the last patch before we merge it on the
> affected branches (v228, v233 at least) ? Thanks.

Hm, you are not using the --export parameter to scsi_id to export the environment variables for an nvme device, but create your own one (ID_NVME_SERIAL_COMPAT) instead.
What was the problem using --export? Wouldn't be:

KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $devnode"

sufficient?
At least this would fit better into the scheme used for the other disk types.
Comment 18 Sebastian Parschauer 2017-07-20 10:22:50 UTC
(In reply to Thomas Blume from comment #17)
> (In reply to Franck Bui from comment #15)
> > Thomas, could you double check the last patch before we merge it on the
> > affected branches (v228, v233 at least) ? Thanks.
> 
> Hm, you are not using the --export parameter to scsi_id to export the
> environment variables for an nvme device, but create your own one
> (ID_NVME_SERIAL_COMPAT) instead.
> What was the problem using --export? Wouldn't be:
> 
> KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*",
> IMPORT{program}="scsi_id --export --whitelisted -d $devnode"
> 
> sufficient?
> At least this would fit better into the scheme used for the other disk types.

I'll check. The problem was that /sys/bus/nvme doesn't exist I guess.
Comment 19 Sebastian Parschauer 2017-07-20 10:46:30 UTC
(In reply to Thomas Blume from comment #17)
> What was the problem using --export? Wouldn't be:
> 
> KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*",
> IMPORT{program}="scsi_id --export --whitelisted -d $devnode"
> 
> sufficient?
> At least this would fit better into the scheme used for the other disk types.

That doesn't work it picks up "SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887" instead of "20025386261008f3a". And that link already exists.
Comment 20 Sebastian Parschauer 2017-07-20 10:50:14 UTC
The rule in line 23 shouldn't set the environment variable ID_SERIAL otherwise.
Comment 22 Thomas Blume 2017-07-20 11:27:09 UTC
(In reply to Sebastian Parschauer from comment #19)
> (In reply to Thomas Blume from comment #17)
> > What was the problem using --export? Wouldn't be:
> > 
> > KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*",
> > IMPORT{program}="scsi_id --export --whitelisted -d $devnode"
> > 
> > sufficient?
> > At least this would fit better into the scheme used for the other disk types.
> 
> That doesn't work it picks up "SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887"
> instead of "20025386261008f3a". And that link already exists.

Actually scsi_id --export creates multiple environment variables.
ID_SERIAL ist only one of them and on your machine apparently "SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887". 
"20025386261008f3a" must be stored in another variable and this is the one that should be used in the rule.

However, in my test, calling scsi_id without --export outputs the value of ID_SERIAL. That doesn't seem to be the case on your machine.
Comment 23 Sebastian Parschauer 2017-07-20 11:47:27 UTC
(In reply to Thomas Blume from comment #22)
> Actually scsi_id --export creates multiple environment variables.
> ID_SERIAL ist only one of them and on your machine apparently
> "SM951_NVMe_SAMSUNG_256GB__S27ENYAH202887". 
> "20025386261008f3a" must be stored in another variable and this is the one
> that should be used in the rule.
> 
> However, in my test, calling scsi_id without --export outputs the value of
> ID_SERIAL. That doesn't seem to be the case on your machine.

It is the case on my machine:

# /usr/lib/udev/scsi_id --whitelisted -d /dev/nvme0n1
20025386261008f3a

/usr/lib/udev/scsi_id --export --whitelisted -d /dev/nvme0n1
ID_SCSI=1
ID_VENDOR=NVMe
ID_VENDOR_ENC=NVMe\x20\x20\x20\x20
ID_MODEL=SM951_NVMe_SAMSU
ID_MODEL_ENC=SM951\x20NVMe\x20SAMSU
ID_REVISION=4D0Q
ID_TYPE=disk
ID_SERIAL=20025386261008f3a
ID_SERIAL_COMPAT=
ID_SERIAL_SHORT=0025386261008f3a
ID_SCSI_SERIAL=      S27ENYAH202887

This is how line 23 sets something different for ID_SERIAL:
> KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{model}=="?*", ENV{ID_SERIAL_SHORT}=="?*", ENV{ID_SERIAL}="$attr{model}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}-part%n"
Comment 24 Sebastian Parschauer 2017-07-20 12:02:24 UTC
To summarize: There are two bugs in the current compat rule for NVMe:

1. /sys/bus/nvme is assumed which doesn't exist
2. ID_SERIAL is used which is set to something different in line 23 of the persistent storage rules. So not getting the actual ID_SERIAL.
Comment 25 Thomas Blume 2017-07-20 12:43:53 UTC
(In reply to Sebastian Parschauer from comment #23)
> This is how line 23 sets something different for ID_SERIAL:
> > KERNEL=="nvme*[0-9]n*[0-9]p*[0-9]", ENV{DEVTYPE}=="partition", ATTRS{model}=="?*", ENV{ID_SERIAL_SHORT}=="?*", ENV{ID_SERIAL}="$attr{model}_$env{ID_SERIAL_SHORT}", SYMLINK+="disk/by-id/nvme-$env{ID_SERIAL}-part%n"

Indeed, overwriting ID_SERIAL with ID_SERIAL_SHORT looks really broken.
Not sure what would be the use of this.
Comment 26 Franck Bui 2017-07-21 06:43:01 UTC
(In reply to Thomas Blume from comment #17)
> (In reply to Franck Bui from comment #15)
> > Thomas, could you double check the last patch before we merge it on the
> > affected branches (v228, v233 at least) ? Thanks.
> 
> Hm, you are not using the --export parameter to scsi_id to export the
> environment variables for an nvme device, but create your own one
> (ID_NVME_SERIAL_COMPAT) instead.
> What was the problem using --export? Wouldn't be:
> 
> KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*",
> IMPORT{program}="scsi_id --export --whitelisted -d $devnode"
> 
> sufficient?
> At least this would fit better into the scheme used for the other disk types.

As you already noted "--export" defines several env vars and I think it's better if we avoid to overwrite those from the compat rule that might have been already defined by the "upstream" rule.

Without "--export", scsi_id outputs the serial number we're interested in, i.e. the one used to create the old symlink.

Hope that makes sense.
Comment 27 Franck Bui 2017-07-21 06:44:25 UTC
Let's re-open this bug as it's different from bug 1047598 which is about the absence of /usr/lib/udev/compat-symlink-generation in the installation system.
Comment 28 Franck Bui 2017-07-21 06:47:21 UTC
(In reply to Sebastian Parschauer from comment #24)
> To summarize: There are two bugs in the current compat rule for NVMe:
> 
> 1. /sys/bus/nvme is assumed which doesn't exist

Hmm, I don't see where this one comes from.

> 2. ID_SERIAL is used which is set to something different in line 23 of the
> persistent storage rules. So not getting the actual ID_SERIAL.

I think this is addressed by the patch, no ?
Comment 30 Sebastian Parschauer 2017-07-21 08:30:34 UTC
(In reply to Franck Bui from comment #28)
> > 1. /sys/bus/nvme is assumed which doesn't exist
> 
> Hmm, I don't see where this one comes from.

I mean the 'ENV{UD_BUS}="nvme"' in
> KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="nvme"
 
> > 2. ID_SERIAL is used which is set to something different in line 23 of the
> > persistent storage rules. So not getting the actual ID_SERIAL.
> 
> I think this is addressed by the patch, no ?

Yes, both these issues are addressed by your patch. I just had to explain everything for Thomas again why/how your patch fixes this.
Comment 34 Thomas Blume 2017-07-21 09:07:27 UTC
(In reply to Sebastian Parschauer from comment #30)
> (In reply to Franck Bui from comment #28)
> > > 1. /sys/bus/nvme is assumed which doesn't exist
> > 
> > Hmm, I don't see where this one comes from.
> 
> I mean the 'ENV{UD_BUS}="nvme"' in
> > KERNEL=="nvme*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode", ENV{ID_BUS}="nvme"
>  
> > > 2. ID_SERIAL is used which is set to something different in line 23 of the
> > > persistent storage rules. So not getting the actual ID_SERIAL.
> > 
> > I think this is addressed by the patch, no ?
> 
> Yes, both these issues are addressed by your patch. I just had to explain
> everything for Thomas again why/how your patch fixes this.

Hm, the patch makes sure that ID_SERIAL is used, but this looks like a workaround.
Shouldn't we rather find out why ID_SERIAL gets overwritten by ID_SERIAL_SHORT? I don't see any reason therefore in the initial upstream request at: https://github.com/systemd/systemd/issues/1453
Why should nvme device treated differently from other block devices (e.g. scsi or cciss)?
Hannes, according to the header of 60-persistent-storage.rules you are the creator of the Linux persistent device names scheme. Could you give a statement about the usage of ID_SERIAL_SHORT versus ID_SERIAL?
Comment 35 Franck Bui 2017-07-21 09:37:55 UTC
(In reply to Thomas Blume from comment #34)
> Shouldn't we rather find out why ID_SERIAL gets overwritten by
> ID_SERIAL_SHORT? I don't see any reason therefore in the initial upstream
> request at: https://github.com/systemd/systemd/issues/1453
> Why should nvme device treated differently from other block devices (e.g.
> scsi or cciss)?

According to https://github.com/systemd/systemd/issues/1453#issuecomment-145231313, no SCSI is involved and the kernel is supposed to export the relevant bit in sysfs and systemd should use them.
Comment 36 Thomas Blume 2017-07-21 10:19:18 UTC
(In reply to Franck Bui from comment #35)
> (In reply to Thomas Blume from comment #34)
> > Shouldn't we rather find out why ID_SERIAL gets overwritten by
> > ID_SERIAL_SHORT? I don't see any reason therefore in the initial upstream
> > request at: https://github.com/systemd/systemd/issues/1453
> > Why should nvme device treated differently from other block devices (e.g.
> > scsi or cciss)?
> 
> According to
> https://github.com/systemd/systemd/issues/1453#issuecomment-145231313, no
> SCSI is involved and the kernel is supposed to export the relevant bit in
> sysfs and systemd should use them.

Exporting the information via sysfs doesn't seem to be implemtend in the kernel yet. 
But thanks for pointing this out, in this light, scsi_id is probably not the right tool to extract the device information for nvme disks.
I've checked on an orthos machine and saw this:

cage:/sys/block/nvme0n1/:[127]# /lib/udev/scsi_id --export --whitelisted -d /dev/nvme0n1 
ID_SCSI=1
ID_VENDOR=NVMe
ID_VENDOR_ENC=NVMe\x20\x20\x20\x20
ID_MODEL=Linux
ID_MODEL_ENC=Linux
ID_REVISION=73-5
ID_TYPE=disk
ID_SERIAL=SNVMe_Linux
ID_SERIAL_COMPAT=
ID_SERIAL_SHORT=
ID_SCSI_SERIAL=54893f3e68f807f6

So, neither ID_SERIAL or ID_SERIAL_SHORT seem to be the best to provide an uniqe identifier. Questions is whether ID_SCSI_SERIAL is present on all nvme devices.
Comment 37 Thomas Blume 2017-07-21 10:22:05 UTC
Running scsi_id without --export seems to be worse:

cage:~/:[0]# /lib/udev/scsi_id --whitelisted -d /dev/nvme0n1 
SNVMe    Linux
cage:~/:[0]#
Comment 38 Sebastian Parschauer 2017-07-21 11:31:05 UTC
(In reply to Thomas Blume from comment #36)
> cage:/sys/block/nvme0n1/:[127]# /lib/udev/scsi_id --export --whitelisted -d
> /dev/nvme0n1 
> ID_SCSI=1
> ID_VENDOR=NVMe
> ID_VENDOR_ENC=NVMe\x20\x20\x20\x20
> ID_MODEL=Linux
> ID_MODEL_ENC=Linux
> ID_REVISION=73-5
> ID_TYPE=disk
> ID_SERIAL=SNVMe_Linux
> ID_SERIAL_COMPAT=
> ID_SERIAL_SHORT=
> ID_SCSI_SERIAL=54893f3e68f807f6
> 
> So, neither ID_SERIAL or ID_SERIAL_SHORT seem to be the best to provide an
> uniqe identifier. Questions is whether ID_SCSI_SERIAL is present on all nvme
> devices.

Please ignore system "cage". This is "NVMe over Fabrics" which is in development. So there is no physical NVMe SSD in this system.

> systool -vc nvme

shows the "rdma" transport.
Comment 39 Franck Bui 2017-07-21 11:37:43 UTC
(In reply to Thomas Blume from comment #36)
> 
> So, neither ID_SERIAL or ID_SERIAL_SHORT seem to be the best to provide an
> uniqe identifier. Questions is whether ID_SCSI_SERIAL is present on all nvme
> devices.

I'm not sure to follow you.

The point is not to provide the best by-id symlink for NVME devices but it's to restore the old one.

And the old one was basically given by ID_SERIAL from "scsi_id --export". This can also retrieve by "scsi_id --replace-whitespace" and that's what the patch is using.
Comment 40 Franck Bui 2017-07-21 11:39:49 UTC
(In reply to Thomas Blume from comment #37)
> Running scsi_id without --export seems to be worse:
> 
> cage:~/:[0]# /lib/udev/scsi_id --whitelisted -d /dev/nvme0n1 
> SNVMe    Linux

This command returns the same value as the content of ID_SERIAL that "--export" returns except that you need to use "--replace-whitespace" as well.
Comment 59 Aaron Digulla 2017-07-21 15:46:48 UTC
I'd like to try the patch but I need more instructions how. Can I do that on the running system? If so, what commands do I need to run after patching the file?

That said, here is my output of scsi_id:

ID_SCSI=1
ID_VENDOR=NVMe
ID_VENDOR_ENC=NVMe\x20\x20\x20\x20
ID_MODEL=Samsung_SSD_960
ID_MODEL_ENC=Samsung\x20SSD\x20960\x20
ID_REVISION=CXE7
ID_TYPE=disk
ID_SERIAL=20025385171b02e7b
ID_SERIAL_COMPAT=
ID_SERIAL_SHORT=0025385171b02e7b
ID_SCSI_SERIAL=S3EUNX0J105448H

Something that I noticed: Some links in /dev/disk/by-id/ are missing the leading "2": nvme-eui.0025385171b02e7b. That's confusing.

Also, please patch the boot scripts. The script should read /etc/crypttab and check whether the devices in there actually exist. If one doesn't exist, I'd like a menu:

"Device .... not found. Please select one from the list below:

1. ...
2. ...
"

I think the output of "lsblk" would be easier to use to pick a device than the device IDs.
Comment 60 Franck Bui 2017-07-21 15:53:13 UTC
(In reply to Aaron Digulla from comment #59)
> I'd like to try the patch but I need more instructions how. Can I do that on
> the running system? If so, what commands do I need to run after patching the
> file?

Yes, you can patch the file on a running system.

Once done you can run "mkinitrd" to include the patched rule file in initrd.

Then you can reboot and see if the old symlinks in /dev/by-id are restored.

Thanks.
Comment 61 Sebastian Parschauer 2017-07-24 08:35:11 UTC
@Mischa: Can you please also provide the output of the following command:

> /usr/lib/udev/scsi_id --export --whitelisted -d /dev/nvme0n1

? TIA
Comment 63 Mischa Salle 2017-07-24 08:56:33 UTC
(In reply to Sebastian Parschauer from comment #61)
> @Mischa: Can you please also provide the output of the following command:
> 
> > /usr/lib/udev/scsi_id --export --whitelisted -d /dev/nvme0n1
> 
> ? TIA

sure, hereby:

ID_SCSI=1
ID_VENDOR=NVMe
ID_VENDOR_ENC=NVMe\x20\x20\x20\x20
ID_MODEL=INTEL_SSDPEKKW01
ID_MODEL_ENC=INTEL\x20SSDPEKKW01
ID_REVISION=109C
ID_TYPE=disk
ID_SERIAL=20000000001000000e4d25c96229a4d01
ID_SERIAL_COMPAT=
ID_SERIAL_SHORT=0000000001000000e4d25c96229a4d01
ID_SCSI_SERIAL=BTPY65320H8F1P0H
Comment 64 Sebastian Parschauer 2017-07-24 09:17:11 UTC
(In reply to Mischa Salle from comment #63)
Thanks, your Intel NVMe device uses an EUI-128 ID for ID_SERIAL. There are other Intel NVMe devices which use a SCSI name string instead.
Comment 66 Mischa Salle 2017-07-24 09:28:54 UTC
(In reply to Sebastian Parschauer from comment #64)
> (In reply to Mischa Salle from comment #63)
> Thanks, your Intel NVMe device uses an EUI-128 ID for ID_SERIAL. There are
> other Intel NVMe devices which use a SCSI name string instead.

Hi,

just for your information: originally my LEAP installation was using
nvme-20000000001000000e4d25c96229a4d01-part2
as ID, and did *not* have the -INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2 ID (i.e. the ones without nvme). With the update, the original one disappeared, and I now have
  -INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2
  nvme-eui.0000000001000000e4d25c96229a4d01-part2
  nvme-INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2
missing the original one. I've change my crypttab to use the last one (nvme-INTEL...), but that's of course up to taste.
It's fine to add more IDs, just not to remove the existing ones (-;

By the way, any thoughts on my remark about making a backup of the initrd?
Comment 67 Sebastian Parschauer 2017-07-24 09:43:59 UTC
(In reply to Mischa Salle from comment #66)
> just for your information: originally my LEAP installation was using
> nvme-20000000001000000e4d25c96229a4d01-part2
> as ID, and did *not* have the -INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2 ID
> (i.e. the ones without nvme). With the update, the original one disappeared,
> and I now have
>   -INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2
>   nvme-eui.0000000001000000e4d25c96229a4d01-part2
>   nvme-INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2
> missing the original one. I've change my crypttab to use the last one
> (nvme-INTEL...), but that's of course up to taste.
> It's fine to add more IDs, just not to remove the existing ones (-;

The link "-INTEL_SSDPEKKW010T7_BTPY65320H8F1P0H-part2" is broken. It was ment to provide the nvme-20000000001000000e4d25c96229a4d01-part2 compatibility symlink with scsi_id but that doesn't work as the compat rules conflict with the upstream rules. See the attached patch.

> By the way, any thoughts on my remark about making a backup of the initrd?

That would be a feature request (https://features.opensuse.org/).
Comment 70 Mischa Salle 2017-07-24 13:25:52 UTC
(In reply to Sebastian Parschauer from comment #67)
> (In reply to Mischa Salle from comment #66)
>
> > By the way, any thoughts on my remark about making a backup of the initrd?
> 
> That would be a feature request (https://features.opensuse.org/).

Good point, hereby https://features.opensuse.org/323795
Comment 75 Franck Bui 2017-07-24 18:57:05 UTC
*** Bug 1050299 has been marked as a duplicate of this bug. ***
Comment 78 Hannes Reinecke 2017-07-25 09:14:22 UTC
While discussing all this, of course you are aware that scsi_id is about to be deprecated (and removed) upstream, right?

We already _do_ provide complete alternative functionality via the sg3_utils rules, so we can well live without scsi_id here.

And for NVMe we should be providing compability symlinks to keep existing setups intact; but there's no need to use scsi_id here, sysfs should provide all the required information. If not we should be making it so.
Comment 81 Franck Bui 2017-07-25 16:36:19 UTC
(In reply to Hannes Reinecke from comment #78)
> 
> We already _do_ provide complete alternative functionality via the sg3_utils
> rules, so we can well live without scsi_id here.
> 

So why not submitting a patch to upstream that removes the SCSI rules from 60-persistent-storage.rules and explaining that sg3_utils has taken over ? 

BTW scsi_id is also used by cciss devices. Can sg3_utils take care of them ?

Otherwise we would need to change the relevant rules to replace scsi_id with a tool provided by sg3_utils. That would make udev depend on sg3_utils but since the number of deps of the later is low that wouldn't be a problem I think.

Also are the rules/tools shipped by sg3_utils also deals with those compat symlinks ?

  https://github.com/openSUSE/systemd/commit/f2eb26c05621748795c69122530b8800d0507104

> And for NVMe we should be providing compability symlinks to keep existing
> setups intact; but there's no need to use scsi_id here, sysfs should provide
> all the required information. If not we should be making it so.

Apparently this is the case, please see the previous comments.

You can take a look on blueshark4 machine.
Comment 84 Hannes Reinecke 2017-07-26 08:00:54 UTC
(In reply to Franck Bui from comment #81)
> (In reply to Hannes Reinecke from comment #78)
> > 
> > We already _do_ provide complete alternative functionality via the sg3_utils
> > rules, so we can well live without scsi_id here.
> > 
> 
> So why not submitting a patch to upstream that removes the SCSI rules from
> 60-persistent-storage.rules and explaining that sg3_utils has taken over ? 
> 
> BTW scsi_id is also used by cciss devices. Can sg3_utils take care of them ?
> 
Yes. scsi_id and sg3_utils both use the same ioctl, so there no difference to the driver.

> Otherwise we would need to change the relevant rules to replace scsi_id with
> a tool provided by sg3_utils. That would make udev depend on sg3_utils but
> since the number of deps of the later is low that wouldn't be a problem I
> think.
> 
> Also are the rules/tools shipped by sg3_utils also deals with those compat
> symlinks ?
> 
>  
> https://github.com/openSUSE/systemd/commit/
> f2eb26c05621748795c69122530b8800d0507104
> 
It should be, but I'll take a look.
Comment 87 Franck Bui 2017-07-26 13:50:16 UTC
I discussed with Thomas and we came to the conclusion that it's safer and quicker for now to restore the old NVMe symlinks via scsi_id like it was done before.

So we'll have more time to implement and test the replacement of scsi_id with the use of the sysfs attributes.
Comment 88 Franck Bui 2017-07-26 14:00:35 UTC
(In reply to Hannes Reinecke from comment #84)
> (In reply to Franck Bui from comment #81)
> > 
> > BTW scsi_id is also used by cciss devices. Can sg3_utils take care of them ?
> > 
> Yes. scsi_id and sg3_utils both use the same ioctl, so there no difference
> to the driver.
> 

Could you let us know when you'll take over the cciss devices so we can suggest to upstream the removal of scsi_id since cciss seems to be the last user of scsi_id ?
Comment 92 Dariusz Ostolski 2017-07-27 06:51:37 UTC
*** Bug 1049359 has been marked as a duplicate of this bug. ***
Comment 93 Franck Bui 2017-07-27 12:18:26 UTC
The fix posted in comment #14 has been merged in v228 and v234 so I think this  bug can be closed.

However the use of scsi_id for generating the compat symlinks for NVMe devices still needs to be replaced. I think Thomas will work on that.

Thomas, could you give the relevant links in case you'll open a new issue to address this ? Thanks.
Comment 95 Philipp Bielefeldt 2017-08-04 06:04:20 UTC
*** Bug 1051741 has been marked as a duplicate of this bug. ***
Comment 96 Swamp Workflow Management 2017-08-15 22:07:42 UTC
SUSE-RU-2017:2172-1: An update that has two recommended fixes can now be installed.

Category: recommended (important)
Bug References: 1048679,874665
CVE References: 
Sources used:
SUSE Linux Enterprise Software Development Kit 12-SP3 (src):    systemd-228-150.12.4
SUSE Linux Enterprise Software Development Kit 12-SP2 (src):    systemd-228-150.12.4
SUSE Linux Enterprise Server for Raspberry Pi 12-SP2 (src):    systemd-228-150.12.4
SUSE Linux Enterprise Server 12-SP3 (src):    systemd-228-150.12.4
SUSE Linux Enterprise Server 12-SP2 (src):    systemd-228-150.12.4
SUSE Linux Enterprise Desktop 12-SP3 (src):    systemd-228-150.12.4
SUSE Linux Enterprise Desktop 12-SP2 (src):    systemd-228-150.12.4
SUSE Container as a Service Platform ALL (src):    systemd-228-150.12.4
OpenStack Cloud Magnum Orchestration 7 (src):    systemd-228-150.12.4
Comment 97 Swamp Workflow Management 2017-08-16 22:11:55 UTC
openSUSE-RU-2017:2191-1: An update that has two recommended fixes can now be installed.

Category: recommended (important)
Bug References: 1048679,874665
CVE References: 
Sources used:
openSUSE Leap 42.3 (src):    systemd-228-32.2, systemd-mini-228-32.2
openSUSE Leap 42.2 (src):    systemd-228-25.12.1, systemd-mini-228-25.12.1
Comment 98 Thomas Blume 2017-09-05 13:50:55 UTC
*** Bug 1051354 has been marked as a duplicate of this bug. ***
Comment 99 Swamp Workflow Management 2017-09-14 19:21:39 UTC
SUSE-SU-2017:2470-1: An update that solves 18 vulnerabilities and has 46 fixes is now available.

Category: security (important)
Bug References: 1004995,1009745,1014471,1017420,1019637,1026825,1027079,1027688,1027908,1028281,1028723,1029523,1031756,1032706,1033236,1035062,1036659,1038132,1038444,1038984,1042392,1043218,1043333,1044095,1044107,1044175,1044840,1045384,1045735,1045987,1046268,1046417,1046659,1046853,1046858,1047008,1047236,1047240,1047310,1047379,1047785,1047964,1047965,1048315,1048483,1048605,1048679,1048715,1049344,1050396,1050484,1051626,1051643,1051644,1052030,1052759,1053409,874665,902364,938657,944903,954661,960820,963041
CVE References: CVE-2013-7459,CVE-2016-9063,CVE-2017-1000100,CVE-2017-1000101,CVE-2017-10684,CVE-2017-10685,CVE-2017-11112,CVE-2017-11113,CVE-2017-3308,CVE-2017-3309,CVE-2017-3453,CVE-2017-3456,CVE-2017-3464,CVE-2017-7435,CVE-2017-7436,CVE-2017-8872,CVE-2017-9233,CVE-2017-9269
Sources used:
SUSE Container as a Service Platform ALL (src):    caasp-container-manifests-0.0.0+git_r155_93e40ab-2.3.3, container-feeder-0.0.0+20170901.git_r55_17ecbd3-2.3.3, sles12-mariadb-docker-image-1.1.0-2.3.10, sles12-pause-docker-image-1.1.0-2.3.11, sles12-pv-recycler-node-docker-image-1.1.0-2.3.10, sles12-salt-api-docker-image-1.1.0-2.3.9, sles12-salt-master-docker-image-1.1.0-4.3.10, sles12-salt-minion-docker-image-1.1.0-2.3.8, sles12-velum-docker-image-1.1.0-4.3.9