virtcontainers: fc: properly remove jailed block device

When running a firecracker instance jailed, block devices
are not removed correctly, as the jailerRoot path is not
stripped from the PATCH command sent to the FC API.

This patch differentiates the jailed case from the non-jailed
one and allows the firecracker instance to be properly
terminated.

Fixes #2387

Signed-off-by: Anastassios Nanos <ananos@nubificus.co.uk>
(cherry picked from commit 64dd35ba4f)
This commit is contained in:
Anastassios Nanos 2021-08-04 16:23:07 +00:00
parent 8de95b7c3b
commit adcd2aeaea

View File

@ -1057,7 +1057,12 @@ func (fc *firecracker) hotplugBlockDevice(ctx context.Context, drive config.Bloc
fc.umountResource(driveID)
// use previous raw file created at createDiskPool, that way
// the resource is released by firecracker and it can be destroyed in the host
path = filepath.Join(fc.jailerRoot, driveID)
if fc.jailed {
// use path relative to the jail
path = filepath.Join("/", driveID)
} else {
path = filepath.Join(fc.jailerRoot, driveID)
}
}
return nil, fc.fcUpdateBlockDrive(ctx, path, driveID)