diff options
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/driver/mounter.go | 42 | ||||
| -rw-r--r-- | pkg/driver/mounter_seaweedfs.go | 6 | ||||
| -rw-r--r-- | pkg/driver/volume.go | 12 |
3 files changed, 30 insertions, 30 deletions
diff --git a/pkg/driver/mounter.go b/pkg/driver/mounter.go index 38baa26..8a48967 100644 --- a/pkg/driver/mounter.go +++ b/pkg/driver/mounter.go @@ -19,15 +19,15 @@ type Config struct { Filer string } -type Mount interface { +type Unmounter interface { Unmount() error } type Mounter interface { - Mount(target string) (Mount, error) + Mount(target string) (Unmounter, error) } -type fuseMount struct { +type fuseUnmounter struct { path string cmd *exec.Cmd @@ -48,7 +48,7 @@ func newMounter(volumeID string, readOnly bool, driver *SeaweedFsDriver, volCont return newSeaweedFsMounter(volumeID, path, collection, readOnly, driver, volContext) } -func newFuseMount(path string, command string, args []string) (Mount, error) { +func fuseMount(path string, command string, args []string) (Unmounter, error) { cmd := exec.Command(command, args...) glog.V(0).Infof("Mounting fuse with command: %s and args: %s", command, args) @@ -62,7 +62,7 @@ func newFuseMount(path string, command string, args []string) (Mount, error) { return nil, fmt.Errorf("Error fuseMount command: %s\nargs: %s\nerror: %v", command, args, err) } - m := &fuseMount{ + fu := &fuseUnmounter{ path: path, cmd: cmd, @@ -77,28 +77,28 @@ func newFuseMount(path string, command string, args []string) (Mount, error) { glog.Infof("weed mount exit, pid: %d, path: %v", cmd.Process.Pid, path) } - close(m.finished) + close(fu.finished) }() if err = waitForMount(path, 10*time.Second); err != nil { glog.Errorf("weed mount timeout, pid: %d, path: %v", cmd.Process.Pid, path) - _ = m.finish(time.Second * 10) + _ = fu.finish(time.Second * 10) return nil, err } else { - return m, nil + return fu, nil } } -func (fm *fuseMount) finish(timeout time.Duration) error { +func (fu *fuseUnmounter) finish(timeout time.Duration) error { // ignore error, just inform we want process to exit - _ = fm.cmd.Process.Signal(syscall.Signal(1)) + _ = fu.cmd.Process.Signal(syscall.Signal(1)) - if err := fm.waitFinished(timeout); err != nil { - glog.Errorf("weed mount terminate timeout, pid: %d, path: %v", fm.cmd.Process.Pid, fm.path) - _ = fm.cmd.Process.Kill() - if err = fm.waitFinished(time.Second * 1); err != nil { - glog.Errorf("weed mount kill timeout, pid: %d, path: %v", fm.cmd.Process.Pid, fm.path) + if err := fu.waitFinished(timeout); err != nil { + glog.Errorf("weed mount terminate timeout, pid: %d, path: %v", fu.cmd.Process.Pid, fu.path) + _ = fu.cmd.Process.Kill() + if err = fu.waitFinished(time.Second * 1); err != nil { + glog.Errorf("weed mount kill timeout, pid: %d, path: %v", fu.cmd.Process.Pid, fu.path) return err } } @@ -106,25 +106,25 @@ func (fm *fuseMount) finish(timeout time.Duration) error { return nil } -func (fm *fuseMount) waitFinished(timeout time.Duration) error { +func (fu *fuseUnmounter) waitFinished(timeout time.Duration) error { ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() select { case <-ctx.Done(): return context.DeadlineExceeded - case <-fm.finished: + case <-fu.finished: return nil } } -func (fm *fuseMount) Unmount() error { +func (fu *fuseUnmounter) Unmount() error { m := mount.New("") - if ok, err := m.IsLikelyNotMountPoint(fm.path); !ok || mount.IsCorruptedMnt(err) { - if err := m.Unmount(fm.path); err != nil { + if ok, err := m.IsLikelyNotMountPoint(fu.path); !ok || mount.IsCorruptedMnt(err) { + if err := m.Unmount(fu.path); err != nil { return err } } - return fm.finish(time.Second * 30) + return fu.finish(time.Second * 30) } diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index c9620f8..5cbca71 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -34,7 +34,7 @@ func newSeaweedFsMounter(volumeID string, path string, collection string, readOn }, nil } -func (seaweedFs *seaweedFsMounter) Mount(target string) (Mount, error) { +func (seaweedFs *seaweedFsMounter) Mount(target string) (Unmounter, error) { glog.V(0).Infof("mounting %v %s to %s", seaweedFs.driver.filers, seaweedFs.path, target) var filers []string @@ -91,11 +91,11 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) (Mount, error) { args = append(args, fmt.Sprintf("-map.gid=%s", seaweedFs.driver.GidMap)) } - m, err := newFuseMount(target, seaweedFsCmd, args) + u, err := fuseMount(target, seaweedFsCmd, args) if err != nil { glog.Errorf("mount %v %s to %s: %s", seaweedFs.driver.filers, seaweedFs.path, target, err) } - return m, err + return u, err } func GetLocalSocket(volumeID string) string { diff --git a/pkg/driver/volume.go b/pkg/driver/volume.go index 29a2e8c..ff303ea 100644 --- a/pkg/driver/volume.go +++ b/pkg/driver/volume.go @@ -15,8 +15,8 @@ import ( type Volume struct { VolumeId string - mounter Mounter - mount Mount + mounter Mounter + unmounter Unmounter // unix socket used to manage volume localSocket string @@ -39,8 +39,8 @@ func (vol *Volume) Stage(stagingTargetPath string) error { _ = mount.New("").Unmount(stagingTargetPath) } - if m, err := vol.mounter.Mount(stagingTargetPath); err == nil { - vol.mount = m + if u, err := vol.mounter.Mount(stagingTargetPath); err == nil { + vol.unmounter = u return nil } else { return err @@ -100,12 +100,12 @@ func (vol *Volume) Unpublish(targetPath string) error { func (vol *Volume) Unstage(stagingTargetPath string) error { glog.V(0).Infof("unmounting volume %s from %s", vol.VolumeId, stagingTargetPath) - if vol.mount == nil { + if vol.unmounter == nil { glog.Errorf("volume is not mounted: %s, path", vol.VolumeId, stagingTargetPath) return nil } - if err := vol.mount.Unmount(); err != nil { + if err := vol.unmounter.Unmount(); err != nil { return err } |
