[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1088104: partman-auto-raid: Recipe delimiter parsing shortcoming restricts mdadm $EXTRA_ARGS



Package: partman-auto-raid
Version: 51
Severity: normal
Tags: d-i patch

Dear Maintainer,

I was trying to get a preseeded Debian installation to create a md software
RAID array with superblock version 1.0. To do that, one has to issue `mdadm
--create ... --metadata=1.0 ...` at array creation time.

partman-auto-raid's auto-raidcfg/create_raid() optionally consumes EXTRA_ARGS
from a pre-seeded partman-auto-raid/recipe (the 8th argument in a single
recipe record) key, which is documented in partman-auto-raid-recipe.txt[0].

By massaging the recipe correctly, it should be possible to supply
`--metadata=1.0` on mdadm's resulting argv.

HOWEVER, since recipe records are currently separated from each other by means
of any single . character (ASCII 0x2e, a dot), it is effectively impossible to
pass this argument to mdadm: There is a simple `while` loop near the end of
auto-raidcfg that will try to split the recipe string as returned by
confmodule's get_db() at each occurence of ., which breaks when the EXTRA_ARG
intended for mdadm's argv contains that particular character.

If the recipe record separator were to be changed to a single ASCII dot
surrounded by any amount of whitespace, which all the preseed examples I could
find in circulation on the web as well as in official Debian documentation
already follow, having any mdadm metadata specification that requires a . in
its optarg would become possible.

I created a merge request on salsa with two patches that implement the new,
fixed split logic available at [1], and hope you will find this useful.

Thanks for all the hard and fruitful work you all are doing - on Debian in
general, and d-i in particular! :)


[0]: https://sources.debian.org/src/debian-installer/20240914/doc/devel/partman-auto-raid-recipe.txt/
[1]: https://salsa.debian.org/installer-team/partman-auto-raid/-/merge_requests/3

-- System Information:
Debian Release: 12.8
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-27-amd64 (SMP w/2 CPU threads; PREEMPT)
Kernel taint flags: TAINT_USER
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled


Reply to: