diff --git a/core/commands2/add.go b/core/commands2/add.go
index 467f5ffef555674f25a09ead6fe2900a328fab8f..9306f81f23a43f43a790f6537d783601e066a03b 100644
--- a/core/commands2/add.go
+++ b/core/commands2/add.go
@@ -157,9 +157,17 @@ func addDir(n *core.IpfsNode, dir cmds.File, added *AddOutput) (*dag.Node, error
 		}
 	}
 
-	addDagnode(added, dir.FileName(), tree)
+	err := addDagnode(added, dir.FileName(), tree)
+	if err != nil {
+		return nil, err
+	}
+
+	err = addNode(n, tree)
+	if err != nil {
+		return nil, err
+	}
 
-	return tree, addNode(n, tree)
+	return tree, nil
 }
 
 // addDagnode adds dagnode info to an output object