LKML Archive on lore.kernel.org
 help / color / Atom feed
From: Bart Van Assche <bvanassche@acm.org>
To: Randy Dunlap <rdunlap@infradead.org>,
	Bradley LaBoon <blaboon@linode.com>,
	linux-kernel@vger.kernel.org,
	linux-scsi <linux-scsi@vger.kernel.org>
Subject: Re: SCSI device probing non-deterministic in 5.3
Date: Fri, 4 Oct 2019 08:39:01 -0700
Message-ID: <59eedd28-25d4-7899-7c3c-89fe7fdd4b43@acm.org> (raw)
In-Reply-To: <f6d6622d-a9a0-d7de-b5af-b7a885ee1b61@infradead.org>

On 10/3/19 2:19 PM, Randy Dunlap wrote:
> [add linux-scsi mailing list]
> 
> On 10/3/19 1:32 PM, Bradley LaBoon wrote:
>> Hello, LKML!
>>
>> Beginning with kernel 5.3 the order in which SCSI devices are probed and
>> named has become non-deterministic. This is a result of a patch that was
>> submitted to add asynchronous device probing (specifically, commit
>> f049cf1a7b6737c75884247c3f6383ef104d255a). Previously, devices would
>> always be probed in the order in which they exist on the bus, resulting
>> in the first device being named 'sda', the second device 'sdb', and so on.
>>
>> This is important in the case of mass VM deployments where many VMs are
>> created from a single base image. Partition UUIDs cannot be used in the
>> fstab of such an image because the UUIDs will be different for each VM
>> and are not known in advance. Normally you can't rely on device names
>> being consistent between boots, but with QEMU you can set the bus order
>> of each block device and thus we currently use that to control the
>> device order in the guest. With the introduction of the aforementioned
>> patch this is no longer possible and the device ordering is different on
>> every boot, resulting in the guest booting into an emergency shell
>> unless the devices randomly happen to be loaded in the expected order.
>>
>> I have created a patch which reverts back to the previous behavior, but
>> I wanted to open this topic to discussion before posting it. I'm not
>> totally familiar with the low-level details of SCSI device probing, so I
>> don't know if the non-deterministic device order was the intended
>> behavior of the patch or just a side-effect. If that is the intended
>> behavior then is there perhaps some other way to ensure a consistent
>> device ordering for a guest VM?

Have you already had a look at the /dev/disk/by-path directory? An 
example of the contents of that directory:

$ (cd /dev/disk/by-path && ls -l | grep /s)
lrwxrwxrwx 1 root root  9 Oct  3 16:49 pci-0000:00:02.0-ata-1 -> ../../sda
lrwxrwxrwx 1 root root  9 Oct  3 16:49 pci-0000:00:08.0-scsi-0:0:0:1 -> 
../../sr0

Have you considered to use these soft links in /etc/fstab?

In case using these links would be impractical: have you considered to 
add a udev rule that creates H:C:I:L soft links under a subdirectory of 
/dev, that makes these soft links point at the /dev/sd* device nodes and 
to use these soft links in /etc/fstab? That's probably a much more 
elegant solution than what has been proposed above.

As one can see the information that is needed to implement such a udev 
rule is already available in sysfs:

$ (cd /sys/class/scsi_device && ls -ld */device/block/*)
drwxr-xr-x 9 root root 0 Oct  3 16:48 2:0:0:1/device/block/sr0
drwxr-xr-x 9 root root 0 Oct  3 16:48 3:0:0:0/device/block/sda

Bart.

  reply index

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-03 20:32 Bradley LaBoon
2019-10-03 21:19 ` Randy Dunlap
2019-10-04 15:39   ` Bart Van Assche [this message]
2019-10-08 20:20     ` Bradley LaBoon

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=59eedd28-25d4-7899-7c3c-89fe7fdd4b43@acm.org \
    --to=bvanassche@acm.org \
    --cc=blaboon@linode.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=rdunlap@infradead.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

LKML Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/lkml/0 lkml/git/0.git
	git clone --mirror https://lore.kernel.org/lkml/1 lkml/git/1.git
	git clone --mirror https://lore.kernel.org/lkml/2 lkml/git/2.git
	git clone --mirror https://lore.kernel.org/lkml/3 lkml/git/3.git
	git clone --mirror https://lore.kernel.org/lkml/4 lkml/git/4.git
	git clone --mirror https://lore.kernel.org/lkml/5 lkml/git/5.git
	git clone --mirror https://lore.kernel.org/lkml/6 lkml/git/6.git
	git clone --mirror https://lore.kernel.org/lkml/7 lkml/git/7.git
	git clone --mirror https://lore.kernel.org/lkml/8 lkml/git/8.git
	git clone --mirror https://lore.kernel.org/lkml/9 lkml/git/9.git
	git clone --mirror https://lore.kernel.org/lkml/10 lkml/git/10.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 lkml lkml/ https://lore.kernel.org/lkml \
		linux-kernel@vger.kernel.org
	public-inbox-index lkml

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git