From f54d3b52f219052bec46e4e92e12b006d197a016 Mon Sep 17 00:00:00 2001
From: huweiwen <huweiwen.hww@alibaba-inc.com>
Date: Wed, 16 Aug 2023 15:22:50 +0800
Subject: [PATCH] NodeUnstageVolume: don't delete target dir

---
 pkg/dbfs/nodeserver.go |  6 ------
 pkg/disk/nodeserver.go |  6 ------
 pkg/ens/nodeserver.go  |  6 ------
 pkg/utils/mounter.go   | 30 ------------------------------
 4 files changed, 48 deletions(-)

diff --git a/pkg/dbfs/nodeserver.go b/pkg/dbfs/nodeserver.go
index 803ab3dc8..597684237 100644
--- a/pkg/dbfs/nodeserver.go
+++ b/pkg/dbfs/nodeserver.go
@@ -286,12 +286,6 @@ func (ns *nodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstag
 		} else {
 			msgLog = fmt.Sprintf("NodeUnstageVolume: VolumeId: %s, mountpoint: %s not mounted, skipping", req.VolumeId, req.StagingTargetPath)
 		}
-		// safe remove mountpoint
-		err = ns.mounter.SafePathRemove(req.StagingTargetPath)
-		if err != nil {
-			log.Log.Errorf("NodeUnstageVolume: VolumeId: %s, Remove targetPath failed, target %v", req.VolumeId, req.StagingTargetPath)
-			return nil, status.Error(codes.Internal, err.Error())
-		}
 	} else {
 		msgLog = fmt.Sprintf("NodeUnstageVolume: VolumeId: %s, Path %s doesn't exist, skip", req.VolumeId, req.StagingTargetPath)
 	}
diff --git a/pkg/disk/nodeserver.go b/pkg/disk/nodeserver.go
index ea6a8433e..2770a0aa7 100644
--- a/pkg/disk/nodeserver.go
+++ b/pkg/disk/nodeserver.go
@@ -778,12 +778,6 @@ func (ns *nodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstag
 		} else {
 			msgLog = fmt.Sprintf("NodeUnstageVolume: VolumeId: %s, mountpoint: %s not mounted, skipping and continue to detach", req.VolumeId, targetPath)
 		}
-		// safe remove mountpoint
-		err = ns.mounter.SafePathRemove(targetPath)
-		if err != nil {
-			log.Log.Errorf("NodeUnstageVolume: VolumeId: %s, Remove targetPath failed, target %v", req.VolumeId, targetPath)
-			return nil, status.Error(codes.Internal, err.Error())
-		}
 	} else {
 		msgLog = fmt.Sprintf("NodeUnstageVolume: VolumeId: %s, Path %s doesn't exist, continue to detach", req.VolumeId, targetPath)
 	}
diff --git a/pkg/ens/nodeserver.go b/pkg/ens/nodeserver.go
index 6392c4c73..a4df0fc29 100644
--- a/pkg/ens/nodeserver.go
+++ b/pkg/ens/nodeserver.go
@@ -478,12 +478,6 @@ func (ns *nodeServer) NodeUnstageVolume(ctx context.Context, req *csi.NodeUnstag
 		} else {
 			msgLog = fmt.Sprintf("NodeUnstageVolume: VolumeId: %s, mountpoint: %s not mounted, skipping and continue to detach", req.VolumeId, targetPath)
 		}
-		// safe remove mountpoint
-		err = ns.mounter.SafePathRemove(targetPath)
-		if err != nil {
-			log.Errorf("NodeUnstageVolume: VolumeId: %s, Remove targetPath failed, target %v", req.VolumeId, targetPath)
-			return nil, status.Error(codes.Internal, err.Error())
-		}
 	} else {
 		msgLog = fmt.Sprintf("NodeUnstageVolume: VolumeId: %s, Path %s doesn't exist, continue to detach", req.VolumeId, targetPath)
 	}
diff --git a/pkg/utils/mounter.go b/pkg/utils/mounter.go
index 2d2f1ee9e..eccaf92ad 100644
--- a/pkg/utils/mounter.go
+++ b/pkg/utils/mounter.go
@@ -88,8 +88,6 @@ type Mounter interface {
 
 	IsNotMountPoint(file string) (bool, error)
 
-	SafePathRemove(target string) error
-
 	HasMountRefs(mountPath string, mountRefs []string) bool
 }
 
@@ -319,34 +317,6 @@ func (m *mounter) IsMounted(target string) (bool, error) {
 	return false, nil
 }
 
-func (m *mounter) SafePathRemove(targetPath string) error {
-	fo, err := os.Lstat(targetPath)
-	if err != nil {
-		return err
-	}
-	isMounted, err := m.IsMounted(targetPath)
-	if err != nil {
-		return err
-	}
-	if isMounted {
-		return errors.New("Path is mounted, not remove: " + targetPath)
-	}
-	if fo.IsDir() {
-		empty, err := IsDirEmpty(targetPath)
-		if err != nil {
-			return errors.New("Check path empty error: " + targetPath + err.Error())
-		}
-		if !empty {
-			return errors.New("Cannot remove Path not empty: " + targetPath)
-		}
-	}
-	err = os.Remove(targetPath)
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
 func (m *mounter) HasMountRefs(mountPath string, mountRefs []string) bool {
 	count := 0
 	for _, refPath := range mountRefs {