From 2f957ce7f7ab3b481057186ea42ee0ea06eeefcb Mon Sep 17 00:00:00 2001 From: Jeromy Date: Fri, 1 Sep 2017 15:27:46 -0700 Subject: [PATCH] use waitgroup for parallel fuse mounting logic License: MIT Signed-off-by: Jeromy --- fuse/node/mount_unix.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/fuse/node/mount_unix.go b/fuse/node/mount_unix.go index e2f3b1ece..4065e424a 100644 --- a/fuse/node/mount_unix.go +++ b/fuse/node/mount_unix.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "strings" + "sync" core "github.com/ipfs/go-ipfs/core" ipns "github.com/ipfs/go-ipfs/fuse/ipns" @@ -63,28 +64,26 @@ func doMount(node *core.IpfsNode, fsdir, nsdir string) error { } // this sync stuff is so that both can be mounted simultaneously. - var fsmount mount.Mount - var nsmount mount.Mount - var err1 error - var err2 error + var fsmount, nsmount mount.Mount + var err1, err2 error - done := make(chan struct{}) + var wg sync.WaitGroup + wg.Add(1) go func() { + defer wg.Done() fsmount, err1 = rofs.Mount(node, fsdir) - done <- struct{}{} }() if node.OnlineMode() { + wg.Add(1) go func() { + defer wg.Done() nsmount, err2 = ipns.Mount(node, nsdir, fsdir) - done <- struct{}{} }() - - <-done } - <-done + wg.Wait() if err1 != nil { log.Errorf("error mounting: %s", err1)