From 85297cda97d018b514361a2088a78f50f1446f95 Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Tue, 24 Jan 2023 22:07:28 +0100 Subject: fusefrontend: doWrite: report readFileID errors as I/O error It used to be reported as "function not implemented", accompanied with this log output: go-fuse: can't convert error type: ParseHeader: header is all-zero. Header hexdump: 000000000000000000000000000000000000 Now we report EIO and log this: doWrite 1372183: corrupt header: ParseHeader: header is all-zero. Header hexdump: 000000000000000000000000000000000000 --- internal/fusefrontend/file.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'internal') diff --git a/internal/fusefrontend/file.go b/internal/fusefrontend/file.go index 2f111fd..ff26a6e 100644 --- a/internal/fusefrontend/file.go +++ b/internal/fusefrontend/file.go @@ -273,6 +273,10 @@ func (f *File) doWrite(data []byte, off int64) (uint32, syscall.Errno) { if err == io.EOF { fileID, err = f.createHeader() fileWasEmpty = true + } else if err != nil { + // Other errors mean readFileID() found a corrupt header + tlog.Warn.Printf("doWrite %d: corrupt header: %v", f.qIno.Ino, err) + return 0, syscall.EIO } if err != nil { return 0, fs.ToErrno(err) -- cgit v1.2.3