From adfcb488c11bbb7beb0eb69c0d7494e645f9b232 Mon Sep 17 00:00:00 2001 From: Maksim An Date: Thu, 7 Oct 2021 23:36:33 -0700 Subject: [PATCH] fix find/replace side effect Signed-off-by: Maksim An --- internal/guest/storage/pmem/pmem.go | 4 +-- internal/guest/storage/pmem/pmem_test.go | 32 ++++++++++++------------ internal/guest/storage/scsi/scsi.go | 13 +++++----- 3 files changed, 25 insertions(+), 24 deletions(-) diff --git a/internal/guest/storage/pmem/pmem.go b/internal/guest/storage/pmem/pmem.go index 34ea570474..681659f061 100644 --- a/internal/guest/storage/pmem/pmem.go +++ b/internal/guest/storage/pmem/pmem.go @@ -26,7 +26,7 @@ var ( unixMount = unix.Mount mountInternal = mount createZeroSectorLinearTarget = dm.CreateZeroSectorLinearTarget - createVerityTargetCalled = dm.CreateVerityTarget + createVerityTarget = dm.CreateVerityTarget removeDevice = dm.RemoveDevice ) @@ -107,7 +107,7 @@ func Mount(ctx context.Context, device uint32, target string, mappingInfo *prot. if verityInfo != nil { dmVerityName := fmt.Sprintf(verityDeviceFmt, device, verityInfo.RootDigest) - if devicePath, err = createVerityTargetCalled(mCtx, devicePath, dmVerityName, verityInfo); err != nil { + if devicePath, err = createVerityTarget(mCtx, devicePath, dmVerityName, verityInfo); err != nil { return err } defer func() { diff --git a/internal/guest/storage/pmem/pmem_test.go b/internal/guest/storage/pmem/pmem_test.go index 1d04c73ef6..be61d70b11 100644 --- a/internal/guest/storage/pmem/pmem_test.go +++ b/internal/guest/storage/pmem/pmem_test.go @@ -20,7 +20,7 @@ func clearTestDependencies() { osRemoveAll = nil unixMount = nil createZeroSectorLinearTarget = nil - createVerityTargetCalled = nil + createVerityTarget = nil removeDevice = nil mountInternal = mount } @@ -375,7 +375,7 @@ func Test_CreateVerityTargetCalled_And_Mount_Called_With_Correct_Parameters(t *t expectedSource := "/dev/pmem0" expectedTarget := "/foo" mapperPath := fmt.Sprintf("/dev/mapper/%s", expectedVerityName) - createVerityTargetCalledCalled := false + createVerityTargetCalled := false mountInternal = func(_ context.Context, source, target string) error { if source != mapperPath { @@ -386,13 +386,13 @@ func Test_CreateVerityTargetCalled_And_Mount_Called_With_Correct_Parameters(t *t } return nil } - createVerityTargetCalled = func(_ context.Context, source, name string, verity *prot.DeviceVerityInfo) (string, error) { - createVerityTargetCalledCalled = true + createVerityTarget = func(_ context.Context, source, name string, verity *prot.DeviceVerityInfo) (string, error) { + createVerityTargetCalled = true if source != expectedSource { - t.Errorf("expected createVerityTargetCalled source %s, got %s", expectedSource, source) + t.Errorf("expected createVerityTarget source %s, got %s", expectedSource, source) } if name != expectedVerityName { - t.Errorf("expected createVerityTargetCalled name %s, got %s", expectedVerityName, name) + t.Errorf("expected createVerityTarget name %s, got %s", expectedVerityName, name) } return mapperPath, nil } @@ -407,8 +407,8 @@ func Test_CreateVerityTargetCalled_And_Mount_Called_With_Correct_Parameters(t *t ); err != nil { t.Fatalf("unexpected Mount failure: %s", err) } - if !createVerityTargetCalledCalled { - t.Fatal("createVerityTargetCalled not called") + if !createVerityTargetCalled { + t.Fatal("createVerityTarget not called") } } @@ -441,13 +441,13 @@ func Test_CreateLinearTarget_And_CreateVerityTargetCalled_Called_Correctly(t *te } return mapperLinearPath, nil } - createVerityTargetCalled = func(_ context.Context, source, name string, verity *prot.DeviceVerityInfo) (string, error) { + createVerityTarget = func(_ context.Context, source, name string, verity *prot.DeviceVerityInfo) (string, error) { dmVerityCalled = true if source != mapperLinearPath { - t.Errorf("expected createVerityTargetCalled source %s, got %s", mapperLinearPath, source) + t.Errorf("expected createVerityTarget source %s, got %s", mapperLinearPath, source) } if name != expectedVerityTarget { - t.Errorf("expected createVerityTargetCalled target name %s, got %s", expectedVerityTarget, name) + t.Errorf("expected createVerityTarget target name %s, got %s", expectedVerityTarget, name) } return mapperVerityPath, nil } @@ -473,7 +473,7 @@ func Test_CreateLinearTarget_And_CreateVerityTargetCalled_Called_Correctly(t *te t.Fatal("expected createZeroSectorLinearTarget call") } if !dmVerityCalled { - t.Fatal("expected createVerityTargetCalled call") + t.Fatal("expected createVerityTarget call") } if !mountCalled { t.Fatal("expected mountInternal call") @@ -532,7 +532,7 @@ func Test_RemoveDevice_Called_For_VerityTarget_On_MountInternalFailure(t *testin mapperPath := fmt.Sprintf("/dev/mapper/%s", expectedVerityTarget) removeDeviceCalled := false - createVerityTargetCalled = func(_ context.Context, source, name string, verity *prot.DeviceVerityInfo) (string, error) { + createVerityTarget = func(_ context.Context, source, name string, verity *prot.DeviceVerityInfo) (string, error) { return mapperPath, nil } mountInternal = func(_ context.Context, _, _ string) error { @@ -586,12 +586,12 @@ func Test_RemoveDevice_Called_For_Both_Targets_On_MountInternalFailure(t *testin } return mapperLinearPath, nil } - createVerityTargetCalled = func(_ context.Context, source, name string, v *prot.DeviceVerityInfo) (string, error) { + createVerityTarget = func(_ context.Context, source, name string, v *prot.DeviceVerityInfo) (string, error) { if source != mapperLinearPath { - t.Errorf("expected createVerityTargetCalled to be called with %s, got %s", mapperLinearPath, source) + t.Errorf("expected createVerityTarget to be called with %s, got %s", mapperLinearPath, source) } if name != expectedVerityTarget { - t.Errorf("expected createVerityTargetCalled target %s, got %s", expectedVerityTarget, name) + t.Errorf("expected createVerityTarget target %s, got %s", expectedVerityTarget, name) } return mapperVerityPath, nil } diff --git a/internal/guest/storage/scsi/scsi.go b/internal/guest/storage/scsi/scsi.go index 1333dac43e..fbcebf3754 100644 --- a/internal/guest/storage/scsi/scsi.go +++ b/internal/guest/storage/scsi/scsi.go @@ -164,18 +164,19 @@ func Unmount(ctx context.Context, controller, lun uint8, target string, encrypte return errors.Wrapf(err, "unmounting scsi controller %d lun %d from %s denied by policy", controller, lun, target) } + // Unmount unencrypted device + if err := storage.UnmountPath(ctx, target, true); err != nil { + return errors.Wrapf(err, "unmount failed: "+target) + } + if verityInfo != nil { dmVerityName := fmt.Sprintf(verityDeviceFmt, controller, lun, verityInfo.RootDigest) if err := removeDevice(dmVerityName); err != nil { - return errors.Wrapf(err, "failed to remove dm verity target: %s", dmVerityName) + // Ignore failures, since the path has been unmounted at this point. + log.G(ctx).WithError(err).Debugf("failed to remove dm verity target: %s", dmVerityName) } } - // Unmount unencrypted device - if err := storage.UnmountPath(ctx, target, true); err != nil { - return errors.Wrapf(err, "unmount failed: "+target) - } - if encrypted { if err := crypt.CleanupCryptDevice(target); err != nil { return errors.Wrapf(err, "failed to cleanup dm-crypt state: "+target)