From d620054caf011982dce2eef5fde0ad11738c4cea Mon Sep 17 00:00:00 2001 From: Jakob Unterwurzacher Date: Mon, 23 Jul 2018 22:34:41 +0200 Subject: [PATCH] fsck: print inode number on file read error This makes it possible to find the file without mounting the fs. --- fsck.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/fsck.go b/fsck.go index 0f061ac..e6a695a 100644 --- a/fsck.go +++ b/fsck.go @@ -11,6 +11,7 @@ import ( "syscall" "github.com/hanwen/go-fuse/fuse" + "github.com/hanwen/go-fuse/fuse/nodefs" "github.com/rfjakob/gocryptfs/internal/exitcodes" "github.com/rfjakob/gocryptfs/internal/fusefrontend" @@ -127,7 +128,7 @@ func (ck *fsckObj) file(path string) { result, status := f.Read(buf, off) if !status.Ok() { ck.markCorrupt(path) - fmt.Printf("fsck: error reading file %q at offset %d: %v\n", path, off, status) + fmt.Printf("fsck: error reading file %q (inum %d) at offset %d: %v\n", path, inum(f), off, status) return } // EOF @@ -218,3 +219,9 @@ func (s sortableDirEntries) Swap(i, j int) { func (s sortableDirEntries) Less(i, j int) bool { return strings.Compare(s[i].Name, s[j].Name) < 0 } + +func inum(f nodefs.File) uint64 { + var a fuse.Attr + f.GetAttr(&a) + return a.Ino +}