~dbungert/curtin:fs_pass_one

Last commit made on 2021-04-01
Get this branch:
git clone -b fs_pass_one https://git.launchpad.net/~dbungert/curtin
Only Dan Bungert can upload to this branch. If you are Dan Bungert please log in for upload directions.

Branch merges

Branch information

Name:
fs_pass_one
Repository:
lp:~dbungert/curtin

Recent commits

b24d7c0... by Dan Bungert

Updated policy: use /proc/filesystems to decide passno

The 'nodev' is intended to indicate
"whether the file system is mounted on a block device"
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/4/html/reference_guide/s2-proc-filesystems

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.

661d2c9... by Dan Bungert

fs_passno=1 unless overridden

Change the default passno for fstab to 1. Callers can choose their own
value. Note that with systemd, the only interesting values are 0 or 1.
Update docs to clarify that this value, and dump frequency, can be
chosen.

e113b05... by Michael Hudson-Doyle

storage_config: return one type: disk action per multipathed disk

Currently extract_storage_config returns one type: disk action
for every member of a multipathed disk and type: partition
actions for each partition of each disk. This works by generating
a type: disk action for each disk and ignoring the block device
data for the /dev/dm-X device for the multipathed disk.

But in groovy+, the udev rule from multipath-tools that has
always attempted to remove the devices nodes for the partitions
of a disk that is a multipath member actually succeeds, and
trying to generate a type: partition action for a partition with
no underlying device node makes things blow up.

Instead, this branch generates type: disk and type: partitions
actions from the /dev/dm-X nodes for the mutipathed disk and its
partitions, and ignores and disks and partitions that are members
of a multipathed disk.

LP: #1893818

f69ae88... by Ryan Harper

vmtest/centos: handle different paths to grub config

Centos images used to always have grub installed at
/boot/grub/grub.conf. The most recent build of centos70,
centos70/amd64/20210210_01/root-tgz, now has grub conf located at
/boot/grub2/grub.cfg. This patch checks for either path before
running the sed fixup command.

d3a86fe... by Michael Hudson-Doyle

Release 21.2

Bump the version in curtin/__init__.py to 21.2.

LP: #1913357

818db25... by Michael Hudson-Doyle

Revert "apt_config: stop using the deprecated apt-key command"

This reverts commit e099e32c5757b7aa0bc4fc2aeddb91d195a6df2b.

Unfortunately the gpg keys are not being added to the right place on
disk.

LP: #1912801

45877d0... by Michael Hudson-Doyle

partition_handler: fix NameError when reusing a vtoc partition

56cc9cc... by Dimitri John Ledkov

install_grub: convert in-target EFI loader path to ESP path.

When calling efibootmgr convert esp-mount/efi-loader to efi-loader path,
as efibootmgr variable needs to be relative to the ESP mount point root,
rather than the in-target root.

LP: #1906379

53ac301... by Michael Hudson-Doyle

block: fixes for verifying existing multipath partitions

Verifying a partition on a multipath disk currently fails for two
reasons:

 1. get_blockdev_for_partition does not know how to go from a multipath
    partition to a multipath disk, so sfdisk_info ends up calling sfdisk
    on the partition, which fails.
 2. sfdisk --json /dev/dm-X prints /dev/mapper paths for the partition
    paths but compares them against the fully deferenced /dev/dm-Y path
    for the partition.

2 is easily fixed by resolving symlinks before comparing nodes. 1
can be fixed with a little udev poking but then sys_block_path
returns paths like /sys/class/block/dm-1/dm-2 for a partition of
a multipath disk, which doesn't exist. Luckily, nodes for
partitions exist directly in /sys/class/block and have done since
/sys/class/block was added in 2008 (see kernel commit
edfaa7c36574f1bf09c65ad602412db9da5f96bf) so we can just remove
the call to get_blockdev_for_partition from sys_block_read.

ea15dfa... by Michael Hudson-Doyle

multipath: use udev DM_NAME for find_mpath_id, fix 4k sector calc

1) find_mpath_id asked multipathd to list all maps and read out the name
   (or wwid if no name) of the device from that and sometimes timed out,
   but this information is already present in udev as DM_NAME. And
   DM_NAME is the wwid if user_friendly_names is disabled, so there's no
   need to be conditional about that either.

2) fix calculating start and offset of partition on multipathed 4k disk

   calc_dm_partition_info returns start and offset in 512-byte sectors
   but calc_partition_info only adjusted the sectors in the
   non-multipath case.

   I also did some code tidying, including moving the responsibility for
   raising an exception if dmsetup produces no output to
   calc_dm_partition_info.

LP: #1878041