Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix partition initialization bug. #10702

Open
wants to merge 1 commit into
base: 3.0-dev
Choose a base branch
from
Open

Conversation

cwize1
Copy link
Contributor

@cwize1 cwize1 commented Oct 11, 2024

After creating a partition, the toolkit must wait for the partition device to be created (under /dev). However, the naming scheme of partitions is inconsistent, with both /dev/<name>XX and /dev/<name>pXX being used, depending on the device driver. So, the toolkit checks for both.

However, a problem occurs when the device name itself ends in a digit. If the disk device path is say /dev/loop1, then /dev/loop11 is also a valid disk device path. For such disks, the /dev/<name>pXX form must be used for partitions.

While the toolkit prioritizes /dev/loop1p1 over /dev/loop11, if the /dev/loop1p1 device doesn't exist yet and /dev/loop11 is in use, then the toolkit may pick the wrong device path for the partition.

This change fixes this by ignoring the /dev/<name>XX variant if the disk device path ends in a digit.


Merge Checklist

All boxes should be checked before merging the PR (just tick any boxes which don't apply to this PR)

  • The toolchain has been rebuilt successfully (or no changes were made to it)
  • The toolchain/worker package manifests are up-to-date
  • Any updated packages successfully build (or no packages were changed)
  • Packages depending on static components modified in this PR (Golang, *-static subpackages, etc.) have had their Release tag incremented.
  • Package tests (%check section) have been verified with RUN_CHECK=y for existing SPEC files, or added to new SPEC files
  • All package sources are available
  • cgmanifest files are up-to-date and sorted (./cgmanifest.json, ./toolkit/scripts/toolchain/cgmanifest.json, .github/workflows/cgmanifest.json)
  • LICENSE-MAP files are up-to-date (./LICENSES-AND-NOTICES/SPECS/data/licenses.json, ./LICENSES-AND-NOTICES/SPECS/LICENSES-MAP.md, ./LICENSES-AND-NOTICES/SPECS/LICENSE-EXCEPTIONS.PHOTON)
  • All source files have up-to-date hashes in the *.signatures.json files
  • sudo make go-tidy-all and sudo make go-test-coverage pass
  • Documentation has been updated to match any changes to the build system
  • Ready to merge
Does this affect the toolchain?

NO

Test Methodology
  • Ran image customizer UTs.
  • Manually built and tested installer ISO.

After creating a partition, the toolkit must wait for the partition
device to be created (under /dev). However, the naming scheme of
partitions is inconsistent, with both `/dev/<name>XX` and
`/dev/<name>pXX` being used, depending on the device driver. So, the
toolkit checks for both.

However, a problem occurs when the device name itself ends in a digit.
If the disk device path is say `/dev/loop1`, then `/dev/loop11` is also
a valid disk device path. For such disks, the `/dev/<name>pXX` form
must be used for partitions.

While the toolkit prioritizes `/dev/loop1p1` over `/dev/loop11`, if the
`/dev/loop1p1` device doesn't exist yet and `/dev/loop11` is in use,
then the toolkit may pick the wrong device path for the partition.

This change fixes this by ignoring the `/dev/<name>XX` variant if the
disk device path ends in a digit.

// If disk path ends in a digit, then the 'p<x>' style must be used.
// So, don't check the other style to avoid ambiguities. For example, /dev/loop1 vs. /dev/loop11.
// The is particularly relevant on Ubuntu, due to snap's use of loopback devices.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// The is particularly relevant on Ubuntu, due to snap's use of loopback devices.
// This is particularly relevant on Ubuntu, due to snap's use of loopback devices.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants