1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
package fuse
import (
"bytes"
"fmt"
"os/exec"
"strings"
)
func unmount(dir string) error {
if err := fuserunmount(dir); err != nil {
// Return custom error for fusermount unmount error for /dev/fd/N mountpoints
if strings.HasPrefix(dir, "/dev/fd/") {
return fmt.Errorf("%w: %s", ErrExternallyManagedMountPoint, err)
}
return err
}
return nil
}
func fuserunmount(dir string) error {
fusermount, err := findFusermount()
if err != nil {
return err
}
cmd := exec.Command(fusermount, "-u", dir)
output, err := cmd.CombinedOutput()
if err != nil {
if len(output) > 0 {
output = bytes.TrimRight(output, "\n")
return fmt.Errorf("%v: %s", err, output)
}
return err
}
return nil
}
|