diff options
| author | Jakob Unterwurzacher | 2018-04-02 18:32:30 +0200 | 
|---|---|---|
| committer | Jakob Unterwurzacher | 2018-04-02 18:32:30 +0200 | 
| commit | b6c8960b01f9e5366814b0dada57a0b1e6a031d9 (patch) | |
| tree | 6a65255c30c7bcd086523fd4e0970d3b59b230de /internal/nametransform | |
| parent | e6caf56ea4ab10e747aa5dfc0a768cb8176ebe6a (diff) | |
fsck: clean up log output
Make sure we get only 1 warning output per
problem.
Also, add new corruption types to broken_fs_v1.4.
Diffstat (limited to 'internal/nametransform')
| -rw-r--r-- | internal/nametransform/diriv.go | 21 | 
1 files changed, 11 insertions, 10 deletions
| diff --git a/internal/nametransform/diriv.go b/internal/nametransform/diriv.go index 06f029e..10f3226 100644 --- a/internal/nametransform/diriv.go +++ b/internal/nametransform/diriv.go @@ -2,6 +2,7 @@ package nametransform  import (  	"bytes" +	"fmt"  	"io"  	"log"  	"os" @@ -26,11 +27,16 @@ const (  // ReadDirIV - read the "gocryptfs.diriv" file from "dir" (absolute ciphertext path)  // This function is exported because it allows for an efficient readdir implementation. +// If the directory itself cannot be opened, a syscall error will be returned. +// Otherwise, a fmt.Errorf() error value is returned with the details.  func ReadDirIV(dir string) (iv []byte, err error) {  	fd, err := os.Open(filepath.Join(dir, DirIVFilename))  	if err != nil {  		// Note: getting errors here is normal because of concurrent deletes. -		return nil, err +		// Strip the useless annotation that os.Open has added and return +		// the plain syscall error. The caller will log a nice message. +		err2 := err.(*os.PathError) +		return nil, err2.Err  	}  	defer fd.Close()  	return fdReadDirIV(fd) @@ -42,9 +48,7 @@ func ReadDirIVAt(dirfd *os.File) (iv []byte, err error) {  	fdRaw, err := syscallcompat.Openat(int(dirfd.Fd()), DirIVFilename,  		syscall.O_RDONLY|syscall.O_NOFOLLOW, 0)  	if err != nil { -		tlog.Warn.Printf("ReadDirIVAt: opening %q in dir %q failed: %v", -			DirIVFilename, dirfd.Name(), err) -		return nil, err +		return nil, fmt.Errorf("openat failed: %v", err)  	}  	fd := os.NewFile(uintptr(fdRaw), DirIVFilename)  	defer fd.Close() @@ -61,17 +65,14 @@ func fdReadDirIV(fd *os.File) (iv []byte, err error) {  	iv = make([]byte, DirIVLen+1)  	n, err := fd.Read(iv)  	if err != nil && err != io.EOF { -		tlog.Warn.Printf("ReadDirIVAt: Read failed: %v", err) -		return nil, err +		return nil, fmt.Errorf("read failed: %v", err)  	}  	iv = iv[0:n]  	if len(iv) != DirIVLen { -		tlog.Warn.Printf("ReadDirIVAt: wanted %d bytes, got %d. Returning EINVAL.", DirIVLen, len(iv)) -		return nil, syscall.EINVAL +		return nil, fmt.Errorf("wanted %d bytes, got %d", DirIVLen, len(iv))  	}  	if bytes.Equal(iv, allZeroDirIV) { -		tlog.Warn.Printf("ReadDirIVAt: diriv is all-zero. Returning EINVAL.") -		return nil, syscall.EINVAL +		return nil, fmt.Errorf("diriv is all-zero")  	}  	return iv, nil  } | 
