mirror of
https://github.com/rclone/rclone.git
synced 2024-12-23 23:49:15 +01:00
drive: reset root directory on Rmdir and Purge
This commit is contained in:
parent
0b51d6221a
commit
442578ca25
@ -234,10 +234,8 @@ func NewFs(name, path string) (fs.Fs, error) {
|
|||||||
return nil, fmt.Errorf("Couldn't read info about Drive: %s", err)
|
return nil, fmt.Errorf("Couldn't read info about Drive: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find the Id of the root directory and the Id of its parent
|
// Find the Id of the true root and clear everything
|
||||||
f.rootId = f.about.RootFolderId
|
f.resetRoot()
|
||||||
// Put the root directory in
|
|
||||||
f.dirCache.Put("", f.rootId)
|
|
||||||
// Find the current root
|
// Find the current root
|
||||||
err = f.findRoot(false)
|
err = f.findRoot(false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -499,7 +497,7 @@ func (f *FsDrive) _findDir(path string, create bool) (pathId string, err error)
|
|||||||
}
|
}
|
||||||
info, err := f.svc.Files.Insert(info).Do()
|
info, err := f.svc.Files.Insert(info).Do()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pathId, fmt.Errorf("Failed to make directory")
|
return pathId, fmt.Errorf("Failed to make directory: %v", err)
|
||||||
}
|
}
|
||||||
pathId = info.Id
|
pathId = info.Id
|
||||||
} else {
|
} else {
|
||||||
@ -537,6 +535,20 @@ func (f *FsDrive) findRoot(create bool) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resets the root directory to the absolute root and clears the dirCache
|
||||||
|
func (f *FsDrive) resetRoot() {
|
||||||
|
f.findRootLock.Lock()
|
||||||
|
defer f.findRootLock.Unlock()
|
||||||
|
f.foundRoot = false
|
||||||
|
f.dirCache.Flush()
|
||||||
|
|
||||||
|
// Put the true root in
|
||||||
|
f.rootId = f.about.RootFolderId
|
||||||
|
|
||||||
|
// Put the root directory in
|
||||||
|
f.dirCache.Put("", f.rootId)
|
||||||
|
}
|
||||||
|
|
||||||
// Walk the path returning a channel of FsObjects
|
// Walk the path returning a channel of FsObjects
|
||||||
func (f *FsDrive) List() fs.ObjectsChan {
|
func (f *FsDrive) List() fs.ObjectsChan {
|
||||||
out := make(fs.ObjectsChan, fs.Config.Checkers)
|
out := make(fs.ObjectsChan, fs.Config.Checkers)
|
||||||
@ -686,6 +698,7 @@ func (f *FsDrive) Rmdir() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f.resetRoot()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -708,7 +721,7 @@ func (f *FsDrive) Purge() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = f.svc.Files.Delete(f.rootId).Do()
|
err = f.svc.Files.Delete(f.rootId).Do()
|
||||||
f.dirCache.Flush()
|
f.resetRoot()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user