curtin:master

Last commit made on 2021-07-15
Get this branch:
git clone -b master https://git.launchpad.net/curtin
Members of curtin developers can upload to this branch. Log in for directions.

Branch merges

Branch information

Name:
master
Repository:
lp:curtin

Recent commits

1f663e5... by Michael Hudson-Doyle

fix tearing down ChrootableTarget when mounts appear while it is set up

There are several bug reports that boil down to
ChrootableTarget.__exit__ failing to unmount bind mounts with "target is
busy". For example, ssh-ing in while running tends to do this, because
that creates a mount in /run and then umounting /target/run fails
because of the sub mount. Fix this by marking the mountpoints
recursively private and then unmounting them recursively.

LP: #1928839
LP: #1934775

c6cc841... by Dan Bungert

Don't override PYTHON env var in bin/curtin

In curtin/bin/curtin, use the PYTHON variable if it has been set.
Continue to fallback to PY3OR2_PYTHON if not.

82765ab... by Michael Hudson-Doyle

disk_handler: check wipe field when deciding whether to reformat raids

Currently preserve=true for raid means "preserve the RAID array"
and ALSO "preserve the partition table". So change the
interpretation of preserve to be solely about preserving the
array and instead check the wipe field to decide if the array
should get a new partition table or not.

LP: #1932976

170a39b... by Michael Hudson-Doyle

storage_config: properly handle raid containers

040a36c... by Paride Legovini

pylintrc: explicitly list the DISTROS generated-members

For some obscure reason setting

  generated-members=DISTROS\.

in pylintrc makes the pylint run flaky, causing failures like:

curtin/commands/install_grub.py:93:19:
  E1101: Instance of 'Distros' has no 'debian' member (no-member)
curtin/commands/install_grub.py:155:28:
  E1101: Instance of 'Distros' has no 'redhat' member (no-member)

These failures:

 - happen on about 15% of the time, at least on Bionic
 - also happen with the latest stable version of pylint (2.8.2)
 - only happen on install_grub.py (which only refers to debian and redhat)
 - do not seem to happen on Impish.
 - possibly related: https://github.com/PyCQA/pylint/issues/1628

But the truth is I don't understand why generated-members=DISTROS\.
even works some of the time for some generated members. Let's replace
it with the explicit list of the (non auto-detected) generated members,
so it will always work, and we'll know why it does.

52b9fdd... by Michael Hudson-Doyle

block_meta: make preserve: true on a raid in a container work

Pass any supplied container name to raid_verify and on to md_check and
check it against the existing device.

Also tidy up a few other things in the raid verification code path: make
checking functions consistently raise ValueError on failure rather than
returning True / False and have the verification of raid level actually
check the level of the existing array.

This also fixes preserve: true on a raid0 array while we are there --
raid0 arrays do not have degraded or sync_action attributes.

204728a... by Ryan Norwood <email address hidden>

Fix NVMe validation for namespaces with UUID

NVMe namespaces are only verified if the wwn comes from either the
NGUID or EUI64. With NVMe 1.3 a third ID, UUID is now[1] supported for a
namespace. If it exists it takes precedence and the wwid in sysfs will
populate with that uuid and use a uuid.XXXXX format, which does not
validate correctly with the filter in curtin.

/sys/devices/virtual/nvme-subsystem/nvme-subsys0/\
nvme0/nvme0n1/wwid:uuid.289acd66-794d-439d-abd0-0396f6382936

1. https://lore.kernel.org/patchwork/patch/808637/

LP: #1925399

def7d5b... by Dan Bungert

meta_simple: handle multiple disks in storage config with dd-image

When scanning storage config for the target device to use with dd-image
install stop after finding a disk matching serial and grub_device true.

(Thanks to Ryan Harper and Lee Trager for good discussions and fix
 proposals)

LP: #1925722

d49d35b... by Dan Bungert

Use /proc/filesystems to decide passno

The 'nodev' is intended to indicate
"whether the file system is mounted on a block device"
https://red.ht/3toGT5b

Use this info to set nodev items to passno 0, and default to 1 for
non-nodev or if the filesystem isn't present there.
Except that /proc/filesystems doesn't list 'swap' or 'none', so special
case those to passno 0.

LP: #1717584, LP: #1785354

1ff27dd... by Michael Hudson-Doyle

block_meta: fix wiping of existing dasd partition

The partition verification code does not need the part_path variable in
this case but the partition wiping code does.