juicedata/juicefs · error

%s is not inside JuiceFS

Error message

%s is not inside JuiceFS

What it means

Returned by loadConfig when the upward directory walk from the given path reaches '/' without finding any JuiceFS .config file. It means the path is not inside a JuiceFS mountpoint, so mount status operations (graceful shutdown, mountpoint checks) cannot proceed.

Source

Thrown at cmd/mount_unix.go:168

		} else if err != nil {
			logger.Warnf("watchdog: failed to parse waiting FUSE requests for connection %d, pid %d: %v; abort not triggered", conn, pid, err)
		}
	}
}

func loadConfig(path string) (string, *vfs.Config, error) {
	for d := path; d != "/"; d = filepath.Dir(d) {
		data, err := readConfig(d)
		if err == nil {
			var conf vfs.Config
			err = json.Unmarshal(data, &conf)
			return d, &conf, err
		}
		if !os.IsNotExist(err) {
			return "", nil, fmt.Errorf("read %s: %w", d, err)
		}
	}
	return "", nil, fmt.Errorf("%s is not inside JuiceFS", path)
}

func printThreadsStack(pid int) {
	if pid <= 1 {
		return
	}
	start := time.Now()
	tids, err := os.ReadDir(fmt.Sprintf("/proc/%d/task", pid))
	if err != nil {
		logger.Warnf("list tasks of pid %d: %s", pid, err)
		return
	}
	var b strings.Builder
	for _, tid := range tids {
		readThreadStats(pid, tid.Name(), &b)
	}
	logger.Infof("print kernel stacks of process %d takes %s:\n%s", pid, time.Since(start), b.String())
}

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Run the command against a path inside the actual JuiceFS mountpoint
  2. Mount the filesystem first if it is not mounted
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at cmd/mount_unix.go:168 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of juicedata/juicefs@c9a67b23e8 (2026-09-06). Data as JSON: /api/errors/38dc7081147f0590. Report an issue: GitHub.