From bc08661d5baf4dda9e2ce1aa277d9250277b04d1 Mon Sep 17 00:00:00 2001 From: likun1 Date: Mon, 11 Aug 2025 07:39:20 -0400 Subject: [PATCH 1/2] fix calculation device major & minor number bug for iolimit --- pkg/services/iolimit/iolimit.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/services/iolimit/iolimit.go b/pkg/services/iolimit/iolimit.go index 131ebda..4b86560 100644 --- a/pkg/services/iolimit/iolimit.go +++ b/pkg/services/iolimit/iolimit.go @@ -350,8 +350,8 @@ func convertToMajorMinorImpl(deviceName string) (string, error) { if stat.Mode()&os.ModeDevice != 0 { sys := stat.Sys() if sysstat, ok := sys.(*syscall.Stat_t); ok { - major := (sysstat.Rdev >> 8) & 0xff - minor := sysstat.Rdev & 0xff + major := (sysstat.Rdev >> 8) & 0xfff + minor := (sysstat.Rdev & 0xff) | ((sysstat.Rdev >> 12) & 0xfff00) return fmt.Sprintf("%d:%d", major, minor), nil } } -- Gitee From 3bc673ee5a7841ad716a00804dbf7756737bf222 Mon Sep 17 00:00:00 2001 From: likun1 Date: Wed, 13 Aug 2025 02:20:09 -0400 Subject: [PATCH 2/2] use unix package functions instead of computing --- pkg/services/iolimit/iolimit.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/services/iolimit/iolimit.go b/pkg/services/iolimit/iolimit.go index 4b86560..1066055 100644 --- a/pkg/services/iolimit/iolimit.go +++ b/pkg/services/iolimit/iolimit.go @@ -23,6 +23,7 @@ import ( "strings" "syscall" + "golang.org/x/sys/unix" "isula.org/rubik/pkg/api" "isula.org/rubik/pkg/common/constant" "isula.org/rubik/pkg/common/log" @@ -350,8 +351,8 @@ func convertToMajorMinorImpl(deviceName string) (string, error) { if stat.Mode()&os.ModeDevice != 0 { sys := stat.Sys() if sysstat, ok := sys.(*syscall.Stat_t); ok { - major := (sysstat.Rdev >> 8) & 0xfff - minor := (sysstat.Rdev & 0xff) | ((sysstat.Rdev >> 12) & 0xfff00) + major := unix.Major(sysstat.Rdev) + minor := unix.Minor(sysstat.Rdev) return fmt.Sprintf("%d:%d", major, minor), nil } } -- Gitee