diff options
| author | Chris Lu <chris.lu@gmail.com> | 2021-01-18 01:14:58 -0800 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2021-01-18 01:14:58 -0800 |
| commit | 67faa56920e9a534c1fc531230e7d90b68e53d44 (patch) | |
| tree | 860aa6e260697bc1acf1d10e422fa69e7df840d7 | |
| parent | 7119e7b4912008f50c78639d393c95ee4eaea9e8 (diff) | |
| download | seaweedfs-67faa56920e9a534c1fc531230e7d90b68e53d44.tar.xz seaweedfs-67faa56920e9a534c1fc531230e7d90b68e53d44.zip | |
Revert "Revert "mount: add more entry type""
This reverts commit 4085b79d389ba2566b4a6b7f3dce7f1fca8d481b.
| -rw-r--r-- | weed/filesys/dir.go | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/weed/filesys/dir.go b/weed/filesys/dir.go index 2cc332635..35527546b 100644 --- a/weed/filesys/dir.go +++ b/weed/filesys/dir.go @@ -6,6 +6,7 @@ import ( "math" "os" "strings" + "syscall" "time" "github.com/seaweedfs/fuse" @@ -308,7 +309,7 @@ func (dir *Dir) ReadDirAll(ctx context.Context) (ret []fuse.Dirent, err error) { dirent := fuse.Dirent{Inode: inode, Name: entry.Name, Type: fuse.DT_Dir} ret = append(ret, dirent) } else { - dirent := fuse.Dirent{Inode: inode, Name: entry.Name, Type: fuse.DT_File} + dirent := fuse.Dirent{Inode: inode, Name: entry.Name, Type: findFileType(uint16(entry.Attributes.FileMode))} ret = append(ret, dirent) } return nil @@ -330,6 +331,26 @@ func (dir *Dir) ReadDirAll(ctx context.Context) (ret []fuse.Dirent, err error) { return } +func findFileType(mode uint16) fuse.DirentType { + switch mode & (syscall.S_IFMT & 0xffff) { + case syscall.S_IFSOCK: + return fuse.DT_Socket + case syscall.S_IFLNK: + return fuse.DT_Link + case syscall.S_IFREG: + return fuse.DT_File + case syscall.S_IFBLK: + return fuse.DT_Block + case syscall.S_IFDIR: + return fuse.DT_Dir + case syscall.S_IFCHR: + return fuse.DT_Char + case syscall.S_IFIFO: + return fuse.DT_FIFO + } + return fuse.DT_File +} + func (dir *Dir) Remove(ctx context.Context, req *fuse.RemoveRequest) error { if !req.Dir { |
