juicedata/juicefs · error
<combined output of failed umount command>
Error message
<combined output of failed umount command>
What it means
Error returned by doUmount wrapping the combined stdout/stderr of the external umount (or umount -l / taskkill) command when that command fails. The message text is literally the system utility's own output, e.g. 'target is busy', so the real cause comes from the OS umount, not JuiceFS.
Source
Thrown at cmd/umount.go:95
if force {
cmd = exec.Command("umount", "-l", mp)
} else {
cmd = exec.Command("umount", mp)
}
}
case "windows":
if !force {
_ = os.Mkdir(filepath.Join(mp, ".UMOUNTIT"), 0777)
return nil
} else {
cmd = exec.Command("taskkill", "/IM", "juicefs.exe", "/F")
}
default:
return fmt.Errorf("OS %s is not supported", runtime.GOOS)
}
out, err := cmd.CombinedOutput()
if err != nil && len(out) != 0 {
err = errors.New(string(out))
}
return err
}
func umount(ctx *cli.Context) error {
setup(ctx, 1)
mp := ctx.Args().Get(0)
if ctx.Bool("flush") {
raw, err := readConfig(mp)
if err != nil {
if os.IsNotExist(err) {
return fmt.Errorf("not a JuiceFS mount point")
}
return errors.Wrap(err, "failed to read config")
}
var conf vfs.Config
if err = json.Unmarshal(raw, &conf); err != nil {View on GitHub (pinned to c9a67b23e8)
Solutions
- Find and stop processes using the mount point (lsof/fuser), then unmount again
- Use `juicefs umount --force` to perform a lazy unmount (umount -l)
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at cmd/umount.go:95 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/6f25f281c3ff73ea.
Report an issue: GitHub.