Skip to content

Commit

Permalink
Updates for weekly-2012.02.22
Browse files Browse the repository at this point in the history
  • Loading branch information
hanwen committed Feb 23, 2012
1 parent cb10e93 commit c991974
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 14 deletions.
12 changes: 11 additions & 1 deletion fuse/misc.go
Expand Up @@ -32,9 +32,19 @@ func (code Status) Ok() bool {

// Convert error back to Errno based errors.
func ToStatus(err error) Status {
if err == nil {
switch err {
case nil:
return OK
case os.ErrPermission:
return EPERM
case os.ErrExist:
return Status(syscall.EEXIST)
case os.ErrNotExist:
return ENOENT
case os.ErrInvalid:
return EINVAL
}

switch t := err.(type) {
case syscall.Errno:
return Status(t)
Expand Down
2 changes: 1 addition & 1 deletion fuse/misc_test.go
Expand Up @@ -8,7 +8,7 @@ import (
)

func TestToStatus(t *testing.T) {
errNo := ToStatus(os.EPERM)
errNo := ToStatus(os.ErrPermission)
if errNo != EPERM {
t.Errorf("Wrong conversion %v != %v", errNo, syscall.EPERM)
}
Expand Down
21 changes: 10 additions & 11 deletions fuse/mount.go
Expand Up @@ -47,11 +47,9 @@ func mount(mountPoint string, options string) (f *os.File, finalMountPoint strin

cmd := []string{fusermountBinary, mountPoint}
if options != "" {
log.Printf("o %q", options)
cmd = append(cmd, "-o")
cmd = append(cmd, options)
}

proc, err := os.StartProcess(fusermountBinary,
cmd,
&os.ProcAttr{
Expand All @@ -61,12 +59,13 @@ func mount(mountPoint string, options string) (f *os.File, finalMountPoint strin
if err != nil {
return
}
w, err := os.Wait(proc.Pid, 0)

w, err := proc.Wait()
if err != nil {
return
}
if w.ExitStatus() != 0 {
err = fmt.Errorf("fusermount exited with code %d\n", w.ExitStatus())
if !w.Success() {
err = fmt.Errorf("fusermount exited with code %v\n", w.Sys())
return
}

Expand All @@ -83,9 +82,9 @@ func privilegedUnmount(mountPoint string) error {
if err != nil {
return err
}
w, err := os.Wait(proc.Pid, 0)
if w.ExitStatus() != 0 {
return fmt.Errorf("umount exited with code %d\n", w.ExitStatus())
w, err := proc.Wait()
if !w.Success() {
return fmt.Errorf("umount exited with code %v\n", w.Sys())
}
return err
}
Expand All @@ -101,12 +100,12 @@ func unmount(mountPoint string) (err error) {
if err != nil {
return
}
w, err := os.Wait(proc.Pid, 0)
w, err := proc.Wait()
if err != nil {
return
}
if w.ExitStatus() != 0 {
return fmt.Errorf("fusermount -u exited with code %d\n", w.ExitStatus())
if !w.Success() {
return fmt.Errorf("fusermount -u exited with code %v\n", w.Sys())
}
return
}
Expand Down
2 changes: 1 addition & 1 deletion fuse/mountstate.go
Expand Up @@ -111,6 +111,7 @@ func (me *MountState) Unmount() (err error) {
delay = 2*delay + 5*time.Millisecond
time.Sleep(delay)
}
me.mountPoint = ""
return err
}

Expand Down Expand Up @@ -180,7 +181,6 @@ func (me *MountState) Loop() {
me.loop()
me.mountFile.Close()
me.mountFile = nil
me.mountPoint = ""
}

func (me *MountState) loop() {
Expand Down

0 comments on commit c991974

Please sign in to comment.