Skip to content

Commit

Permalink
sync: fix symlink with jfs:// (#4286)
Browse files Browse the repository at this point in the history
  • Loading branch information
davies authored and SandyXSD committed Feb 3, 2024
1 parent 8244a13 commit 5404fc2
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 17 deletions.
5 changes: 4 additions & 1 deletion cmd/object_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,9 +129,12 @@ func testFileSystem(t *testing.T, s object.ObjectStorage) {
if target, err := ss.Readlink("a"); err != nil || target != "./xyz/ol1/" {
t.Fatalf("readlink a %s %s", target, err)
}
if err = ss.Symlink("./xyz/notExist/", "b"); err != nil {
if err = ss.Symlink("/xyz/notExist/", "b"); err != nil {
t.Fatalf("symlink b %s", err)
}
if target, err := ss.Readlink("b"); err != nil || target != "/xyz/notExist/" {
t.Fatalf("readlink b %s %s", target, err)
}
objs, err = listAll(s, "", "", 100)
if err != nil {
t.Fatalf("listall failed: %s", err)
Expand Down
8 changes: 1 addition & 7 deletions pkg/fs/fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"io"
"os"
"path"
"path/filepath"
"runtime/trace"
"strconv"
"strings"
Expand Down Expand Up @@ -532,12 +531,7 @@ func (fs *FileSystem) Symlink(ctx meta.Context, target string, link string) (err
if err != 0 {
return
}
rel, e := filepath.Rel(parentDir(link), target)
if e != nil {
// external link
rel = target
}
err = fs.m.Symlink(ctx, fi.inode, path.Base(link), rel, nil, nil)
err = fs.m.Symlink(ctx, fi.inode, path.Base(link), target, nil, nil)
fs.invalidateEntry(fi.inode, path.Base(link))
return
}
Expand Down
9 changes: 0 additions & 9 deletions sdk/java/libjfs/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -858,15 +858,6 @@ func jfs_removeXattr(pid int, h uintptr, path *C.char, name *C.char) int {
return errno(w.RemoveXattr(w.withPid(pid), C.GoString(path), C.GoString(name)))
}

//export jfs_symlink
func jfs_symlink(pid int, h uintptr, target *C.char, link *C.char) int {
w := F(h)
if w == nil {
return EINVAL
}
return errno(w.Symlink(w.withPid(pid), C.GoString(target), C.GoString(link)))
}

//export jfs_readlink
func jfs_readlink(pid int, h uintptr, link *C.char, buf uintptr, bufsize int) int {
w := F(h)
Expand Down

0 comments on commit 5404fc2

Please sign in to comment.