From 859b886e12eaaa09e8d588ca48da3930b97d28c5 Mon Sep 17 00:00:00 2001 From: Santosh Pillai Date: Thu, 10 Apr 2025 13:22:24 +0530 Subject: [PATCH] osd: fix osd disk cleanup for mpath setups ceph-volume raw list will return the main disk instead of the mpath setup. `ceph-volume lvm zap` on the main disks fails. This PR uses `lsblk /mnt/ ` to fetch the actual mapath disk and use it for cleaning Signed-off-by: Santosh Pillai (cherry picked from commit 1e9da0766e6bcae5fb4a9556d591582b59e6f7a2) --- pkg/daemon/ceph/osd/remove.go | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/pkg/daemon/ceph/osd/remove.go b/pkg/daemon/ceph/osd/remove.go index 676b76ee7..8cea71dcd 100644 --- a/pkg/daemon/ceph/osd/remove.go +++ b/pkg/daemon/ceph/osd/remove.go @@ -262,16 +262,19 @@ func DestroyOSD(context *clusterd.Context, clusterInfo *client.ClusterInfo, id i } logger.Infof("successfully destroyed osd.%d", osdInfo.ID) - if isPVC && osdInfo.Encrypted { - // remove the dm device + // in case of OSD on PVs, fetch the actual device name for the mounted /mnt/ + if isPVC { pvcName := os.Getenv(oposd.PVCNameEnvVarName) - target := oposd.EncryptionDMName(pvcName, oposd.DmcryptBlockType) - err = removeEncryptedDevice(context, target) - if err != nil { - return nil, errors.Wrapf(err, "failed to remove dm device %q", target) + + // remove the dm device + if osdInfo.Encrypted { + target := oposd.EncryptionDMName(pvcName, oposd.DmcryptBlockType) + err = removeEncryptedDevice(context, target) + if err != nil { + return nil, errors.Wrapf(err, "failed to remove dm device %q", target) + } } - // ceph-volume uses `/dev/mapper/*` for encrypted disks. This is not a block device. So we need to fetch the corresponding - // block device for cleanup using `ceph-volume lvm zap` + // fetch the actual device for cleanup blockPath := fmt.Sprintf("/mnt/%s", pvcName) diskInfo, err := clusterd.PopulateDeviceInfo(blockPath, context.Executor) if err != nil {