From f3442e36e6aa1385111dfe212bd252d0eeb39d2d Mon Sep 17 00:00:00 2001 From: chrislu Date: Sun, 6 Mar 2022 17:04:21 -0800 Subject: [PATCH] mount: quota adjust error type to be syscall.ENOSPC --- weed/mount/weedfs_attr.go | 2 +- weed/mount/weedfs_dir_mkrm.go | 2 +- weed/mount/weedfs_file_mkrm.go | 3 ++- weed/mount/weedfs_file_sync.go | 3 ++- weed/mount/weedfs_file_write.go | 3 ++- weed/mount/weedfs_link.go | 3 ++- weed/mount/weedfs_rename.go | 2 +- weed/mount/weedfs_symlink.go | 3 ++- weed/mount/weedfs_xattr.go | 2 +- 9 files changed, 14 insertions(+), 9 deletions(-) diff --git a/weed/mount/weedfs_attr.go b/weed/mount/weedfs_attr.go index 64e9cb5f5..99d6b73bd 100644 --- a/weed/mount/weedfs_attr.go +++ b/weed/mount/weedfs_attr.go @@ -36,7 +36,7 @@ func (wfs *WFS) GetAttr(cancel <-chan struct{}, input *fuse.GetAttrIn, out *fuse func (wfs *WFS) SetAttr(cancel <-chan struct{}, input *fuse.SetAttrIn, out *fuse.AttrOut) (code fuse.Status) { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } path, fh, entry, status := wfs.maybeReadEntry(input.NodeId) diff --git a/weed/mount/weedfs_dir_mkrm.go b/weed/mount/weedfs_dir_mkrm.go index 3872102df..a8ede0ecb 100644 --- a/weed/mount/weedfs_dir_mkrm.go +++ b/weed/mount/weedfs_dir_mkrm.go @@ -22,7 +22,7 @@ import ( func (wfs *WFS) Mkdir(cancel <-chan struct{}, in *fuse.MkdirIn, name string, out *fuse.EntryOut) (code fuse.Status) { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } if s := checkName(name); s != fuse.OK { diff --git a/weed/mount/weedfs_file_mkrm.go b/weed/mount/weedfs_file_mkrm.go index 81186da0a..aed9545d0 100644 --- a/weed/mount/weedfs_file_mkrm.go +++ b/weed/mount/weedfs_file_mkrm.go @@ -7,6 +7,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/hanwen/go-fuse/v2/fuse" + "syscall" "time" ) @@ -36,7 +37,7 @@ func (wfs *WFS) Create(cancel <-chan struct{}, in *fuse.CreateIn, name string, o func (wfs *WFS) Mknod(cancel <-chan struct{}, in *fuse.MknodIn, name string, out *fuse.EntryOut) (code fuse.Status) { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } if s := checkName(name); s != fuse.OK { diff --git a/weed/mount/weedfs_file_sync.go b/weed/mount/weedfs_file_sync.go index 99403fc52..c163948ea 100644 --- a/weed/mount/weedfs_file_sync.go +++ b/weed/mount/weedfs_file_sync.go @@ -7,6 +7,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/hanwen/go-fuse/v2/fuse" + "syscall" "time" ) @@ -112,7 +113,7 @@ func (wfs *WFS) doFlush(fh *FileHandle, uid, gid uint32) fuse.Status { } if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } err := wfs.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error { diff --git a/weed/mount/weedfs_file_write.go b/weed/mount/weedfs_file_write.go index ff0adcf75..f71e27335 100644 --- a/weed/mount/weedfs_file_write.go +++ b/weed/mount/weedfs_file_write.go @@ -3,6 +3,7 @@ package mount import ( "github.com/hanwen/go-fuse/v2/fuse" "net/http" + "syscall" ) /** @@ -34,7 +35,7 @@ import ( func (wfs *WFS) Write(cancel <-chan struct{}, in *fuse.WriteIn, data []byte) (written uint32, code fuse.Status) { if wfs.IsOverQuota { - return 0, fuse.EPERM + return 0, fuse.Status(syscall.ENOSPC) } fh := wfs.GetHandle(FileHandleId(in.Fh)) diff --git a/weed/mount/weedfs_link.go b/weed/mount/weedfs_link.go index 36dc93b2f..ac5a4baf1 100644 --- a/weed/mount/weedfs_link.go +++ b/weed/mount/weedfs_link.go @@ -6,6 +6,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/hanwen/go-fuse/v2/fuse" + "syscall" "time" ) @@ -24,7 +25,7 @@ When creating a link: func (wfs *WFS) Link(cancel <-chan struct{}, in *fuse.LinkIn, name string, out *fuse.EntryOut) (code fuse.Status) { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } if s := checkName(name); s != fuse.OK { diff --git a/weed/mount/weedfs_rename.go b/weed/mount/weedfs_rename.go index c36130faa..23caa48cd 100644 --- a/weed/mount/weedfs_rename.go +++ b/weed/mount/weedfs_rename.go @@ -132,7 +132,7 @@ const ( func (wfs *WFS) Rename(cancel <-chan struct{}, in *fuse.RenameIn, oldName string, newName string) (code fuse.Status) { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } if s := checkName(newName); s != fuse.OK { diff --git a/weed/mount/weedfs_symlink.go b/weed/mount/weedfs_symlink.go index 81bfe8c95..e165307c7 100644 --- a/weed/mount/weedfs_symlink.go +++ b/weed/mount/weedfs_symlink.go @@ -8,6 +8,7 @@ import ( "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/hanwen/go-fuse/v2/fuse" "os" + "syscall" "time" ) @@ -15,7 +16,7 @@ import ( func (wfs *WFS) Symlink(cancel <-chan struct{}, header *fuse.InHeader, target string, name string, out *fuse.EntryOut) (code fuse.Status) { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } if s := checkName(name); s != fuse.OK { return s diff --git a/weed/mount/weedfs_xattr.go b/weed/mount/weedfs_xattr.go index aa95e8c8b..c85a1b3a1 100644 --- a/weed/mount/weedfs_xattr.go +++ b/weed/mount/weedfs_xattr.go @@ -71,7 +71,7 @@ func (wfs *WFS) GetXAttr(cancel <-chan struct{}, header *fuse.InHeader, attr str func (wfs *WFS) SetXAttr(cancel <-chan struct{}, input *fuse.SetXAttrIn, attr string, data []byte) fuse.Status { if wfs.IsOverQuota { - return fuse.EPERM + return fuse.Status(syscall.ENOSPC) } //validate attr name