aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2021-01-18 01:14:58 -0800
committerChris Lu <chris.lu@gmail.com>2021-01-18 01:14:58 -0800
commit67faa56920e9a534c1fc531230e7d90b68e53d44 (patch)
tree860aa6e260697bc1acf1d10e422fa69e7df840d7
parent7119e7b4912008f50c78639d393c95ee4eaea9e8 (diff)
downloadseaweedfs-67faa56920e9a534c1fc531230e7d90b68e53d44.tar.xz
seaweedfs-67faa56920e9a534c1fc531230e7d90b68e53d44.zip
Revert "Revert "mount: add more entry type""
This reverts commit 4085b79d389ba2566b4a6b7f3dce7f1fca8d481b.
-rw-r--r--weed/filesys/dir.go23
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 {