fsck: print inode number on file read error

This makes it possible to find the file without mounting the fs.
This commit is contained in:
Jakob Unterwurzacher 2018-07-23 22:34:41 +02:00
parent f4a972ddf1
commit d620054caf

View File

@ -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
}