Skip to content

Commit 5746249

Browse files
committed
libct/configs/validate: add IOPriority.Class validation
Signed-off-by: Kir Kolyshkin <[email protected]>
1 parent 7334ee0 commit 5746249

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

libcontainer/configs/validate/validator.go

+8
Original file line numberDiff line numberDiff line change
@@ -406,5 +406,13 @@ func ioPriority(config *configs.Config) error {
406406
if priority < 0 || priority > 7 {
407407
return fmt.Errorf("invalid ioPriority.Priority: %d", priority)
408408
}
409+
410+
switch class := config.IOPriority.Class; class {
411+
case specs.IOPRIO_CLASS_RT, specs.IOPRIO_CLASS_BE, specs.IOPRIO_CLASS_IDLE:
412+
// Valid class, do nothing.
413+
default:
414+
return fmt.Errorf("invalid ioPriority.Class: %q", class)
415+
}
416+
409417
return nil
410418
}

libcontainer/configs/validate/validator_test.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -847,15 +847,21 @@ func TestValidateIOPriority(t *testing.T) {
847847
testCases := []struct {
848848
isErr bool
849849
priority int
850+
class specs.IOPriorityClass
850851
}{
851-
{isErr: false, priority: 0},
852-
{isErr: false, priority: 7},
853-
{isErr: true, priority: -1},
852+
{isErr: false, priority: 0, class: specs.IOPRIO_CLASS_IDLE},
853+
{isErr: false, priority: 7, class: specs.IOPRIO_CLASS_RT},
854+
{isErr: false, priority: 3, class: specs.IOPRIO_CLASS_BE},
855+
// Invalid priority.
856+
{isErr: true, priority: -1, class: specs.IOPRIO_CLASS_BE},
857+
// Invalid class.
858+
{isErr: true, priority: 3, class: specs.IOPriorityClass("IOPRIO_CLASS_WOW")},
854859
}
855860

856861
for _, tc := range testCases {
857862
ioPriroty := configs.IOPriority{
858863
Priority: tc.priority,
864+
Class: tc.class,
859865
}
860866
config := &configs.Config{
861867
Rootfs: "/var",

0 commit comments

Comments
 (0)