Merge pull request #11387 from Rakshith-R/enc-osd-prepare/handle-stale-dm-dev

osd: remove stale dm device during osd-prepare-job
This commit is contained in:
Travis Nielsen
2022-12-08 11:26:09 -07:00
committed by GitHub
2 changed files with 21 additions and 3 deletions
+16 -3
View File
@@ -33,9 +33,10 @@ import (
)
const (
cryptsetupBinary = "cryptsetup"
dmsetupBinary = "dmsetup"
luksOpenCmdTimeOut = 90 * time.Second
cryptsetupBinary = "cryptsetup"
dmsetupBinary = "dmsetup"
luksOpenCmdTimeOut = 90 * time.Second
removeEncryptedDeviceCmdTimeOut = 30 * time.Second
)
var (
@@ -172,6 +173,18 @@ func openEncryptedDevice(context *clusterd.Context, disk, target, passphrase str
return nil
}
func removeEncryptedDevice(context *clusterd.Context, target string) error {
args := []string{"remove", "--force", target}
output, err := context.Executor.ExecuteCommandWithTimeout(removeEncryptedDeviceCmdTimeOut, "dmsetup", args...)
// ignore error if no device was found.
if err != nil {
return errors.Wrapf(err, "failed to remove dm device %q: %q", target, output)
}
logger.Debugf("successfully removed stale dm device %q", target)
return nil
}
func isCephEncryptedBlock(context *clusterd.Context, currentClusterFSID string, disk string) bool {
metadata, err := dumpLUKS(context, disk)
if err != nil {
+5
View File
@@ -974,6 +974,11 @@ func GetCephVolumeRawOSDs(context *clusterd.Context, clusterInfo *client.Cluster
}
target := oposd.EncryptionDMName(pvcName, oposd.DmcryptBlockType)
// remove stale dm device left by previous OSD.
err = removeEncryptedDevice(context, target)
if err != nil {
logger.Warningf("failed to remove stale dm device %q: %q", target, err)
}
err = openEncryptedDevice(context, block, target, passphrase)
if err != nil {
return nil, errors.Wrapf(err, "failed to open encrypted block device %q on %q", block, target)