mount: quota adjust error type to be syscall.ENOSPC

This commit is contained in:
chrislu 2022-03-06 17:04:21 -08:00
parent c7e8ac18f0
commit f3442e36e6
9 changed files with 14 additions and 9 deletions

View file

@ -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) { func (wfs *WFS) SetAttr(cancel <-chan struct{}, input *fuse.SetAttrIn, out *fuse.AttrOut) (code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
path, fh, entry, status := wfs.maybeReadEntry(input.NodeId) path, fh, entry, status := wfs.maybeReadEntry(input.NodeId)

View file

@ -22,7 +22,7 @@ import (
func (wfs *WFS) Mkdir(cancel <-chan struct{}, in *fuse.MkdirIn, name string, out *fuse.EntryOut) (code fuse.Status) { func (wfs *WFS) Mkdir(cancel <-chan struct{}, in *fuse.MkdirIn, name string, out *fuse.EntryOut) (code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
if s := checkName(name); s != fuse.OK { if s := checkName(name); s != fuse.OK {

View file

@ -7,6 +7,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/hanwen/go-fuse/v2/fuse" "github.com/hanwen/go-fuse/v2/fuse"
"syscall"
"time" "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) { func (wfs *WFS) Mknod(cancel <-chan struct{}, in *fuse.MknodIn, name string, out *fuse.EntryOut) (code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
if s := checkName(name); s != fuse.OK { if s := checkName(name); s != fuse.OK {

View file

@ -7,6 +7,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/hanwen/go-fuse/v2/fuse" "github.com/hanwen/go-fuse/v2/fuse"
"syscall"
"time" "time"
) )
@ -112,7 +113,7 @@ func (wfs *WFS) doFlush(fh *FileHandle, uid, gid uint32) fuse.Status {
} }
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
err := wfs.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error { err := wfs.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {

View file

@ -3,6 +3,7 @@ package mount
import ( import (
"github.com/hanwen/go-fuse/v2/fuse" "github.com/hanwen/go-fuse/v2/fuse"
"net/http" "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) { func (wfs *WFS) Write(cancel <-chan struct{}, in *fuse.WriteIn, data []byte) (written uint32, code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return 0, fuse.EPERM return 0, fuse.Status(syscall.ENOSPC)
} }
fh := wfs.GetHandle(FileHandleId(in.Fh)) fh := wfs.GetHandle(FileHandleId(in.Fh))

View file

@ -6,6 +6,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/hanwen/go-fuse/v2/fuse" "github.com/hanwen/go-fuse/v2/fuse"
"syscall"
"time" "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) { func (wfs *WFS) Link(cancel <-chan struct{}, in *fuse.LinkIn, name string, out *fuse.EntryOut) (code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
if s := checkName(name); s != fuse.OK { if s := checkName(name); s != fuse.OK {

View file

@ -132,7 +132,7 @@ const (
func (wfs *WFS) Rename(cancel <-chan struct{}, in *fuse.RenameIn, oldName string, newName string) (code fuse.Status) { func (wfs *WFS) Rename(cancel <-chan struct{}, in *fuse.RenameIn, oldName string, newName string) (code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
if s := checkName(newName); s != fuse.OK { if s := checkName(newName); s != fuse.OK {

View file

@ -8,6 +8,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/hanwen/go-fuse/v2/fuse" "github.com/hanwen/go-fuse/v2/fuse"
"os" "os"
"syscall"
"time" "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) { func (wfs *WFS) Symlink(cancel <-chan struct{}, header *fuse.InHeader, target string, name string, out *fuse.EntryOut) (code fuse.Status) {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
if s := checkName(name); s != fuse.OK { if s := checkName(name); s != fuse.OK {
return s return s

View file

@ -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 { func (wfs *WFS) SetXAttr(cancel <-chan struct{}, input *fuse.SetXAttrIn, attr string, data []byte) fuse.Status {
if wfs.IsOverQuota { if wfs.IsOverQuota {
return fuse.EPERM return fuse.Status(syscall.ENOSPC)
} }
//validate attr name //validate attr name