{"record":{"id":"5421da2f14a139f2","repo":"juicedata/juicefs","slug":"s-is-not-inside-juicefs","errorCode":null,"errorMessage":"%s is not inside JuiceFS","messagePattern":"(.+?) is not inside JuiceFS","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/clone.go","lineNumber":170,"sourceCode":"\t\tbar.SetTotal(int64(total))\n\t\tbar.SetCurrent(int64(count))\n\t}); errno != 0 {\n\t\treturn fmt.Errorf(\"clone failed: %v\", errno)\n\t}\n\treturn nil\n}\n\nfunc findMountpoint(fpath string) (string, error) {\n\tfor p := fpath; p != \"/\"; p = filepath.Dir(p) {\n\t\tinode, err := utils.GetFileInode(p)\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"get inode of %s: %s\", p, err)\n\t\t}\n\t\tif inode == uint64(meta.RootInode) {\n\t\t\treturn p, nil\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"%s is not inside JuiceFS\", fpath)\n}\n","sourceCodeStart":152,"sourceCodeEnd":172,"githubUrl":"https://github.com/juicedata/juicefs/blob/c9a67b23e8e08ec23ec331aa6f1675e2319e921c/cmd/clone.go#L152-L172","documentation":"findMountpoint walks ancestor paths looking for one whose inode equals the JuiceFS root inode (inode 1). If it reaches '/' without finding it, the given path is not inside any JuiceFS mount, and clone/bench refuse to proceed because the operation can only be dispatched to a JuiceFS control file.","triggerScenarios":"Running `juicefs clone` or `juicefs bench` against a path on a regular local filesystem (ext4/xfs/tmpfs), an NFS/CIFS mount, or the object-storage-backed directory directly — anywhere the walked-up inode never equals JuiceFS root inode 1.","commonSituations":"User forgets to mount the volume and passes the local cache/staging dir; passing the local object storage bucket path instead of the JuiceFS mountpoint; a nested non-JuiceFS bind mount shadows the path so inode 1 is never seen; running on a stale mountpoint where the FUSE inode check fails.","solutions":["Mount the volume first: `juicefs format ... && juicefs mount META-URL /mnt/jfs`, then operate under /mnt/jfs","Verify you are using the JuiceFS mountpoint path (`mount | grep juicefs`), not the underlying object storage bucket directory","Check for shadowing mounts on subdirectories of the path and unmount/reorder them","Use `juicefs sync` or `cp` if you intentionally want to operate on a non-JuiceFS filesystem"],"exampleFix":"// before\njuicefs clone /home/user/data /home/user/data-copy  # not inside JuiceFS\n// after\njuicefs mount redis://127.0.0.1:6379/1 /mnt/jfs\njuicefs clone /mnt/jfs/data /mnt/jfs/data-copy","handlingStrategy":"validation","validationCode":"mnts := exec.Command(\"mount\").Run() // verify target path prefix matches a juicefs mountpoint\nif !strings.HasPrefix(target, juicefsMountpoint) {\n    return errors.New(\"path must be inside a mounted JuiceFS volume\")\n}","typeGuard":null,"tryCatchPattern":"if err := runClone(src, dst); strings.Contains(err.Error(), \"is not inside JuiceFS\") {\n    mountJuicefs(mountpoint) // then retry under the mountpoint\n}","preventionTips":["Always operate under the JuiceFS mountpoint, not the underlying bucket directory","Mount the volume before scripted clone/bench runs","Check for shadowing bind mounts on subpaths","Verify with `ls <mountpoint>/.control` that the target is a live JuiceFS mount"],"tags":["cli","filesystem","mount-point","path-resolution"],"backgroundTag":"resource-not-found","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"}