diff options
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/driver/nodeserver.go | 8 | ||||
| -rw-r--r-- | pkg/mountmanager/socket.go | 13 |
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)) } |
