| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This avoids unnecessary udev events, which in some cases were causing
udevd to trigger a kernel partition table reread, causing the kernel
to get out of sync with drakx.
In order to do so, the libparted bindings are enhanced so that we
manipulate a 'ped_disk' object:
- disk_open() returns such an object
- set_disk_type() is removed
- disk_commit() writes back the partition table and tell the kernel
about it
if we fails to write the partition table, we let
partition_table::write() fire an exceptionc
if we only have succeed in writing the partition table, we let
partition_table::write() try harder (umounting partitions before
trying againt to tell the kernel again)
- need_to_tell_kernel() is overrided
The last change is needed because we now tell the kernel about the new
partition layout in partition_table::gpt::write() when calling
disk_commit() while previously we were deferring that to
partition_table::write() which after having called the gpt's write()
calls tell_kernel() -> c::tell_kernel_to_reread_partition_table()
So we must tell partition_table::write() that telling the kernel to
reread the partition_table is not needed if we already succeeded in
that.
|
| |
|
| |
|
|
|
|
|
|
| |
Now we force the kernel to reread the partition table when we initialise
it, there's no need to also inform it that we've deleted all the existing
partitions.
|
|
|
|
|
|
|
|
| |
When performing an automatic install that uses the clear or clearall
option, we don't read the current partition table, so the current
partition table type was not getting recorded in $hd->{pt_table_type}.
This information is needed to determine whether a BIOS boot partition
is required.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit 532fd1d60df306e204bae79c5158ca2302739966, which
introduced a new bug when clearing GPT partitions in an interactive
session (mga#20264), and replaces it with a new solution.
When a partition table is initialised, we now add an 'init' action to
the $hd->{will_tell_kernel} list. This is used both by gpt::write()
(to clear the partition table) and by partition_table::tell_kernel()
(to force the kernel to reread the partition table). Previous changes
stored in $hd->{will_tell_kernel} are discarded, as they are no longer
of interest.
This also removes support for the will_tell_kernel 'force_reboot'
action, as nothing uses that any more.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
it's unused since commit 1daabebda57976579465e5c281eaa14088e0e37f
|
|
|
|
| |
eg: for ldetect & drakxtools
|
| |
|
|
|
|
|
|
| |
Needed for next commit
It could also be later used for drakx's lspci (like for ldetect's
lspcidrake)
|
|
|
|
|
| |
Even with previous commit, we still need a bunch of new python/scheme
modules
|
|
|
|
|
|
| |
Else it wants to much modules to ever track and we've RO path anyway.
Otherwise we might want to include guile-runtime's .go files too in
order to get rid of warnings.
|
|
|
|
| |
useful when doing a debug build
|
|
|
|
|
| |
rather than lost on console
printf() was introduced in commit 9e6b327ca2b1f46db62e0811fabf0a6cf0b114a7
|
|
|
|
| |
(mga#19234)
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
classic installer (mga#20074).
The automatic rescan of the partition table is triggered by udevd. The
udev rule that causes this is not present on the cut-down system that
runs the classic installer.
|
|
|
|
|
|
| |
This prevents disks/partitions being auto-mounted by e.g. Thunar
when drakdisk probes the disks or makes changes, which can lead
to disk corruption.
|
| |
|
|
|
|
|
| |
It's required by x11-driver-video, and removing that orphans all
the other required x11 video driver packages.
|
|
|
|
|
|
|
| |
This relaxes the rules in fs::any::is_boot_bios_part_needed to allow
the BIOS boot partition to be located on any disk, not just the disk
containing the root partition. It also ensures that a BIOS boot
partition is never forcibly required in a system with non-GPT disks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds a specific subroutine, fsedit::auto_allocate_boot_bios_parts
that detects if a BIOS boot partition is needed and allocates it if so.
This allows us to relax the rules in fs::any::is_boot_bios_part_needed
to allow the user to manually allocate the BIOS boot partition on a
different device if they so wish.
In the normal case that installation is confined to a single disk,
this will allocate a single BIOS boot partition on that disk. In
the rare case that installation is spread over multiple disks, it
will allocate a BIOS boot partition on every disk. Given that the
BIOS boot partitions are very small and that this is not a normal
use case (see mga#16055), this seems an acceptable quirk - and does
allow the user to then choose any disk when installing the boot
loader.
|
|
|
|
| |
The following patches want to use it outside the partition_table module.
|
|
|
|
|
|
|
|
|
|
|
| |
When telling the kernel about changes to a DOS partition table, if a
partition was deleted on a disk that also contained an Empty partition,
the kernel also removed the Empty partition from its cached partition
table (and renumbered the other partitions).
Experimentation showed that leaving the udev exec queue active whilst we
were telling the kernel about the changes fixed this problem, although I
don't have an explanation for why it does.
|
|
|
|
|
| |
This prevents misreporting of the partition type in diskdrake if they
located on top of an old partition that contained a valid file system.
|
|
|
|
|
|
| |
When doing a UEFI install, we add a fstab entry to mount the ESP on
/boot/EFI. This is neither required nor desirable when doing a legacy
boot install, even if an ESP is present on the disk.
|
|
|
|
|
|
|
| |
The subroutine isEmpty() is used to identify free space on the disk
(not DOS "Empty" partitions). Because we use a string to flag Empty
and BIOS_GRUB partitions, rather than a numeric value, the numeric
equality operator gives false positives.
|
|
|
|
|
|
|
|
|
| |
(mga#20074).
To minimise the changes this close to mga6 release (and until we fix
the bug in partition auto-allocation that mistakenly creates BIOS boot
partitions non-GPT disks), reuse the BIOS_GRUB flag for flagging Empty
partitions, as the real partition ID (0x00) is used to flag free space.
|
|
|
|
| |
v2 (tvignaud): enhance doc
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
automatically (mga#20074).
When no partitions on a DOS-partitioned disk are mounted, the kernel
automatically rescans the partition table when it is written to disk.
We shouldn't then try to update the kernel's view of the partition
table, as the list of deltas we have recorded is relative to the
previous state of the partition table, not the newly rescanned state.
The behaviour for other partition table types is unchanged.
v2 (tvignaud): just make base class assume the kernel doesn't reread, only mbr
subclass overrides need_to_tell_kernel() in order to be smarter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(mga#20074).
When no partitions on a DOS-partitioned disk are mounted, the kernel
automatically rescans the partition table when the file handle to the
raw device is released. Currently the code opens and closes the raw
device when writing the primary partition table and when writing each
extended partition table segment. As the extended partition table
segments form a linked list, this allows the kernel to get in and
rescan the table when the list is not in a coherent state. This patch
changes the code to open the raw device before writing the primary
partition table and to close it only after writing the last extended
partition table segment.
The behaviour for other partition table types is unchanged.
v2 (tvignaud): simplify by moving copies of noop funcs into the base class
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit bdac0595323a6417fb7365038c9777cde0060f58.
Many testers are seeing the
"I cannot read the partition table of device sda, it's too corrupted for me:("
message when the installer first examines the disks.
It's likely that when the installer examines the partition table on the
disk, that triggers the udev rule and causes the kernel to rescan the
partition table. Unfortunately this coincides with the installer reading
/proc/partitions to verify the kernel has the same view of the
partitions, which can catch /proc/partitions in a partially updated state.
After patching the ISO to remove the 60-block.rules file from stage 2,
no failures happen in the installer.
|