aboutsummaryrefslogtreecommitdiff
path: root/filesystem/mountpoint.go
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2020-05-09 15:27:24 -0700
committerGitHub <noreply@github.com>2020-05-09 15:27:24 -0700
commitd4d28232d32bfb3f4827fcb79bd5043e1932ae66 (patch)
treedda5a65b2d8c157e03d3d35f3442547dafd51e4c /filesystem/mountpoint.go
parent1cdefc21b8b07aad7aafeefd05d3124cf93b9216 (diff)
parent181600d6327ed34a3f62eda0dd03a6d2ae49e5f9 (diff)
Merge pull request #219 from ebiggers/improve-errors
Improve error messages and suggestions
Diffstat (limited to 'filesystem/mountpoint.go')
-rw-r--r--filesystem/mountpoint.go26
1 files changed, 13 insertions, 13 deletions
diff --git a/filesystem/mountpoint.go b/filesystem/mountpoint.go
index acddbae..c830780 100644
--- a/filesystem/mountpoint.go
+++ b/filesystem/mountpoint.go
@@ -380,7 +380,7 @@ func FindMount(path string) (*Mount, error) {
func GetMount(mountpoint string) (*Mount, error) {
mnt, err := FindMount(mountpoint)
if err != nil {
- return nil, errors.Wrap(ErrNotAMountpoint, mountpoint)
+ return nil, &ErrNotAMountpoint{mountpoint}
}
// Check whether 'mountpoint' names the same directory as 'mnt.Path'.
// Use os.SameFile() (i.e., compare inode numbers) rather than compare
@@ -394,7 +394,7 @@ func GetMount(mountpoint string) (*Mount, error) {
return nil, err
}
if !os.SameFile(fi1, fi2) {
- return nil, errors.Wrap(ErrNotAMountpoint, mountpoint)
+ return nil, &ErrNotAMountpoint{mountpoint}
}
return mnt, nil
}
@@ -410,22 +410,22 @@ func getMountFromLink(link string) (*Mount, error) {
link = strings.TrimSpace(link)
linkComponents := strings.Split(link, "=")
if len(linkComponents) != 2 {
- return nil, errors.Wrapf(ErrFollowLink, "link %q format is invalid", link)
+ return nil, &ErrFollowLink{link, errors.New("invalid link format")}
}
token := linkComponents[0]
value := linkComponents[1]
if token != uuidToken {
- return nil, errors.Wrapf(ErrFollowLink, "token type %q not supported", token)
+ return nil, &ErrFollowLink{link, errors.Errorf("token type %q not supported", token)}
}
// See if UUID points to an existing device
searchPath := filepath.Join(uuidDirectory, value)
if filepath.Base(searchPath) != value {
- return nil, errors.Wrapf(ErrFollowLink, "value %q is not a UUID", value)
+ return nil, &ErrFollowLink{link, errors.Errorf("invalid UUID format %q", value)}
}
deviceNumber, err := getDeviceNumber(searchPath)
if err != nil {
- return nil, errors.Wrapf(ErrFollowLink, "no device with UUID %q", value)
+ return nil, &ErrFollowLink{link, errors.Errorf("no device with UUID %s", value)}
}
// Lookup mountpoints for device in global store
@@ -436,11 +436,11 @@ func getMountFromLink(link string) (*Mount, error) {
}
mnt, ok := mountsByDevice[deviceNumber]
if !ok {
- return nil, errors.Wrapf(ErrFollowLink, "no mounts for device %q (%v)",
- getDeviceName(deviceNumber), deviceNumber)
+ return nil, &ErrFollowLink{link, errors.Errorf("no mounts for device %q (%v)",
+ getDeviceName(deviceNumber), deviceNumber)}
}
if mnt == nil {
- return nil, filesystemLacksMainMountError(deviceNumber)
+ return nil, &ErrFollowLink{link, filesystemLacksMainMountError(deviceNumber)}
}
return mnt, nil
}
@@ -450,12 +450,12 @@ func getMountFromLink(link string) (*Mount, error) {
// error is returned if the mount has no device, or no UUID.
func makeLink(mnt *Mount, token string) (string, error) {
if token != uuidToken {
- return "", errors.Wrapf(ErrMakeLink, "token type %q not supported", token)
+ return "", &ErrMakeLink{mnt, errors.Errorf("token type %q not supported", token)}
}
dirContents, err := ioutil.ReadDir(uuidDirectory)
if err != nil {
- return "", errors.Wrap(ErrMakeLink, err.Error())
+ return "", &ErrMakeLink{mnt, err}
}
for _, fileInfo := range dirContents {
if fileInfo.Mode()&os.ModeSymlink == 0 {
@@ -471,6 +471,6 @@ func makeLink(mnt *Mount, token string) (string, error) {
return fmt.Sprintf("%s=%s", uuidToken, uuid), nil
}
}
- return "", errors.Wrapf(ErrMakeLink, "device %q (%v) has no UUID",
- mnt.Device, mnt.DeviceNumber)
+ return "", &ErrMakeLink{mnt, errors.Errorf("cannot determine UUID of device %q (%v)",
+ mnt.Device, mnt.DeviceNumber)}
}