{"record":{"id":"6f25f281c3ff73ea","repo":"juicedata/juicefs","slug":"combined-output-of-failed-umount-command","errorCode":null,"errorMessage":"<combined output of failed umount command>","messagePattern":"<combined output of failed umount command>","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/umount.go","lineNumber":95,"sourceCode":"\t\t\tif force {\n\t\t\t\tcmd = exec.Command(\"umount\", \"-l\", mp)\n\t\t\t} else {\n\t\t\t\tcmd = exec.Command(\"umount\", mp)\n\t\t\t}\n\t\t}\n\tcase \"windows\":\n\t\tif !force {\n\t\t\t_ = os.Mkdir(filepath.Join(mp, \".UMOUNTIT\"), 0777)\n\t\t\treturn nil\n\t\t} else {\n\t\t\tcmd = exec.Command(\"taskkill\", \"/IM\", \"juicefs.exe\", \"/F\")\n\t\t}\n\tdefault:\n\t\treturn fmt.Errorf(\"OS %s is not supported\", runtime.GOOS)\n\t}\n\tout, err := cmd.CombinedOutput()\n\tif err != nil && len(out) != 0 {\n\t\terr = errors.New(string(out))\n\t}\n\treturn err\n}\n\nfunc umount(ctx *cli.Context) error {\n\tsetup(ctx, 1)\n\tmp := ctx.Args().Get(0)\n\tif ctx.Bool(\"flush\") {\n\t\traw, err := readConfig(mp)\n\t\tif err != nil {\n\t\t\tif os.IsNotExist(err) {\n\t\t\t\treturn fmt.Errorf(\"not a JuiceFS mount point\")\n\t\t\t}\n\t\t\treturn errors.Wrap(err, \"failed to read config\")\n\t\t}\n\n\t\tvar conf vfs.Config\n\t\tif err = json.Unmarshal(raw, &conf); err != nil {","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/cmd/umount.go#L77-L113","documentation":"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.","triggerScenarios":"Thrown at cmd/umount.go:95 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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)"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"c9a67b23e8e08ec23ec331aa6f1675e2319e921c","analyzedAt":"2026-09-06T17:55:48.476Z","contentChangedAt":"2026-09-06T17:55:48.476Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}