ACK: [PATCH 0/4] LP:1928921 LRMv5 -- switch primary version handling to kernel-versions data set

Kleber Souza kleber.souza at canonical.com
Thu Jul 22 14:45:39 UTC 2021


On 22.07.21 00:13, Andy Whitcroft wrote:
> tl;dr move primary dkms-versions out of tree and consume those during package
> update time.
> 
> Currently the primary dkms-versions data is committed directly to the main
> kernel packages.  This allows this information to cascade reliably to all
> derivatives and their associated LRM packages.  It also ensures that the entire
> derivative (and dependants) tree has the same versions even if the archive
> changes in the middle of the SRU cycle.  However, once the primaries are closed
> it is increasingly hard to change this data.  Any partial tree update
> such as is needed during an LRM-only respin requires special handling which
> increases risk and complexity.
> 
> We could update the versions from the commited archive versions in every
> package, but this exposes us to risk of version skew between both derivatives
> and even within a dependant tree; this is particularly serious with Nvidia
> where only one version is valid in each nvidia series.
> 
> To address this we propose moving the dkms-versions data into its own
> repository[1].  This repository is then updated at the start of each cycle
> (more often if necessary) primarily as a cycle opening task.  The current cycle
> data is then pulled into the packages as they are ready to close ensuring the
> builds are still independant of the data-set.
> 
> It should be noted that the dkms-versions information is not static.  It
> commonly differs between SRU cycles.  When spinning (or respinning) a kernel
> you need to use the version set for that cycle, as updated during and for that
> cycle.  This is particularly important when respinning the previous cycle when
> the current cycle has already started with updated versions.
> 
> To this end the kernel-versions repository contains branches for each cycle
> (though typically these will be points in time of a linear progression of the
> version information).  This allows us to select the appropriate point in the
> history to extract those versions, while still allowing each of them to evolve
> as needed independantly.  This model is extended to include security spins
> (sYYYY.MM.DD form) which are selected from a private repository in the security
> team.  Updates to dkms-versions information is primarily performed by the
> `update-dkms-versions` script within the repository which understands the
> vaguaries of Nvidia versioning and the preferred pockets to scan.
> 
> In order to make selection of the appropriate spin to further select the right
> point in the kernel-versions history we desire the local tree to contain the
> associated cycle information.  We have recently started including the spin
> number in the debian*/tracking-bug file in the main kernel package.  By simply
> syncing this file into the other trees as needed, we can ensure this data is
> accurate in the majority case.  For security spins we will need to override it
> manually.
> 
> Following this email is a patch stack to update our LRM packages to LRMv5 which
> includes the new dkms-versions handling.  It consists of four patches which make
> up the proposed change.  I include them here to aid review:
> 
>    UBUNTU: [Packaging] update-version -- allow specification of the master version
>    UBUNTU: [Packaging] update-version -- call out to update-dkms-versions
>    UBUNTU: [Packaging] update-version -- copy over tracking-bug information
>    UBUNTU: [Packaging] update-dkms-versions -- update from kernel-versions
> 
> Rather than applying these manually to all of our 41 LRM packages I propose to
> apply this change via an automated update squashing these into an LRMv5 update; this
> mirrors the process we used for LRMv3 and LRMv4.
> 
> Proposing for all of our LRM packages.
> 
> Separatly we should include the same `update-dkms-versions` script in our main
> kernels as they also include the dkms-versions data; though they only consume
> the zfs and wireguard elements.  This replaces the existing
> `update-versions-dkms` script as we wish to change the frequency of use of this
> script and this change helps catch tooling which has not adapted.  I would
> propose applying that under the same bug.
> 
> Finally we would need to modify our processes to always run
> `update-dkms-versions` when present after `link-to-tracker` has run.
> 
> Comments.
> 
> -apw
> 
> [1] https://code.launchpad.net/~canonical-kernel/+git/kernel-versions
> 
> Branch: autogen5
> 
> Andy Whitcroft (4):
>    UBUNTU: [Packaging] update-dkms-versions -- update from kernel-versions
>    UBUNTU: [Packaging] update-version -- copy over tracking-bug information
>    UBUNTU: [Packaging] update-version -- call out to update-dkms-versions
>    UBUNTU: [Packaging] update-version -- allow specification of the master version
> 
>   update-dkms-versions | 150 +++++++++++++++++++++++++++++++++++++++++++
>   update-version       |  43 +++++++++----
>   2 files changed, 181 insertions(+), 12 deletions(-)
>   create mode 100755 update-dkms-versions
> 


Acked-by: Kleber Sacilotto de Souza <kleber.souza at canonical.com>

Thanks




More information about the kernel-team mailing list