Merge pull request #10223 from giuseppe/improve-rootless-automatic-range-split

rootless: improve automatic range split
This commit is contained in:
OpenShift Merge Robot
2021-05-05 13:22:10 -04:00
committed by GitHub
2 changed files with 59 additions and 2 deletions

View File

@ -137,7 +137,7 @@ func GetAvailableGids() (int64, error) {
// It assumes availableMappings is sorted by ID.
func findIDInMappings(id int64, availableMappings []user.IDMap) *user.IDMap {
i := sort.Search(len(availableMappings), func(i int) bool {
return availableMappings[i].ID >= id
return availableMappings[i].ID <= id
})
if i < 0 || i >= len(availableMappings) {
return nil
@ -157,7 +157,7 @@ func MaybeSplitMappings(mappings []spec.LinuxIDMapping, availableMappings []user
overflow.Size = 0
consumed := 0
sort.Slice(availableMappings, func(i, j int) bool {
return availableMappings[i].ID < availableMappings[j].ID
return availableMappings[i].ID > availableMappings[j].ID
})
for {
cur := overflow

View File

@ -98,4 +98,61 @@ func TestMaybeSplitMappings(t *testing.T) {
if !reflect.DeepEqual(newMappings, desiredMappings) {
t.Fatal("wrong mappings generated")
}
mappings = []spec.LinuxIDMapping{
{
ContainerID: 0,
HostID: 0,
Size: 4,
},
}
desiredMappings = []spec.LinuxIDMapping{
{
ContainerID: 0,
HostID: 0,
Size: 1,
},
{
ContainerID: 1,
HostID: 1,
Size: 1,
},
{
ContainerID: 2,
HostID: 2,
Size: 1,
},
{
ContainerID: 3,
HostID: 3,
Size: 1,
},
}
availableMappings = []user.IDMap{
{
ID: 0,
ParentID: 0,
Count: 1,
},
{
ID: 1,
ParentID: 1,
Count: 1,
},
{
ID: 2,
ParentID: 2,
Count: 1,
},
{
ID: 3,
ParentID: 3,
Count: 1,
},
}
newMappings = MaybeSplitMappings(mappings, availableMappings)
if !reflect.DeepEqual(newMappings, desiredMappings) {
t.Fatal("wrong mappings generated")
}
}