提交 f548a404 作者: Jeromy

just flush dir in mkdir flush, not whole tree

License: MIT
Signed-off-by: 's avatarJeromy <jeromyj@gmail.com>
上级 e3769dfb
...@@ -586,24 +586,17 @@ Examples: ...@@ -586,24 +586,17 @@ Examples:
return return
} }
err = mfs.Mkdir(n.FilesRoot, dirtomake, dashp)
if err != nil {
res.SetError(err, cmds.ErrNormal)
return
}
flush, found, _ := req.Option("flush").Bool() flush, found, _ := req.Option("flush").Bool()
if !found { if !found {
flush = true flush = true
} }
if flush { err = mfs.Mkdir(n.FilesRoot, dirtomake, dashp, flush)
err := n.FilesRoot.Flush() if err != nil {
if err != nil { res.SetError(err, cmds.ErrNormal)
res.SetError(err, cmds.ErrNormal) return
return
}
} }
}, },
} }
......
...@@ -330,7 +330,7 @@ func (adder *Adder) addNode(node *dag.Node, path string) error { ...@@ -330,7 +330,7 @@ func (adder *Adder) addNode(node *dag.Node, path string) error {
dir := gopath.Dir(path) dir := gopath.Dir(path)
if dir != "." { if dir != "." {
if err := mfs.Mkdir(adder.mr, dir, true); err != nil { if err := mfs.Mkdir(adder.mr, dir, true, false); err != nil {
return err return err
} }
} }
...@@ -403,7 +403,7 @@ func (adder *Adder) addFile(file files.File) error { ...@@ -403,7 +403,7 @@ func (adder *Adder) addFile(file files.File) error {
func (adder *Adder) addDir(dir files.File) error { func (adder *Adder) addDir(dir files.File) error {
log.Infof("adding directory: %s", dir.FileName()) log.Infof("adding directory: %s", dir.FileName())
err := mfs.Mkdir(adder.mr, dir.FileName(), true) err := mfs.Mkdir(adder.mr, dir.FileName(), true, false)
if err != nil { if err != nil {
return err return err
} }
......
...@@ -278,11 +278,6 @@ func (d *Directory) Mkdir(name string) (*Directory, error) { ...@@ -278,11 +278,6 @@ func (d *Directory) Mkdir(name string) (*Directory, error) {
return nil, err return nil, err
} }
err = d.flushUp()
if err != nil {
return nil, err
}
dirobj := NewDirectory(d.ctx, name, ndir, d, d.dserv) dirobj := NewDirectory(d.ctx, name, ndir, d, d.dserv)
d.childDirs[name] = dirobj d.childDirs[name] = dirobj
return dirobj, nil return dirobj, nil
...@@ -300,12 +295,21 @@ func (d *Directory) Unlink(name string) error { ...@@ -300,12 +295,21 @@ func (d *Directory) Unlink(name string) error {
return err return err
} }
return d.flushUp() _, err = d.dserv.Add(d.node)
if err != nil {
return err
}
return d.parent.closeChild(d.name, d.node)
} }
func (d *Directory) flushUp() error { func (d *Directory) Flush() error {
nd, err := d.flushCurrentNode()
if err != nil {
return err
}
return d.parent.closeChild(d.name, d.node) return d.parent.closeChild(d.name, nd)
} }
// AddChild adds the node 'nd' under this directory giving it the name 'name' // AddChild adds the node 'nd' under this directory giving it the name 'name'
......
...@@ -100,7 +100,7 @@ func PutNode(r *Root, path string, nd *dag.Node) error { ...@@ -100,7 +100,7 @@ func PutNode(r *Root, path string, nd *dag.Node) error {
// Mkdir creates a directory at 'path' under the directory 'd', creating // Mkdir creates a directory at 'path' under the directory 'd', creating
// intermediary directories as needed if 'parents' is set to true // intermediary directories as needed if 'parents' is set to true
func Mkdir(r *Root, pth string, parents bool) error { func Mkdir(r *Root, pth string, parents bool, flush bool) error {
if pth == "" { if pth == "" {
return nil return nil
} }
...@@ -142,13 +142,20 @@ func Mkdir(r *Root, pth string, parents bool) error { ...@@ -142,13 +142,20 @@ func Mkdir(r *Root, pth string, parents bool) error {
cur = next cur = next
} }
_, err := cur.Mkdir(parts[len(parts)-1]) final, err := cur.Mkdir(parts[len(parts)-1])
if err != nil { if err != nil {
if !parents || err != os.ErrExist { if !parents || err != os.ErrExist {
return err return err
} }
} }
if flush {
err := final.Flush()
if err != nil {
return err
}
}
return nil return nil
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论