juicedata/juicefs · error

not a JuiceFS mount point

Error message

not a JuiceFS mount point

What it means

umount with --flush first reads the mount's config file via readConfig(mp) to locate the control file. If readConfig fails with an fs.ErrNotExist, the path is not a JuiceFS mount point (no .jfsconfig / control metadata exists there), and this error is returned. It distinguishes 'not our mount' from other config-read failures, which are wrapped separately.

Source

Thrown at cmd/umount.go:107

		}
	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 {
			return errors.Wrap(err, "failed to parse config")
		}
		if conf.Chunk.Writeback {
			stagingDir := path.Join(conf.Chunk.CacheDir, "rawstaging")
			if err := waitWritebackComplete(stagingDir); err != nil {
				return err
			}
			defer func() {
				size, _ := fileSizeInDir(stagingDir)
				clearLastLine()
				if size == 0 {
					fmt.Println("\rAll staging chunks are flushed")

View on GitHub (pinned to c9a67b23e8)

Solutions

  1. Verify the path is an active JuiceFS mount (`mount | grep juicefs` or `cat <mp>/.control` presence).
  2. Check the path spelling — pass the exact mount point directory.
  3. If you don't need cache flushing, run `juicefs umount <mp>` without --flush.
  4. If the mount crashed but caches should be flushed, remount first or clean up manually.

Example fix

// before
juicefs umount /mnt/nfs-data --flush
// after
juicefs umount /mnt/jfs --flush
Defensive patterns

Strategy: validation

Validate before calling

if _, err := os.Stat(filepath.Join(mp, ".stats")); err != nil {
    return fmt.Errorf("%s is not a JuiceFS mount point", mp)
}

Prevention

When it happens

Trigger: `juicefs umount <path> --flush` where <path> is not a JuiceFS mount point, is a plain directory, or is a mount of another filesystem type.

Common situations: Typo in the mount point path; trying to flush-unmount an NFS/tmpfs mount; mount already crashed so config file was cleaned up; using the volume name instead of the mount path.

Understand the failure class

Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.

Related errors


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