Adder: Don't hold the PinLock when not pinning.
License: MIT Signed-off-by: Kevin Atkinson <k@kevina.org>
Kevin Atkinson committed
Sep 7, 2016 at 02:24 UTC
7bf30c31115e1b85967636d0bba57d4cd17b4ff8
1 file changed
+7
-3
core/coreunix/add.go
+7
-3
@@ -349,9 +349,13 @@ func (adder *Adder) addNode(node *dag.Node, path string) error {
349
350
// Add the given file while respecting the adder.
351
func (adder *Adder) AddFile(file files.File) error {
352
- adder.unlocker = adder.blockstore.PinLock()
352
+ if adder.Pin {
353
+ adder.unlocker = adder.blockstore.PinLock()
354
+ }
355
defer func() {
354
- adder.unlocker.Unlock()
356
+ if adder.unlocker != nil {
357
+ adder.unlocker.Unlock()
358
+ }
359
}()
360
361
return adder.addFile(file)
@@ -432,7 +436,7 @@ func (adder *Adder) addDir(dir files.File) error {
436
}
437
438
func (adder *Adder) maybePauseForGC() error {
435
- if adder.blockstore.GCRequested() {
439
+ if adder.unlocker != nil && adder.blockstore.GCRequested() {
440
err := adder.PinRoot()
441
if err != nil {
442
return err