Skip to content

Commit

Permalink
cmd: fix openControl for binded mount point (#3858)
Browse files Browse the repository at this point in the history
  • Loading branch information
SandyXSD committed Jun 29, 2023
1 parent 277ab2d commit c6914c4
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 9 deletions.
11 changes: 7 additions & 4 deletions cmd/rmr.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,14 +42,17 @@ $ juicefs rmr /mnt/jfs/foo`,
}
}

func openController(path string) (*os.File, error) {
mp, err := findMountpoint(path)
func openController(dpath string) (*os.File, error) {
st, err := os.Stat(dpath)
if err != nil {
return nil, err
}
fp, err := os.OpenFile(filepath.Join(mp, ".jfs.control"), os.O_RDWR, 0)
if !st.IsDir() {
dpath = filepath.Dir(dpath)
}
fp, err := os.OpenFile(filepath.Join(dpath, ".jfs.control"), os.O_RDWR, 0)
if os.IsNotExist(err) {
fp, err = os.OpenFile(filepath.Join(mp, ".control"), os.O_RDWR, 0)
fp, err = os.OpenFile(filepath.Join(dpath, ".control"), os.O_RDWR, 0)
}
return fp, err
}
Expand Down
17 changes: 12 additions & 5 deletions cmd/warmup.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,16 +192,23 @@ func warmup(ctx *cli.Context) error {

// find mount point
first := paths[0]
mp, err := findMountpoint(first)
if err != nil {
return err
}
controller, err := openController(mp)
controller, err := openController(first)
if err != nil {
return fmt.Errorf("open control file for %s: %s", first, err)
}
defer controller.Close()

mp := first
for ; mp != "/"; mp = filepath.Dir(mp) {
inode, err := utils.GetFileInode(mp)
if err != nil {
logger.Fatalf("lookup inode for %s: %s", mp, err)
}
if inode == uint64(meta.RootInode) {
break
}
}

threads := ctx.Uint("threads")
if threads == 0 {
logger.Warnf("threads should be larger than 0, reset it to 1")
Expand Down

0 comments on commit c6914c4

Please sign in to comment.