From 7bf30c31115e1b85967636d0bba57d4cd17b4ff8 Mon Sep 17 00:00:00 2001 From: Kevin Atkinson Date: Wed, 7 Sep 2016 02:24:56 -0400 Subject: [PATCH] Adder: Don't hold the PinLock when not pinning. License: MIT Signed-off-by: Kevin Atkinson --- core/coreunix/add.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/coreunix/add.go b/core/coreunix/add.go index 1808e5433..f0b21e715 100644 --- a/core/coreunix/add.go +++ b/core/coreunix/add.go @@ -349,9 +349,13 @@ func (adder *Adder) addNode(node *dag.Node, path string) error { // Add the given file while respecting the adder. func (adder *Adder) AddFile(file files.File) error { - adder.unlocker = adder.blockstore.PinLock() + if adder.Pin { + adder.unlocker = adder.blockstore.PinLock() + } defer func() { - adder.unlocker.Unlock() + if adder.unlocker != nil { + adder.unlocker.Unlock() + } }() return adder.addFile(file) @@ -432,7 +436,7 @@ func (adder *Adder) addDir(dir files.File) error { } func (adder *Adder) maybePauseForGC() error { - if adder.blockstore.GCRequested() { + if adder.unlocker != nil && adder.blockstore.GCRequested() { err := adder.PinRoot() if err != nil { return err