@cryptotaxi247 / kubo / commits / 2f957ce7f

use waitgroup for parallel fuse mounting logic

License: MIT Signed-off-by: Jeromy <jeromyj@gmail.com>

Jeromy committed Sep 1, 2017 at 15:27 UTC 2f957ce7f7ab3b481057186ea42ee0ea06eeefcb
1 file changed +9 -10
fuse/node/mount_unix.go
+9 -10
@@ -7,6 +7,7 @@ import (
7 "errors"
8 "fmt"
9 "strings"
10 + "sync"
11
12 core "github.com/ipfs/go-ipfs/core"
13 ipns "github.com/ipfs/go-ipfs/fuse/ipns"
@@ -63,28 +64,26 @@ func doMount(node *core.IpfsNode, fsdir, nsdir string) error {
64 }
65
66 // this sync stuff is so that both can be mounted simultaneously.
66 - var fsmount mount.Mount
67 - var nsmount mount.Mount
68 - var err1 error
69 - var err2 error
67 + var fsmount, nsmount mount.Mount
68 + var err1, err2 error
69
71 - done := make(chan struct{})
70 + var wg sync.WaitGroup
71
72 + wg.Add(1)
73 go func() {
74 + defer wg.Done()
75 fsmount, err1 = rofs.Mount(node, fsdir)
75 - done <- struct{}{}
76 }()
77
78 if node.OnlineMode() {
79 + wg.Add(1)
80 go func() {
81 + defer wg.Done()
82 nsmount, err2 = ipns.Mount(node, nsdir, fsdir)
81 - done <- struct{}{}
83 }()
83 -
84 - <-done
84 }
85
87 - <-done
86 + wg.Wait()
87
88 if err1 != nil {
89 log.Errorf("error mounting: %s", err1)