util: move kernel version functions to pkg/util/kernel

Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit is contained in:
Niels de Vos
2025-03-03 18:33:55 +01:00
committed by mergify[bot]
parent 542ed3de63
commit 15da101b1b
12 changed files with 322 additions and 266 deletions

View File

@ -24,6 +24,8 @@ import (
"strconv"
"strings"
"github.com/ceph/ceph-csi/pkg/util/kernel"
csicommon "github.com/ceph/ceph-csi/internal/csi-common"
"github.com/ceph/ceph-csi/internal/util"
"github.com/ceph/ceph-csi/internal/util/file"
@ -88,7 +90,7 @@ var (
// deepFlattenSupport holds the list of kernel which support mapping rbd
// image with deep-flatten image feature
//nolint:mnd // numbers specify Kernel versions.
deepFlattenSupport = []util.KernelVersion{
deepFlattenSupport = []kernel.KernelVersion{
{
Version: 5,
PatchLevel: 1,
@ -587,12 +589,12 @@ func flattenImageBeforeMapping(
if kernelRelease == "" {
// fetch the current running kernel info
kernelRelease, err = util.GetKernelVersion()
kernelRelease, err = kernel.GetKernelVersion()
if err != nil {
return err
}
}
if !util.CheckKernelSupport(kernelRelease, deepFlattenSupport) && !skipForceFlatten {
if !kernel.CheckKernelSupport(kernelRelease, deepFlattenSupport) && !skipForceFlatten {
feature, err = volOptions.checkImageChainHasFeature(ctx, librbd.FeatureDeepFlatten)
if err != nil {
return err

View File

@ -25,6 +25,8 @@ import (
"strings"
"time"
"github.com/ceph/ceph-csi/pkg/util/kernel"
"github.com/ceph/ceph-csi/internal/util"
"github.com/ceph/ceph-csi/internal/util/log"
@ -71,7 +73,7 @@ var (
hasNBD = true
hasNBDCookieSupport = false
kernelCookieSupport = []util.KernelVersion{
kernelCookieSupport = []kernel.KernelVersion{
{
Version: 5,
PatchLevel: 14,
@ -243,13 +245,13 @@ func SetRbdNbdToolFeatures() {
log.DefaultLog("nbd module loaded")
// fetch the current running kernel info
release, err := util.GetKernelVersion()
release, err := kernel.GetKernelVersion()
if err != nil {
log.WarningLogMsg("fetching current kernel version failed (%v)", err)
return
}
if !util.CheckKernelSupport(release, kernelCookieSupport) {
if !kernel.CheckKernelSupport(release, kernelCookieSupport) {
log.WarningLogMsg("kernel version %q doesn't support cookie feature", release)
return

View File

@ -29,6 +29,7 @@ import (
"time"
"github.com/ceph/ceph-csi/pkg/util/crypto"
"github.com/ceph/ceph-csi/pkg/util/kernel"
"github.com/ceph/ceph-csi/internal/rbd/types"
"github.com/ceph/ceph-csi/internal/util"
@ -245,28 +246,28 @@ var (
},
}
krbdLayeringSupport = []util.KernelVersion{
krbdLayeringSupport = []kernel.KernelVersion{
{
Version: 3,
PatchLevel: 8,
SubLevel: 0,
},
}
krbdStripingV2Support = []util.KernelVersion{
krbdStripingV2Support = []kernel.KernelVersion{
{
Version: 3,
PatchLevel: 10,
SubLevel: 0,
},
}
krbdExclusiveLockSupport = []util.KernelVersion{
krbdExclusiveLockSupport = []kernel.KernelVersion{
{
Version: 4,
PatchLevel: 9,
SubLevel: 0,
},
}
krbdDataPoolSupport = []util.KernelVersion{
krbdDataPoolSupport = []kernel.KernelVersion{
{
Version: 4,
PatchLevel: 11,
@ -279,19 +280,19 @@ var (
// Minimum kernel version should be 3.8, else it will return error.
func prepareKrbdFeatureAttrs() (uint64, error) {
// fetch the current running kernel info
release, err := util.GetKernelVersion()
release, err := kernel.GetKernelVersion()
if err != nil {
return 0, fmt.Errorf("fetching current kernel version failed: %w", err)
}
switch {
case util.CheckKernelSupport(release, krbdDataPoolSupport):
case kernel.CheckKernelSupport(release, krbdDataPoolSupport):
return librbd.FeatureDataPool, nil
case util.CheckKernelSupport(release, krbdExclusiveLockSupport):
case kernel.CheckKernelSupport(release, krbdExclusiveLockSupport):
return librbd.FeatureExclusiveLock, nil
case util.CheckKernelSupport(release, krbdStripingV2Support):
case kernel.CheckKernelSupport(release, krbdStripingV2Support):
return librbd.FeatureStripingV2, nil
case util.CheckKernelSupport(release, krbdLayeringSupport):
case kernel.CheckKernelSupport(release, krbdLayeringSupport):
return librbd.FeatureLayering, nil
}
log.ErrorLogMsg("kernel version is too old: %q", release)