aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-01-24 01:41:31 -0800
committerChris Lu <chris.lu@gmail.com>2020-01-24 01:41:31 -0800
commit9d93c836549629013739ec860c9e1adb20fafcf6 (patch)
treebc47d98e00e09e03ada78e90b04fefea024a94c2
parent107e8a56ea0fee9eff996177003b32a0179d7651 (diff)
downloadseaweedfs-9d93c836549629013739ec860c9e1adb20fafcf6.tar.xz
seaweedfs-9d93c836549629013739ec860c9e1adb20fafcf6.zip
mount: return IO error for mkdir
-rw-r--r--weed/filesys/dir.go4
-rw-r--r--weed/filesys/filehandle.go15
2 files changed, 13 insertions, 6 deletions
diff --git a/weed/filesys/dir.go b/weed/filesys/dir.go
index f4132cbf0..4687d5c91 100644
--- a/weed/filesys/dir.go
+++ b/weed/filesys/dir.go
@@ -174,7 +174,7 @@ func (dir *Dir) Mkdir(ctx context.Context, req *fuse.MkdirRequest) (fs.Node, err
glog.V(1).Infof("mkdir: %v", request)
if _, err := client.CreateEntry(ctx, request); err != nil {
glog.V(0).Infof("mkdir %s/%s: %v", dir.Path, req.Name, err)
- return fuse.EIO
+ return err
}
return nil
@@ -185,7 +185,7 @@ func (dir *Dir) Mkdir(ctx context.Context, req *fuse.MkdirRequest) (fs.Node, err
return node, nil
}
- return nil, err
+ return nil, fuse.EIO
}
func (dir *Dir) Lookup(ctx context.Context, req *fuse.LookupRequest, resp *fuse.LookupResponse) (node fs.Node, err error) {
diff --git a/weed/filesys/filehandle.go b/weed/filesys/filehandle.go
index bee153cc5..9be290fe1 100644
--- a/weed/filesys/filehandle.go
+++ b/weed/filesys/filehandle.go
@@ -65,6 +65,7 @@ func (fh *FileHandle) Read(ctx context.Context, req *fuse.ReadRequest, resp *fus
if err != nil {
glog.Errorf("file handle read %s: %v", fh.f.fullpath(), err)
+ return fuse.EIO
}
return err
@@ -103,11 +104,12 @@ func (fh *FileHandle) Write(ctx context.Context, req *fuse.WriteRequest, resp *f
// write the request to volume servers
fh.f.entry.Attributes.FileSize = uint64(max(req.Offset+int64(len(req.Data)), int64(fh.f.entry.Attributes.FileSize)))
+ glog.V(0).Infof("%v write [%d,%d)", fh.f.fullpath(), req.Offset, req.Offset+int64(len(req.Data)))
chunks, err := fh.dirtyPages.AddPage(ctx, req.Offset, req.Data)
if err != nil {
- glog.Errorf("%+v/%v write fh %d: [%d,%d): %v", fh.f.dir.Path, fh.f.Name, fh.handle, req.Offset, req.Offset+int64(len(req.Data)), err)
- return fmt.Errorf("write %s/%s at [%d,%d): %v", fh.f.dir.Path, fh.f.Name, req.Offset, req.Offset+int64(len(req.Data)), err)
+ glog.Errorf("%v write fh %d: [%d,%d): %v", fh.f.fullpath(), fh.handle, req.Offset, req.Offset+int64(len(req.Data)), err)
+ return fuse.EIO
}
resp.Size = len(req.Data)
@@ -155,7 +157,7 @@ func (fh *FileHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error {
chunks, err := fh.dirtyPages.FlushToStorage(ctx)
if err != nil {
glog.Errorf("flush %s/%s: %v", fh.f.dir.Path, fh.f.Name, err)
- return fmt.Errorf("flush %s/%s: %v", fh.f.dir.Path, fh.f.Name, err)
+ return fuse.EIO
}
fh.f.addChunks(chunks)
@@ -209,5 +211,10 @@ func (fh *FileHandle) Flush(ctx context.Context, req *fuse.FlushRequest) error {
fh.dirtyMetadata = false
}
- return err
+ if err != nil {
+ glog.Errorf("%v fh %d flush: %v", fh.f.fullpath(), fh.handle, err)
+ return fuse.EIO
+ }
+
+ return nil
}