mirror of
https://github.com/rclone/rclone
synced 2024-11-11 09:30:44 +01:00
mountlib: fix race condition in cache clear
This commit is contained in:
parent
e172f00e0e
commit
2cae017738
@ -96,6 +96,8 @@ func (d *Dir) ForgetPath(relativePath string) {
|
|||||||
// children first. It will not apply the function to parent
|
// children first. It will not apply the function to parent
|
||||||
// nodes, regardless of the given path.
|
// nodes, regardless of the given path.
|
||||||
func (d *Dir) walk(absPath string, fun func(*Dir)) {
|
func (d *Dir) walk(absPath string, fun func(*Dir)) {
|
||||||
|
d.mu.Lock()
|
||||||
|
defer d.mu.Unlock()
|
||||||
if d.items != nil {
|
if d.items != nil {
|
||||||
for _, entry := range d.items {
|
for _, entry := range d.items {
|
||||||
if dir, ok := entry.Node.(*Dir); ok {
|
if dir, ok := entry.Node.(*Dir); ok {
|
||||||
@ -105,8 +107,6 @@ func (d *Dir) walk(absPath string, fun func(*Dir)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if d.path == absPath || absPath == "" || strings.HasPrefix(d.path, absPath+"/") {
|
if d.path == absPath || absPath == "" || strings.HasPrefix(d.path, absPath+"/") {
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
fun(d)
|
fun(d)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user