From e8a41ec053b6a7a634ed49533bce845b5fd329c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E5=A4=A9=E9=A3=9E=E9=95=9C?= <42763234+yuntianfeijing@users.noreply.github.com> Date: Fri, 26 Dec 2025 03:36:38 +0800 Subject: [PATCH] Fix the issue where fuse command on a node cannot specify multiple configuration directory paths (#7874) Changes: Modified weed/command/fuse.go to add a function GetFuseCommandName to return the name of the fuse command. Modified weed/weed.go to conditionally initialize the global HTTP client only if the command is not "fuse". Modified weed/command/fuse_std.go to parse parameters and ensure the global HTTP client is initialized for the fuse command. Tests: Use /etc/fstab like: fuse /repos fuse.weed filer=192.168.1.101:7202,filer.path=/hpc/repos,config_dir=/etc/seaweedfs/seaweedfs_01 0 0 fuse /opt/ohpc/pub fuse.weed filer=192.168.1.102:7202,filer.path=/hpc_cluster/pub,config_dir=/etc/seaweedfs/seaweedfs_02 0 0 Co-authored-by: zhangxl56 --- weed/command/fuse.go | 4 ++++ weed/command/fuse_std.go | 7 +++++++ weed/weed.go | 5 +++-- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/weed/command/fuse.go b/weed/command/fuse.go index a3b7fb81e..6a6dd8d5d 100644 --- a/weed/command/fuse.go +++ b/weed/command/fuse.go @@ -28,3 +28,7 @@ var cmdFuse = &Command{ To check valid options look "weed mount --help" `, } + +func GetFuseCommandName() string { + return cmdFuse.Name() +} diff --git a/weed/command/fuse_std.go b/weed/command/fuse_std.go index 2cc6fa8ab..bd274f651 100644 --- a/weed/command/fuse_std.go +++ b/weed/command/fuse_std.go @@ -12,6 +12,9 @@ import ( "strings" "syscall" "time" + + "github.com/seaweedfs/seaweedfs/weed/util" + util_http "github.com/seaweedfs/seaweedfs/weed/util/http" ) type parameter struct { @@ -219,6 +222,8 @@ func runFuse(cmd *Command, args []string) bool { } case "fusermount.path": fusermountPath = parameter.value + case "config_dir": + util.ConfigurationFileDirectory.Set(parameter.value) default: t := parameter.name if parameter.value != "true" { @@ -228,6 +233,8 @@ func runFuse(cmd *Command, args []string) bool { } } + util_http.InitGlobalHttpClient() + // the master start the child, release it then finish himself if masterProcess { arg0, err := os.Executable() diff --git a/weed/weed.go b/weed/weed.go index cde071179..f940cdacd 100644 --- a/weed/weed.go +++ b/weed/weed.go @@ -85,8 +85,9 @@ func main() { } return } - - util_http.InitGlobalHttpClient() + if args[0] != command.GetFuseCommandName() { + util_http.InitGlobalHttpClient() + } for _, cmd := range commands { if cmd.Name() == args[0] && cmd.Run != nil { cmd.Flag.Usage = func() { cmd.Usage() }