aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/driver/nodeserver.go8
-rw-r--r--pkg/mountmanager/socket.go13
2 files changed, 11 insertions, 10 deletions
diff --git a/pkg/driver/nodeserver.go b/pkg/driver/nodeserver.go
index 9371d09..96ed31d 100644
--- a/pkg/driver/nodeserver.go
+++ b/pkg/driver/nodeserver.go
@@ -8,6 +8,7 @@ import (
"github.com/container-storage-interface/spec/lib/go/csi"
"github.com/seaweedfs/seaweedfs-csi-driver/pkg/k8s"
+ "github.com/seaweedfs/seaweedfs-csi-driver/pkg/mountmanager"
"github.com/seaweedfs/seaweedfs/weed/glog"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -185,9 +186,10 @@ func (ns *NodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
// Note: The returned Volume won't have an unmounter, so Unstage will need special handling.
func (ns *NodeServer) rebuildVolumeFromStaging(volumeID string, stagingPath string) *Volume {
return &Volume{
- VolumeId: volumeID,
- StagedPath: stagingPath,
- driver: ns.Driver,
+ VolumeId: volumeID,
+ StagedPath: stagingPath,
+ driver: ns.Driver,
+ localSocket: mountmanager.LocalSocketPath(ns.Driver.volumeSocketDir, volumeID),
// mounter and unmounter are nil - this is intentional
// The FUSE process is already running, we just need to track the volume
// The mount service will have the mount tracked if it's still alive
diff --git a/pkg/mountmanager/socket.go b/pkg/mountmanager/socket.go
index f327dcb..95d63c0 100644
--- a/pkg/mountmanager/socket.go
+++ b/pkg/mountmanager/socket.go
@@ -1,10 +1,10 @@
package mountmanager
import (
+ "crypto/sha256"
+ "encoding/hex"
"fmt"
"path/filepath"
-
- "github.com/seaweedfs/seaweedfs/weed/util"
)
// DefaultSocketDir is the default directory for volume sockets.
@@ -12,13 +12,12 @@ const DefaultSocketDir = "/var/lib/seaweedfs-mount"
// LocalSocketPath returns the unix socket path used to communicate with the weed mount process.
// The baseDir parameter should be the directory where sockets are stored (e.g., derived from mountEndpoint).
+// Uses SHA256 hash (first 16 hex chars = 64 bits) to minimize collision risk.
func LocalSocketPath(baseDir, volumeID string) string {
if baseDir == "" {
baseDir = DefaultSocketDir
}
- hash := util.HashToInt32([]byte(volumeID))
- if hash < 0 {
- hash = -hash
- }
- return filepath.Join(baseDir, fmt.Sprintf("seaweedfs-mount-%d.sock", hash))
+ h := sha256.Sum256([]byte(volumeID))
+ hashStr := hex.EncodeToString(h[:8]) // 16 hex chars = 64 bits
+ return filepath.Join(baseDir, fmt.Sprintf("seaweedfs-mount-%s.sock", hashStr))
}