@cryptotaxi247 / kubo / commits / f548a404a

just flush dir in mkdir flush, not whole tree

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

Jeromy committed Dec 18, 2015 at 22:12 UTC f548a404ae1f1f65762f3ea3a3cd9181c0e149df
4 files changed +28 -24
core/commands/files/files.go
+5 -12
@@ -586,24 +586,17 @@ Examples:
586 return
587 }
588
589 - err = mfs.Mkdir(n.FilesRoot, dirtomake, dashp)
590 - if err != nil {
591 - res.SetError(err, cmds.ErrNormal)
592 - return
593 - }
594 -
589 flush, found, _ := req.Option("flush").Bool()
590 if !found {
591 flush = true
592 }
593
600 - if flush {
601 - err := n.FilesRoot.Flush()
602 - if err != nil {
603 - res.SetError(err, cmds.ErrNormal)
604 - return
605 - }
594 + err = mfs.Mkdir(n.FilesRoot, dirtomake, dashp, flush)
595 + if err != nil {
596 + res.SetError(err, cmds.ErrNormal)
597 + return
598 }
599 +
600 },
601 }
602
core/coreunix/add.go
+2 -2
@@ -330,7 +330,7 @@ func (adder *Adder) addNode(node *dag.Node, path string) error {
330
331 dir := gopath.Dir(path)
332 if dir != "." {
333 - if err := mfs.Mkdir(adder.mr, dir, true); err != nil {
333 + if err := mfs.Mkdir(adder.mr, dir, true, false); err != nil {
334 return err
335 }
336 }
@@ -403,7 +403,7 @@ func (adder *Adder) addFile(file files.File) error {
403 func (adder *Adder) addDir(dir files.File) error {
404 log.Infof("adding directory: %s", dir.FileName())
405
406 - err := mfs.Mkdir(adder.mr, dir.FileName(), true)
406 + err := mfs.Mkdir(adder.mr, dir.FileName(), true, false)
407 if err != nil {
408 return err
409 }
mfs/dir.go
+12 -8
@@ -278,11 +278,6 @@ func (d *Directory) Mkdir(name string) (*Directory, error) {
278 return nil, err
279 }
280
281 - err = d.flushUp()
282 - if err != nil {
283 - return nil, err
284 - }
285 -
281 dirobj := NewDirectory(d.ctx, name, ndir, d, d.dserv)
282 d.childDirs[name] = dirobj
283 return dirobj, nil
@@ -300,12 +295,21 @@ func (d *Directory) Unlink(name string) error {
295 return err
296 }
297
303 - return d.flushUp()
298 + _, err = d.dserv.Add(d.node)
299 + if err != nil {
300 + return err
301 + }
302 +
303 + return d.parent.closeChild(d.name, d.node)
304 }
305
306 -func (d *Directory) flushUp() error {
306 +func (d *Directory) Flush() error {
307 + nd, err := d.flushCurrentNode()
308 + if err != nil {
309 + return err
310 + }
311
308 - return d.parent.closeChild(d.name, d.node)
312 + return d.parent.closeChild(d.name, nd)
313 }
314
315 // AddChild adds the node 'nd' under this directory giving it the name 'name'
mfs/ops.go
+9 -2
@@ -100,7 +100,7 @@ func PutNode(r *Root, path string, nd *dag.Node) error {
100
101 // Mkdir creates a directory at 'path' under the directory 'd', creating
102 // intermediary directories as needed if 'parents' is set to true
103 -func Mkdir(r *Root, pth string, parents bool) error {
103 +func Mkdir(r *Root, pth string, parents bool, flush bool) error {
104 if pth == "" {
105 return nil
106 }
@@ -142,13 +142,20 @@ func Mkdir(r *Root, pth string, parents bool) error {
142 cur = next
143 }
144
145 - _, err := cur.Mkdir(parts[len(parts)-1])
145 + final, err := cur.Mkdir(parts[len(parts)-1])
146 if err != nil {
147 if !parents || err != os.ErrExist {
148 return err
149 }
150 }
151
152 + if flush {
153 + err := final.Flush()
154 + if err != nil {
155 + return err
156 + }
157 + }
158 +
159 return nil
160 }
161